summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3')
-rw-r--r--SQLiteStudio3/SQLiteStudio3.pro8
-rw-r--r--SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp10
-rw-r--r--SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp35
-rw-r--r--SQLiteStudio3/Tests/Tests.pro69
-rw-r--r--SQLiteStudio3/Tests/UtilsTest/UtilsTest.pro21
-rw-r--r--SQLiteStudio3/Tests/UtilsTest/tst_utilssqltest.cpp75
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt74
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/Info.plist22
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/TODO.txt5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/committable.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/committable.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/table.cpp30
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/table.h18
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils.cpp21
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils.h13
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp147
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp52
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro938
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.qrc (renamed from SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc)4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvformat.cpp23
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvformat.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp60
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.cpp16
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.h19
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp126
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h67
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp31
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcellsize.cpp8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp38
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/dbversionconverter.cpp3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/exportworker.cpp12
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/importworker.cpp24
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/log.cpp12
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/log.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp20
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp1549
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y138
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginsqlite3.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.cpp33
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.h16
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/plugins/uiconfiguredplugin.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/querygenerator.cpp7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/schemaresolver.cpp76
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/schemaresolver.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp72
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/selectresolver.h20
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/config.cpp11
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/config.h7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp71
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp107
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/importmanager.cpp7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/importmanager.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts101
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts101
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qmbin41104 -> 41388 bytes
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts407
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts101
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qmbin42248 -> 43087 bytes
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts101
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qmbin23 -> 2939 bytes
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts129
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qmbin41441 -> 42098 bytes
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts107
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts101
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts101
-rw-r--r--SQLiteStudio3/create_linux_portable.sh156
-rwxr-xr-xSQLiteStudio3/create_macosx_bundle.sh18
-rw-r--r--SQLiteStudio3/create_win32_portable.bat120
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp87
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.h12
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp133
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h7
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp135
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h40
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp34
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp24
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dataview.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dataview.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp64
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui90
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp93
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui21
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/quitconfirmdialog.ui2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.cpp24
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.h8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.ui56
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/formview.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/formview.h8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/iconmanager.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/icons.qrc2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/search.pngbin0 -> 700 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/search_and_replace.pngbin0 -> 825 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp10
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/searchtextlocator.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp25
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp5
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qmbin135940 -> 131563 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts928
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts890
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qmbin142714 -> 136435 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts2736
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts890
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qmbin139196 -> 163698 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts942
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts890
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qmbin147413 -> 155959 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts1088
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qmbin101600 -> 96699 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts946
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qmbin53694 -> 52503 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts908
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/uiconfig.h6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/uidebug.cpp5
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp18
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp57
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h7
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp47
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h7
-rwxr-xr-xSQLiteStudio3/lang.tcl78
-rw-r--r--SQLiteStudio3/sqlitestudio/main.cpp5
-rw-r--r--SQLiteStudio3/sqlitestudio/sqlitestudio.pro6
-rw-r--r--SQLiteStudio3/sqlitestudio/sqlitestudio.qrc4
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts20
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts20
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.qmbin1824 -> 1824 bytes
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts25
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts20
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qmbin2259 -> 2450 bytes
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts10
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts20
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qmbin2380 -> 3002 bytes
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts22
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts20
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts20
-rw-r--r--SQLiteStudio3/sqlitestudiocli/cli.cpp2
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.cpp19
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.h2
-rw-r--r--SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro6
-rw-r--r--SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc8
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.qmbin40873 -> 41642 bytes
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts168
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qmbin39355 -> 40792 bytes
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts2
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts10
195 files changed, 10173 insertions, 7498 deletions
diff --git a/SQLiteStudio3/SQLiteStudio3.pro b/SQLiteStudio3/SQLiteStudio3.pro
index a535b81..3d19c5c 100644
--- a/SQLiteStudio3/SQLiteStudio3.pro
+++ b/SQLiteStudio3/SQLiteStudio3.pro
@@ -33,14 +33,6 @@ win32: {
SUBDIRS += update_app
}
-linux: {
- portable.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE
- tgz.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE tgz
- pkg.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist
- pkg_plugins.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_plugins
- pkg_full.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_full
- QMAKE_EXTRA_TARGETS += portable tgz pkg pkg_plugins pkg_full
-}
macx: {
bundle.commands = sh $$PWD/create_macosx_bundle.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE
diff --git a/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp b/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
index 0dc58b0..7355616 100644
--- a/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
+++ b/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
@@ -21,6 +21,7 @@ class ParserTest : public QObject
private Q_SLOTS:
void test();
+ void testScientificNumber();
void testUniqConflict();
void testGetTableTokens();
void testGetTableTokens2();
@@ -72,6 +73,15 @@ void ParserTest::test()
TokenList tokens = query->getContextTableTokens();
}
+void ParserTest::testScientificNumber()
+{
+ QString sql = "SELECT 1e100;";
+ TokenList tokens = Lexer::tokenize(sql, Dialect::Sqlite3);
+
+ QVERIFY(tokens.size() == 4);
+ QVERIFY(tokens[2]->type == Token::Type::FLOAT);
+}
+
void ParserTest::testGetTableTokens()
{
QString sql = "select someTable.* FROM someTable;";
diff --git a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
index 969ebad..2d6762e 100644
--- a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
+++ b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
@@ -29,6 +29,7 @@ class SelectResolverTest : public QObject
void testWithCommonTableExpression();
void testStarWithJoinAndError();
void test1();
+ void testSubselectWithAlias();
};
SelectResolverTest::SelectResolverTest()
@@ -42,28 +43,28 @@ void SelectResolverTest::testTableHash()
SelectResolver::Table t1;
t1.database = "d1";
t1.table = "t1";
- t1.alias = "a1";
+ t1.tableAlias = "a1";
tables << t1;
// different alias and database
SelectResolver::Table t2;
t2.database = "d2";
t2.table = "t1";
- t2.alias = QString::null;
+ t2.tableAlias = QString::null;
tables << t2;
// different database
SelectResolver::Table t3;
t3.database = "d2";
t3.table = "t1";
- t3.alias = "a1";
+ t3.tableAlias = "a1";
tables << t3;
// same as t3
SelectResolver::Table t4;
t4.database = "d2";
t4.table = "t1";
- t4.alias = "a1";
+ t4.tableAlias = "a1";
tables << t4;
// all null
@@ -78,21 +79,21 @@ void SelectResolverTest::testTableHash()
SelectResolver::Table t7;
t7.database = "x";
t7.table = "t1";
- t7.alias = "a1";
+ t7.tableAlias = "a1";
tables << t7;
// similar to t1, but different table
SelectResolver::Table t8;
t8.database = "d1";
t8.table = "x";
- t8.alias = "a1";
+ t8.tableAlias = "a1";
tables << t8;
// similar to t1, but different alias
SelectResolver::Table t9;
t9.database = "d1";
t9.table = "t1";
- t9.alias = "x";
+ t9.tableAlias = "x";
tables << t9;
QVERIFY(tables.size() == 7);
@@ -222,6 +223,26 @@ void SelectResolverTest::test1()
QVERIFY(coreColumns[1].column == "col2");
}
+void SelectResolverTest::testSubselectWithAlias()
+{
+ QString sql = "SELECT * FROM (SELECT m.col1, m.col2, secm.col3 FROM test AS m LEFT OUTER JOIN test AS secm ON secm.col1 = m.col2) alias3;";
+ SelectResolver resolver(db, sql);
+ Parser parser(db->getDialect());
+ QVERIFY(parser.parse(sql));
+
+ QList<QList<SelectResolver::Column> > columns = resolver.resolve(parser.getQueries().first().dynamicCast<SqliteSelect>().data());
+ QList<SelectResolver::Column> coreColumns = columns.first();
+ QVERIFY(coreColumns[0].tableAlias == "alias3");
+ QVERIFY(coreColumns[1].tableAlias == "alias3");
+ QVERIFY(coreColumns[2].tableAlias == "alias3");
+ QVERIFY(coreColumns[0].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[1].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[2].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[0].oldTableAliases.first() == "m");
+ QVERIFY(coreColumns[1].oldTableAliases.first() == "m");
+ QVERIFY(coreColumns[2].oldTableAliases.first() == "secm");
+}
+
void SelectResolverTest::initTestCase()
{
initKeywords();
diff --git a/SQLiteStudio3/Tests/Tests.pro b/SQLiteStudio3/Tests/Tests.pro
index 7995bf1..2690494 100644
--- a/SQLiteStudio3/Tests/Tests.pro
+++ b/SQLiteStudio3/Tests/Tests.pro
@@ -1,34 +1,35 @@
-TEMPLATE = subdirs
-
-test_utils.subdir = TestUtils
-
-completion_helper.subdir = CompletionHelperTest
-completion_helper.depends = test_utils
-
-select_resolver.subdir = SelectResolverTest
-select_resolver.depends = test_utils
-
-parser.subdir = ParserTest
-parser.depends = test_utils
-
-table_modifier.subdir = TableModifierTest
-table_modifier.depends = test_utils
-
-hash_tables.subdir = HashTablesTest
-hash_tables.depends = test_utils
-
-db_ver_conv.subdir = DbVersionConverterTest
-db_ver_conv.depends = test_utils
-
-dsv.subdir = DsvFormatsTest
-dsv.depends = test_utils
-
-SUBDIRS += \
- test_utils \
- completion_helper \
- select_resolver \
- parser \
- table_modifier \
- hash_tables \
- db_ver_conv \
- dsv
+TEMPLATE = subdirs
+
+test_utils.subdir = TestUtils
+
+completion_helper.subdir = CompletionHelperTest
+completion_helper.depends = test_utils
+
+select_resolver.subdir = SelectResolverTest
+select_resolver.depends = test_utils
+
+parser.subdir = ParserTest
+parser.depends = test_utils
+
+table_modifier.subdir = TableModifierTest
+table_modifier.depends = test_utils
+
+hash_tables.subdir = HashTablesTest
+hash_tables.depends = test_utils
+
+db_ver_conv.subdir = DbVersionConverterTest
+db_ver_conv.depends = test_utils
+
+dsv.subdir = DsvFormatsTest
+dsv.depends = test_utils
+
+SUBDIRS += \
+ test_utils \
+ completion_helper \
+ select_resolver \
+ parser \
+ table_modifier \
+ hash_tables \
+ db_ver_conv \
+ dsv \
+ UtilsTest
diff --git a/SQLiteStudio3/Tests/UtilsTest/UtilsTest.pro b/SQLiteStudio3/Tests/UtilsTest/UtilsTest.pro
new file mode 100644
index 0000000..394c7b0
--- /dev/null
+++ b/SQLiteStudio3/Tests/UtilsTest/UtilsTest.pro
@@ -0,0 +1,21 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2016-10-03T10:48:04
+#
+#-------------------------------------------------
+
+include($$PWD/../TestUtils/test_common.pri)
+
+QT += testlib
+
+QT -= gui
+
+TARGET = tst_utilssqltest
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+
+SOURCES += tst_utilssqltest.cpp
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/SQLiteStudio3/Tests/UtilsTest/tst_utilssqltest.cpp b/SQLiteStudio3/Tests/UtilsTest/tst_utilssqltest.cpp
new file mode 100644
index 0000000..97c9234
--- /dev/null
+++ b/SQLiteStudio3/Tests/UtilsTest/tst_utilssqltest.cpp
@@ -0,0 +1,75 @@
+#include <QString>
+#include <QtTest>
+#include "common/utils_sql.h"
+
+class UtilsSqlTest : public QObject
+{
+ Q_OBJECT
+
+public:
+ UtilsSqlTest();
+
+private Q_SLOTS:
+ void testCaseDefault();
+ void testRemoveEmpties();
+ void testRemoveComments();
+ void testRemoveCommentsAndEmpties();
+};
+
+UtilsSqlTest::UtilsSqlTest()
+{
+}
+
+void UtilsSqlTest::testCaseDefault()
+{
+ QString sql = "select 'dfgh ;sdg '' dfga' from aa; insert into x values ('sdg', ';drghd;;;''', 4); select 1, ''; select 2;";
+ QStringList sp = quickSplitQueries(sql);
+
+ QString failure = "Failure, got: \"%1\"";
+
+ QVERIFY2(sp.size() == 4, failure.arg(sp.size()).toLatin1().data());
+ QVERIFY2(sp[0] == "select 'dfgh ;sdg '' dfga' from aa;", failure.arg(sp[0]).toLatin1().data());
+ QVERIFY2(sp[1] == " insert into x values ('sdg', ';drghd;;;''', 4);", failure.arg(sp[1]).toLatin1().data());
+ QVERIFY2(sp[2] == " select 1, '';", failure.arg(sp[2]).toLatin1().data());
+ QVERIFY2(sp[3] == " select 2;", failure.arg(sp[3]).toLatin1().data());
+}
+
+void UtilsSqlTest::testRemoveEmpties()
+{
+ QString sql = "select 'dfgh ;sdg '' dfga' from aa; ; select 1, '';";
+ QStringList sp = quickSplitQueries(sql, false);
+
+ QString failure = "Failure, got: \"%1\"";
+
+ QVERIFY2(sp.size() == 2, failure.arg(sp.size()).toLatin1().data());
+ QVERIFY2(sp[0] == "select 'dfgh ;sdg '' dfga' from aa;", failure.arg(sp[0]).toLatin1().data());
+ QVERIFY2(sp[1] == " select 1, '';", failure.arg(sp[1]).toLatin1().data());
+}
+
+void UtilsSqlTest::testRemoveComments()
+{
+ QString sql = "select 'dfgh ;sdg '' dfga' from aa; select 1/*, ''*/;--select 1\nselect 2;";
+ QStringList sp = quickSplitQueries(sql, true, true);
+
+ QString failure = "Failure, got: \"%1\"";
+
+ QVERIFY2(sp.size() == 3, failure.arg(sp.size()).toLatin1().data());
+ QVERIFY2(sp[0] == "select 'dfgh ;sdg '' dfga' from aa;", failure.arg(sp[0]).toLatin1().data());
+ QVERIFY2(sp[1] == " select 1;", failure.arg(sp[1]).toLatin1().data());
+ QVERIFY2(sp[2] == "select 2;", failure.arg(sp[2]).toLatin1().data());
+}
+
+void UtilsSqlTest::testRemoveCommentsAndEmpties()
+{
+ QString sql = "select 'dfgh ;sdg /*''*/ dfga' from aa; /*select 1, ''*/;--select 1\n--select 2;";
+ QStringList sp = quickSplitQueries(sql, false, true);
+
+ QString failure = "Failure, got: \"%1\"";
+
+ QVERIFY2(sp.size() == 1, failure.arg(sp.size()).toLatin1().data());
+ QVERIFY2(sp[0] == "select 'dfgh ;sdg /*''*/ dfga' from aa;", failure.arg(sp[0]).toLatin1().data());
+}
+
+QTEST_APPLESS_MAIN(UtilsSqlTest)
+
+#include "tst_utilssqltest.moc"
diff --git a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
index a477b8c..c0c42cd 100644
--- a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
@@ -1,3 +1,57 @@
+[3.1.1]
+ * [ADDED]: WxSQLite3 plugin (with encryption support).
+ * [ADDED]: System.Data.SQLite plugin (ADO.NET, includes encryption support).
+ * [ADDED]: Support for "Row Value" introduced in SQLite 3.15.0.
+ * [ADDED]: New option in configuration dialog to decide whether you want to keep NULL values when entering empty strings in cells (new, more intuitive behavior), or overwrite NULLs with empty string values (as it used to be so far).
+ * [ADDED]: Editor window has now "Find" and "Replace" toolbar buttons for those functions (which were already there, available under shortcuts).
+ * [ADDED]: New built-in functions: import(), import_formats(), import_options() and charset(). All described on SQLiteStudio's wiki (at User Manual page).
+ * [ADDED]: #3106 ScriptingTcl has now "tcl_init" command to invoke full interpreter initialization, which creates [clock] commands and some others. It's not invoked automatically to avoid performane issues.
+ * [ADDED]: #3136 Added "--master-config" command line option to have a settings file (regular SQLiteStudio config file) that all running SQLiteStudio instances import settings from. More details in manual on wiki page.
+ * [ADDED]: #3127 Added 'select all' and 'deselect all' buttons in tigger's UPDATE OF columns dialog.
+ * [CHANGE]: #3135 Re-enabled possibility to close database list panel (and reopen it from the View menu entry).
+ * [CHANGE]: #2901 Automatically generated database name includes full file name, except for the file extension only (unlike before, when it took only a file name up to the first dot).
+ * [CHANGE]: #3140 The "generate name automatically" checkbox has been removed. Now the name is generated automatically by default, unless user starts to edit the name manually.
+ * [BUGFIX]: #3118 #3124 #2943 Fixed double precision numbers formatting.
+ * [BUGFIX]: DbAndroid plugin: Fixed 'adb' automatic detection under Linux.
+ * [BUGFIX]: #3126 #3092 Fixed problem with database versions in Android plugin.
+ * [BUGFIX]: #3155 Fixed crash when confiriming custom FK value with Enter key.
+ * [BUGFIX]: #3094 #3095 Fixed default FK value preselection when tabbing through cells.
+ * [BUGFIX]: #3154 Fixed crash when mass replacing token to another token containing initial token.
+ * [BUGFIX]: Fixed query generation for "UPDATE" and "DELETE" when invoking it from Database List context menu for the table.
+ * [BUGFIX]: Fixed Ctrl+click (Cmd+click on MacOSX) handling of object names that require name wrapping (such as names with spaces in it).
+ * [BUGFIX]: #3133 Fixed resolving tables with unusual (like cyrillic) characters in their names.
+ * [BUGFIX]: #3096 Restored data editing by Return key hit, that got broken in 3.1.0 for MacOSX.
+ * [BUGFIX]: #3122 Several tweaks to Android shell mode connection.
+ * [BUGFIX]: #3093 Fixed memory leak in Android plugin.
+ * [BUGFIX]: #3132 Fixed column resolving in a View that uses same alias for two different columns.
+ * [BUGFIX]: Fixed importing Windows and Macintosh end-line format CSV files (handling \r\n and \r properly).
+ * [BUGFIX]: #3134 Fixed recognizing CREATE TRIGGER statements properly when CASE-WHEN-END is used inside.
+ * [BUGFIX]: #3112 Fixed Foreign Key editing when the foreign table was modified (for example renamed) and the local column was already presented in the data view.
+ * [BUGFIX]: #3113 DEFAULT value is now automatically inserted only when committing NULL for NOT NULL column. Also new option is introduced to use DEFAULT always for NULL values, regardles of NOT NULL constraint.
+ * [BUGFIX]: Fixed refreshing database list view when changing labels display settings in configuration dialog.
+ * [BUGFIX]: Fixed FormView row navigation shortcuts.
+ * [BUGFIX]: #3097 Fixed alphabetical ordering when exporting entire database.
+ * [BUGFIX]: Fixed "UPDATE OF" column list formatting (indentation) in Enterprise Formater plugin.
+ * [BUGFIX]: Fixed SqlSimpleFormatter plugin to add ";" at the end of CREATE TABLE statements while exporting database schema to SQL format.
+ * [BUGFIX]: Data view fonts now apply to other tabs in the table window and view window.
+ * [BUGFIX]: #3005 Fixed performance issue with lots of big values loaded into the grid. Also fixed editing those values using the inline cell editor.
+ * [BUGFIX]: #2938 Fixed query executor to idenfity properly tables in named subselects, to the ROWID is handled correctly.
+ * [BUGFIX]: #3168 Fixed data filter field in data view, so it handles the single quote character.
+ * [BUGFIX]: #2942 Erasing table data context menu option now honors multiple table selection.
+ * [BUGFIX]: #2900 Optimized execution of thousands of queries at once in SQL editor window.
+ * [BUGFIX]: #2934 Table foreign key dialog can now refer to the same table. So far only column dialog constraint for FK could do it.
+ * [BUGFIX]: #3120 Performance of SQL editor window greatly increased when working with huge sets if queries (like thousands).
+ * [BUGFIX]: #3028 Fixed formatter for "NOT EXISTS" expression.
+ * [BUGFIX]: #2990 Fixed handling scientific numbers notation.
+ * [BUGFIX]: #2987 Fixed "go to referenced row" function when using multi word object names.
+ * [BUGFIX]: #3173 Fixed numerous typos in messages and names.
+ * [BUGFIX]: #3178 Fixed pagination for query simple execution method.
+ * [BUGFIX]: #3177 Fixed ORDER BY with column numbers, instead of names.
+ * [BUGFIX]: #3125 Fixed trigger UPDATE OF columns popup dialog positioning.
+ * [BUGFIX]: #3166 Fixed crash when trying to print data.
+ * [BUGFIX]: Fixed reading long values of not-editable result columns (like expressions or functions that return long values). They used to be truncated.
+ * [BUGFIX]: Compilation fixes.
+
[3.1.0]
* [ADDED]: SQLCipher plugin is now free, open source and distributed together with other standard plugins.
* [ADDED]: #2963 Indexed expressions for CREATE INDEX statements (introduced in SQLite 3.9) are now supported and can be edited in Index Dialog.
@@ -98,7 +152,7 @@
[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.
+ * [CHANGE]: Data view has now a 'cover' with progress bar when committing more changes at once. This eliminates weird GUI freeze when committing lots of new/deleted rows.
* [CHANGE]: Populate dialog has now progress bar when working.
* [CHANGE]: Enhanced SQL formatter to format CREATE TRIGGER statements in a bit more readable way.
* [BUGFIX]: #2838 Fixed outstanding bug causing database file to be deleted if a user tried "Test connection" on the database under Windows.
@@ -181,7 +235,7 @@
* [BUGFIX]: #2703 Fixed compilation errors on GCC 4.9.
* [BUGFIX]: #2707 Fixed crash when importing CSV file with empty value for last column.
* [BUGFIX]: Valid objects in SQL editor are now highlighted and are Ctrl+clickable (the feature was there, but was broken and it didn't work).
- * [BUGFIX]: Fixed invalid 'modified' status when focusing out NumberMultiEditor in FormView, resulting in uncommited change on FormView, even there was no change.
+ * [BUGFIX]: Fixed invalid 'modified' status when focusing out NumberMultiEditor in FormView, resulting in uncommitted change on FormView, even there was no change.
* [BUGFIX]: #2698 Fixed double precision numbers displaying in the Grid View.
* [BUGFIX]: #2696 Fixed handling foreign keys when the main table was not renamed, just columns changed.
* [BUGFIX]: #2713 Fixed foreign key actions in Foreign Key dialog, so they are no longer the same for ON UPDATE and ON DELETE, even they were configured differently.
@@ -221,7 +275,7 @@
* [ADDED]: Scripting languages are now provided by plugins. With this version there is support for QtScript (built in), SQL (built in) and Tcl (as a plugin).
* [ADDED]: Support for sorting data by multiple columns by right-clicking on the data grid header.
* [ADDED]: Support for "WITHOUT ROWID" tables and "WITH" clause in queries.
- * [ADDED]: If there are any uncommited changes (in data or schema), user will be asked for confirmation before closing application or MDI window.
+ * [ADDED]: If there are any uncommitted changes (in data or schema), user will be asked for confirmation before closing application or MDI window.
* [ADDED]: Printing (for data, schema and query) support.
* [ADDED]: Much, much more, it's just hard to put every single detail in the changelog. After all, the entire application was written from the very beginning.
* [CHANGE]: Table is now edited in the table window directly, not in any special dialog.
@@ -282,7 +336,7 @@
* [BUGFIX]: Fixed http://bugs.sqlitestudio.pl/?id=1743
* [BUGFIX]: Fixed http://bugs.sqlitestudio.pl/?id=1700
* [BUGFIX]: Fixed http://bugs.sqlitestudio.pl/?id=1763
- * [BUGFIX]: When editing a cell from query results and commiting changes, then all cells representing the same database cell will be updated with new value as well.
+ * [BUGFIX]: When editing a cell from query results and committing changes, then all cells representing the same database cell will be updated with new value as well.
* [BUGFIX]: Fonts initialization optimized. SQL editor widgets should open slightly faster, especially under Windows.
* [BUGFIX]: Transparent attach/detach mechanism fixed to avoid multiple attaches of the same database.
* [BUGFIX]: Fixed column edition dialog to not hide under Windows after being open with "double click".
@@ -580,7 +634,7 @@
* [CHANGE]: Datatypes in column edition dialog are now autocompleted while typing, so it's enough to type "t" to get "TEXT" type.
* [CHANGE]: Datatype list in column edition can now be fast navigated using keys, so if you drop down the list, you can press "i" to select "INT" type fast. (http://bugs.sqlitestudio.pl/?id=190)
* [BUGFIX]: Fixed bug related to "_toCommit".
- * [BUGFIX]: Fixed bug, when user was able to edit deleted but uncommited row (even the edition was ignored).
+ * [BUGFIX]: Fixed bug, when user was able to edit deleted but uncommitted row (even the edition was ignored).
* [BUGFIX]: Fixed insertion of numeric values in data view - they're now treated as numeric if column type says so (they used to be treated as string and CHECK constraint was not satisfied very often).
* [BUGFIX]: Fixed http://bugs.sqlitestudio.pl/?id=168
* [BUGFIX]: Fixed http://bugs.sqlitestudio.pl/?id=172
@@ -660,7 +714,7 @@
[2.0.6]
* [ADDED]: Context menu (with copy/cut/paste) in text fields.
- * [CHANGE]: Removed "autoCommit". Now all changes have to be commited.
+ * [CHANGE]: Removed "autoCommit". Now all changes have to be committed.
* [CHANGE]: Database add/edit dialog modified for Mac OS X. Now it uses two dialogs to pick file - native OSX dialogs!
* [BUGFIX]: Commit/Rollback buttons activates when editing starts by typing value.
* [BUGFIX]: Fixed: http://forum.sqlitestudio.pl/viewtopic.php?f=4&t=3972
@@ -944,11 +998,11 @@
* [BUGFIX]: Result grid editing for table name with whitespace fixed.
* [BUGFIX]: Fixed control-a shortcut for some edit fields.
* [BUGFIX]: Keyboard/mouse input focus grabbing for some of modal dialogs fixed.
- * [BUGFIX]: Handling of uncommited grid editions while closing MDI window.
+ * [BUGFIX]: Handling of uncommitted grid editions while closing MDI window.
* [BUGFIX]: Handling of NOT NULL constraint used and no DEFAULT specified in table column editing dialog in case when table already contains some data filled in.
* [BUGFIX]: Small grammar fixes in tips dialog.
* [BUGFIX]: Font handling rewritten. Should not cause problems anymore, but if it does, then fixing will be now much easier.
- * [BUGFIX]: Fixed 100% CPU usage for sequence: open 2 table windows, edit data cell in one window, then focus the other one window without commiting edition before.
+ * [BUGFIX]: Fixed 100% CPU usage for sequence: open 2 table windows, edit data cell in one window, then focus the other one window without committing edition before.
* [BUGFIX]: Fixed MDI window placement, so they won't appear at exactly same position while creating anymore.
* [BUGFIX]: Added DATETIME data type support.
* [BUGFIX]: DEFAULT values handled properly. Now you can use functions and other expressions, as well as literal values.
@@ -1052,7 +1106,7 @@
* [CHANGE]: There is a known bug that is not 100%-repeatable. It occurs sometimes when switching to FormView of table data. This change has added some additional logs to debug the bug.
* [BUGFIX]: A very obvious bug included in beta5 - adding database dialog didn't disappear when database is added correctly.
* [BUGFIX]: Fixed error while switching from standard BLOB editor to hexadecimal editor.
- * [BUGFIX]: Fixed commiting new rows from FormView of table data.
+ * [BUGFIX]: Fixed committing new rows from FormView of table data.
[1.0.0-beta5]
* [ADDED]: Databases tree refresh button on toolbar and in View menu.
@@ -1122,7 +1176,7 @@
* [BUGFIX]: ColorPicker handles incorrect colors passed to it and in that case it uses white color as default.
* [BUGFIX]: ColorPicker handles HTML color editing much better then before. Now it might be impossible to break it.
* [BUGFIX]: Better detection of operating system (fixed problems with Windows Vista and Windows 2000).
- * [BUGFIX]: Fixed adding new row to table data grid when there was an error while commiting previous row.
+ * [BUGFIX]: Fixed adding new row to table data grid when there was an error while committing previous row.
* [BUGFIX]: Shortcuts Ctrl+Left, Ctrl+Right, Ctrl+Shift+Left and Ctrl+Shift+Right are back!
* [BUGFIX]: Detection of 'language changed' in configuration dialog fixed (it used to detect change even there was no change).
* [BUGFIX]: Fixed active task changing while setting MDI windows in cascade layout, then pushing maximize button on some window other than the currently active.
diff --git a/SQLiteStudio3/coreSQLiteStudio/Info.plist b/SQLiteStudio3/coreSQLiteStudio/Info.plist
new file mode 100644
index 0000000..3ce6f15
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+ <key>CFBundleIconFile</key>
+ <string>sqlitestudio.icns</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleGetInfoString</key>
+ <string>SalSoft, %YEAR%</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>%VERSION%</string>
+ <key>CFBundleExecutable</key>
+ <string>SQLiteStudio</string>
+ <key>CFBundleIdentifier</key>
+ <string>pl.com.salsoft.SQLiteStudio</string>
+</dict>
+</plist>
diff --git a/SQLiteStudio3/coreSQLiteStudio/TODO.txt b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
index 4faac9d..9e0a77d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/TODO.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
@@ -11,8 +11,6 @@ cannot reproduce:
- BLOB preview engine based on plugins
- ERD plugin
- DB compare plugin
-- Foreign Key value suggestions in GridView
-- Foreign Key previews in subframes
- executing query with bind params
- comments support in formatter
@@ -20,7 +18,7 @@ cannot reproduce:
- 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
+- committing DataView should be async
- syntax checkers as services - per language
- code assistants as services - per language
- specialized validation of expressions for DEFAULT constraint.
@@ -48,6 +46,7 @@ cannot reproduce:
- constraints tab in table window should have toolbar for adding/editing/deleting constraints
- add menu mnemonics support (underlined shortcut letters)
- per column filtering field when clicked on column header(?)
+- option to show current window's DB path in top window title
CLI:
- plugin management commands
diff --git a/SQLiteStudio3/coreSQLiteStudio/committable.cpp b/SQLiteStudio3/coreSQLiteStudio/committable.cpp
index 892437a..dd35244 100644
--- a/SQLiteStudio3/coreSQLiteStudio/committable.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/committable.cpp
@@ -27,15 +27,15 @@ bool Committable::canQuit()
return true;
}
- QList<Committable*> uncommitedInstances;
+ QList<Committable*> uncommittedInstances;
for (Committable* c : instances)
{
- if (c->isUncommited())
- uncommitedInstances << c;
+ if (c->isUncommitted())
+ uncommittedInstances << c;
}
- if (uncommitedInstances.size() == 0)
+ if (uncommittedInstances.size() == 0)
return true;
- return confirmFunc(uncommitedInstances);
+ return confirmFunc(uncommittedInstances);
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/committable.h b/SQLiteStudio3/coreSQLiteStudio/committable.h
index cf1d48b..daa0f92 100644
--- a/SQLiteStudio3/coreSQLiteStudio/committable.h
+++ b/SQLiteStudio3/coreSQLiteStudio/committable.h
@@ -13,8 +13,8 @@ class API_EXPORT Committable
Committable();
virtual ~Committable();
- virtual bool isUncommited() const = 0;
- virtual QString getQuitUncommitedConfirmMessage() const = 0;
+ virtual bool isUncommitted() const = 0;
+ virtual QString getQuitUncommittedConfirmMessage() const = 0;
static void init(ConfirmFunction confirmFunc);
static bool canQuit();
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/table.cpp b/SQLiteStudio3/coreSQLiteStudio/common/table.cpp
index a9b0f16..20a9864 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/table.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/common/table.cpp
@@ -90,3 +90,33 @@ int qHash(AliasedTable table)
{
return qHash(table.getDatabase() + "." + table.getTable() + " " + table.getTableAlias());
}
+
+DbAndTable::DbAndTable() :
+ Table()
+{
+}
+
+DbAndTable::DbAndTable(Db *db, const QString &database, const QString &table) :
+ Table(database, table), db(db)
+{
+}
+
+DbAndTable::DbAndTable(const DbAndTable &other) :
+ Table(other), db(other.db)
+{
+}
+
+int DbAndTable::operator ==(const DbAndTable &other) const
+{
+ return other.database == this->database && other.table == this->table && other.db == this->db;
+}
+
+Db *DbAndTable::getDb() const
+{
+ return db;
+}
+
+void DbAndTable::setDb(Db *value)
+{
+ db = value;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/table.h b/SQLiteStudio3/coreSQLiteStudio/common/table.h
index 5cc4570..5460148 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/table.h
+++ b/SQLiteStudio3/coreSQLiteStudio/common/table.h
@@ -4,6 +4,8 @@
#include "coreSQLiteStudio_global.h"
#include <QString>
+class Db;
+
class API_EXPORT Table
{
public:
@@ -25,6 +27,22 @@ class API_EXPORT Table
QString table;
};
+class API_EXPORT DbAndTable : public Table
+{
+public:
+ DbAndTable();
+ DbAndTable(Db* db, const QString& database, const QString& table);
+ DbAndTable(const DbAndTable& other);
+
+ int operator ==(const DbAndTable& other) const;
+
+ Db *getDb() const;
+ void setDb(Db *value);
+
+protected:
+ Db* db = nullptr;
+};
+
class API_EXPORT AliasedTable : public Table
{
public:
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp
index 6cf1892..e3d2e47 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp
@@ -694,6 +694,9 @@ QString getOsString()
case QSysInfo::WV_WINDOWS8_1:
os += " 8.1";
break;
+ case QSysInfo::WV_WINDOWS10:
+ os += " 10";
+ break;
case QSysInfo::WV_32s:
case QSysInfo::WV_95:
case QSysInfo::WV_98:
@@ -707,6 +710,7 @@ QString getOsString()
case QSysInfo::WV_CE_5:
case QSysInfo::WV_CE_6:
case QSysInfo::WV_CE_based:
+ case QSysInfo::WV_None:
break;
}
#elif defined(Q_OS_LINUX)
@@ -742,6 +746,12 @@ QString getOsString()
case QSysInfo::MV_10_9:
os += " 10.9 Mavericks";
break;
+ case QSysInfo::MV_10_10:
+ os += " 10.10 Yosemite";
+ break;
+ case QSysInfo::MV_10_11:
+ os += " 10.11 El Capitan";
+ break;
case QSysInfo::MV_9:
case QSysInfo::MV_10_0:
case QSysInfo::MV_10_1:
@@ -755,6 +765,13 @@ QString getOsString()
case QSysInfo::MV_IOS_6_1:
case QSysInfo::MV_IOS_7_0:
case QSysInfo::MV_IOS_7_1:
+ case QSysInfo::MV_IOS_8_0:
+ case QSysInfo::MV_IOS_8_1:
+ case QSysInfo::MV_IOS_8_2:
+ case QSysInfo::MV_IOS_8_3:
+ case QSysInfo::MV_IOS_8_4:
+ case QSysInfo::MV_IOS_9_0:
+ case QSysInfo::MV_None:
case QSysInfo::MV_Unknown:
break;
}
@@ -899,9 +916,9 @@ QStringList concat(const QList<QStringList>& list)
return result;
}
-QString doubleToString(double val)
+QString doubleToString(const QVariant& val)
{
- return QString::number(val, 'g', 16);
+ return val.toString();
}
void sortWithReferenceList(QList<QString>& listToSort, const QList<QString>& referenceList, Qt::CaseSensitivity cs)
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils.h b/SQLiteStudio3/coreSQLiteStudio/common/utils.h
index 934e70a..c56a4db 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils.h
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils.h
@@ -87,6 +87,17 @@ int indexOf(const QList<T>& list, std::function<bool(const T&)> predicate)
return -1;
}
+template <class T>
+T* findFirst(const QList<T*>& list, std::function<bool(T*)> predicate)
+{
+ for (T* item : list)
+ {
+ if (predicate(item))
+ return item;
+ }
+ return nullptr;
+}
+
/**
* @brief Returns only those elements from the list, which passed the filter.
* @tparam T type for which the filter will be applied for. It should match the type in the list and in the function argument.
@@ -231,7 +242,7 @@ API_EXPORT bool renameBetweenPartitions(const QString& src, const QString& dst);
API_EXPORT bool isWritableRecursively(const QString& dir);
API_EXPORT QString encryptRsa(const QString& input, const QString& modulus, const QString& exponent);
API_EXPORT QString decryptRsa(const QString& input, const QString& modulus, const QString& exponent);
-API_EXPORT QString doubleToString(double val);
+API_EXPORT QString doubleToString(const QVariant& val);
/**
* @brief Sorts string list using reference list for ordering.
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
index 5c7e7e9..ad37ff0 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
@@ -4,6 +4,7 @@
#include "parser/token.h"
#include "parser/lexer.h"
#include "parser/keywords.h"
+#include "log.h"
#include <QHash>
#include <QPair>
#include <QString>
@@ -368,11 +369,23 @@ QString removeComments(const QString& value)
return tokens.detokenize();
}
+void splitQueriesUpdateCaseWhenDepth(Token::Type type, const QString& value, int& caseWhenDepth)
+{
+ if (type != Token::KEYWORD)
+ return;
+
+ if (value == "CASE")
+ caseWhenDepth++;
+ else if (value == "END" && caseWhenDepth > 0)
+ caseWhenDepth--;
+}
+
QList<TokenList> splitQueries(const TokenList& tokenizedQuery, bool* complete)
{
QList<TokenList> queries;
TokenList currentQueryTokens;
QString value;
+ int caseWhenDepth = 0;
int createTriggerMeter = 0;
bool insideTrigger = false;
bool completeQuery = false;
@@ -384,16 +397,19 @@ QList<TokenList> splitQueries(const TokenList& tokenizedQuery, bool* complete)
if (insideTrigger)
{
- if (token->type == Token::KEYWORD && value == "END")
+ if (token->type == Token::KEYWORD && value == "END" && caseWhenDepth <= 0 && caseWhenDepth == 0)
{
insideTrigger = false;
completeQuery = true;
}
currentQueryTokens << token;
+ splitQueriesUpdateCaseWhenDepth(token->type, value, caseWhenDepth);
continue;
}
+ splitQueriesUpdateCaseWhenDepth(token->type, value, caseWhenDepth);
+
if (token->type == Token::KEYWORD)
{
if (value == "CREATE" || value == "TRIGGER" || value == "BEGIN")
@@ -407,6 +423,7 @@ QList<TokenList> splitQueries(const TokenList& tokenizedQuery, bool* complete)
else if (token->type == Token::OPERATOR && value == ";")
{
createTriggerMeter = 0;
+ caseWhenDepth = 0;
currentQueryTokens << token;
queries << currentQueryTokens;
currentQueryTokens.clear();
@@ -427,9 +444,114 @@ QList<TokenList> splitQueries(const TokenList& tokenizedQuery, bool* complete)
return queries;
}
-QStringList splitQueries(const QString& sql, Dialect dialect, bool keepEmptyQueries, bool* complete)
+QStringList quickSplitQueries(const QString& sql, bool keepEmptyQueries, bool removeComments)
+{
+ QChar c;
+ bool inString = false;
+ bool inMultiLineComment = false;
+ bool inSingleLineComment = false;
+ QStringList queries;
+ QString query;
+ QString trimmed;
+ for (int i = 0, total = sql.size(); i < total; ++i)
+ {
+ c = sql[i];
+
+ // String
+ if (inString)
+ {
+ query += c;
+ if (c == '\'')
+ {
+ inString = false;
+ }
+ continue;
+ }
+
+ // One-line comment
+ if (inSingleLineComment)
+ {
+ if (!removeComments)
+ query += c;
+
+ if (c == '\r' && (i + 1) < total && sql[i+1] == '\n')
+ {
+ if (!removeComments)
+ query += '\n';
+
+ i++;
+ inSingleLineComment = false;
+ }
+ else if (c == '\n' || c == '\r')
+ inSingleLineComment = false;
+
+ continue;
+ }
+
+ // Multi-line comment
+ if (inMultiLineComment)
+ {
+ if (!removeComments)
+ query += c;
+
+ if (c == '*' && (i + 1) < total && sql[i+1] == '/')
+ {
+ if (!removeComments)
+ query += '/';
+
+ i++;
+ inMultiLineComment = false;
+ }
+
+ continue;
+ }
+
+ // Everything rest
+ if (c == '\'')
+ {
+ query += c;
+ inString = true;
+ }
+ else if (c == '-' && (i + 1) < total && sql[i+1] == '-')
+ {
+ inSingleLineComment = true;
+ i++;
+ if (!removeComments)
+ query += "--";
+ }
+ else if (c == '/' && (i + 1) < total && sql[i+1] == '*')
+ {
+ inMultiLineComment = true;
+ i++;
+ if (!removeComments)
+ query += "/*";
+ }
+ else if (c == ';')
+ {
+ query += c;
+ if (keepEmptyQueries || (!(trimmed = query.trimmed()).isEmpty() && trimmed != ";"))
+ queries << query;
+
+ query.clear();
+ }
+ else
+ {
+ query += c;
+ }
+ }
+
+ if (!query.isNull() && (!(trimmed = query.trimmed()).isEmpty() && trimmed != ";"))
+ queries << query;
+
+ return queries;
+}
+
+QStringList splitQueries(const QString& sql, Dialect dialect, bool keepEmptyQueries, bool removeComments, bool* complete)
{
TokenList tokens = Lexer::tokenize(sql, dialect);
+ if (removeComments)
+ tokens = tokens.filterOut(Token::COMMENT);
+
QList<TokenList> tokenizedQueries = splitQueries(tokens, complete);
QString query;
@@ -437,7 +559,7 @@ QStringList splitQueries(const QString& sql, Dialect dialect, bool keepEmptyQuer
foreach (const TokenList& queryTokens, tokenizedQueries)
{
query = queryTokens.detokenize();
- if (keepEmptyQueries || !query.trimmed().isEmpty())
+ if (keepEmptyQueries || (!query.trimmed().isEmpty() && query.trimmed() != ";"))
queries << query;
}
@@ -452,7 +574,7 @@ QString getQueryWithPosition(const QStringList& queries, int position, int* star
if (startPos)
*startPos = 0;
- foreach (const QString& query, queries)
+ for (const QString& query : queries)
{
length = query.length();
if (position >= currentPos && position < currentPos+length)
@@ -479,9 +601,9 @@ QString getQueryWithPosition(const QStringList& queries, int position, int* star
return QString::null;
}
-QString getQueryWithPosition(const QString& queries, int position, Dialect dialect, int* startPos)
+QString getQueryWithPosition(const QString& queries, int position, int* startPos)
{
- QStringList queryList = splitQueries(queries, dialect);
+ QStringList queryList = quickSplitQueries(queries);
return getQueryWithPosition(queryList, position, startPos);
}
@@ -665,7 +787,7 @@ QStringList valueListToSqlList(const QVariantList& values, Dialect dialect)
argList << value.toString();
break;
case QVariant::Double:
- argList << doubleToString(value.toDouble());
+ argList << doubleToString(value);
break;
case QVariant::Bool:
argList << QString::number(value.toInt());
@@ -694,3 +816,14 @@ QStringList wrapStrings(const QStringList& strList)
return list;
}
+
+QString trimQueryEnd(const QString &query)
+{
+ QString q = query.trimmed();
+ while (q.endsWith(";"))
+ {
+ q.chop(1);
+ q = q.trimmed();
+ }
+ return q;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
index ceccea0..1da3108 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
@@ -67,9 +67,10 @@ API_EXPORT bool isSystemTable(const QString& name);
API_EXPORT bool isSystemIndex(const QString& name, Dialect dialect);
API_EXPORT QString removeComments(const QString& value);
API_EXPORT QList<TokenList> splitQueries(const TokenList& tokenizedQueries, bool* complete = nullptr);
-API_EXPORT QStringList splitQueries(const QString& sql, Dialect dialect, bool keepEmptyQueries = true, bool* complete = nullptr);
+API_EXPORT QStringList splitQueries(const QString& sql, Dialect dialect, bool keepEmptyQueries = true, bool removeComments = false, bool* complete = nullptr);
+API_EXPORT QStringList quickSplitQueries(const QString& sql, bool keepEmptyQueries = true, bool removeComments = false);
API_EXPORT QString getQueryWithPosition(const QStringList& queries, int position, int* startPos = nullptr);
-API_EXPORT QString getQueryWithPosition(const QString& queries, int position, Dialect dialect, int* startPos = nullptr);
+API_EXPORT QString getQueryWithPosition(const QString& queries, int position, int* startPos = nullptr);
API_EXPORT QList<QueryWithParamNames> getQueriesWithParamNames(const QString& query, Dialect dialect);
API_EXPORT QList<QueryWithParamCount> getQueriesWithParamCount(const QString& query, Dialect dialect);
API_EXPORT QueryWithParamNames getQueryWithParamNames(const QString& query, Dialect dialect);
@@ -79,6 +80,7 @@ API_EXPORT QString commentAllSqlLines(const QString& sql);
API_EXPORT QString getBindTokenName(const TokenPtr& token);
API_EXPORT QueryAccessMode getQueryAccessMode(const QString& query, Dialect dialect, bool* isSelect = nullptr);
API_EXPORT QStringList valueListToSqlList(const QList<QVariant>& values, Dialect dialect);
+API_EXPORT QString trimQueryEnd(const QString& query);
#endif // UTILS_SQL_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
index 528df73..aae4a60 100644
--- a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
@@ -1032,7 +1032,7 @@ void CompletionHelper::parseFullSql()
QString sql = fullSql;
// Selecting query at cursor position
- QString query = getQueryWithPosition(sql, cursorPosition, dialect);
+ QString query = getQueryWithPosition(sql, cursorPosition);
// Token list of the query. Also useful, not only parsed query.
queryTokens = Lexer::tokenize(query, dialect);
@@ -1051,7 +1051,7 @@ void CompletionHelper::parseFullSql()
// Second try - handling open parenthesis for expr (which could not be handled by the grammar, because of bug #2755)
parser.setLemonDebug(false); // avoid spamming with lemon debug
QString truncatedSql = sql.left(cursorPosition);
- query = getQueryWithPosition(truncatedSql, cursorPosition, dialect);
+ query = getQueryWithPosition(truncatedSql, cursorPosition);
query += ");";
if (tryToParse(&parser, query))
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp
index 1a63776..a5c661e 100644
--- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp
@@ -24,6 +24,11 @@ CfgCategory::CfgCategory(const QString &name, const QString &title) :
lastCreatedCfgMain->childs[name] = this;
}
+CfgEntry *CfgCategory::getEntryByName(const QString& name)
+{
+ return childs[name];
+}
+
QString CfgCategory::toString() const
{
return name;
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h
index 45197d6..4b4aaac 100644
--- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h
+++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h
@@ -20,6 +20,7 @@ class API_EXPORT CfgCategory : public QObject
CfgCategory(const CfgCategory& other);
CfgCategory(const QString& name, const QString& title);
+ CfgEntry* getEntryByName(const QString &name);
QString toString() const;
operator QString() const;
QHash<QString,CfgEntry*>& getEntries();
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp
index 480b4cc..fb7d199 100644
--- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp
@@ -1,6 +1,7 @@
#include "cfgmain.h"
#include "config_builder/cfgcategory.h"
#include "config_builder/cfgentry.h"
+#include "common/global.h"
CfgMain* lastCreatedCfgMain = nullptr;
QList<CfgMain*>* CfgMain::instances = nullptr;
@@ -50,6 +51,36 @@ QList<CfgMain*> CfgMain::getPersistableInstances()
return list;
}
+CfgCategory* CfgMain::getCategoryByName(const QString &name)
+{
+ for (CfgMain* cfg : getInstances())
+ {
+ if (!cfg->childs.contains(name))
+ continue;
+
+ return cfg->childs[name];
+ }
+ return nullptr;
+}
+
+CfgEntry *CfgMain::getEntryByName(const QString &categoryName, const QString &name)
+{
+ CfgCategory* cat = getCategoryByName(categoryName);
+ if (!cat)
+ return nullptr;
+
+ return cat->getEntryByName(name);
+}
+
+CfgEntry *CfgMain::getEntryByPath(const QString &path)
+{
+ QStringList sp = path.split(".");
+ if (sp.size() != 2)
+ return nullptr;
+
+ return getEntryByName(sp[0], sp[1]);
+}
+
QHash<QString, CfgCategory *> &CfgMain::getCategories()
{
return childs;
@@ -101,6 +132,27 @@ void CfgMain::rollback()
restore();
}
+QStringList CfgMain::getPaths() const
+{
+ static_qstring(tpl, "%1.%2");
+ QStringList paths;
+ for (CfgCategory* cat : childs.values())
+ {
+ for (const QString& entry : cat->getEntries().keys())
+ paths << tpl.arg(cat->toString(), entry);
+ }
+ return paths;
+}
+
+QList<CfgEntry *> CfgMain::getEntries() const
+{
+ QList<CfgEntry*> entries;
+ for (CfgCategory* cat : childs.values())
+ entries += cat->getEntries().values();
+
+ return entries;
+}
+
bool CfgMain::isPersistable() const
{
return persistable;
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h
index d42f03b..ea11c6d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h
+++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h
@@ -8,6 +8,7 @@
#include <QString>
class CfgCategory;
+class CfgEntry;
class API_EXPORT CfgMain
{
@@ -20,6 +21,9 @@ class API_EXPORT CfgMain
static void staticInit();
static QList<CfgMain*> getInstances();
static QList<CfgMain*> getPersistableInstances();
+ static CfgCategory* getCategoryByName(const QString& name);
+ static CfgEntry* getEntryByName(const QString& categoryName, const QString& name);
+ static CfgEntry* getEntryByPath(const QString& path);
QHash<QString,CfgCategory*>& getCategories();
void translateTitle();
@@ -30,6 +34,8 @@ class API_EXPORT CfgMain
void begin();
void commit();
void rollback();
+ QStringList getPaths() const;
+ QList<CfgEntry*> getEntries() const;
bool isPersistable() const;
QString getName() const;
diff --git a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
index 59da902..8c3c21a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
+++ b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
@@ -1,465 +1,473 @@
-#-------------------------------------------------
-#
-# Project created by QtCreator 2013-02-28T23:00:28
-#
-#-------------------------------------------------
-
-include($$PWD/../dirs.pri)
-include($$PWD/../utils.pri)
-
-OBJECTS_DIR = $$OBJECTS_DIR/coreSQLiteStudio
-MOC_DIR = $$MOC_DIR/coreSQLiteStudio
-UI_DIR = $$UI_DIR/coreSQLiteStudio
-
-QT -= gui
-QT += script network
-
-TARGET = coreSQLiteStudio
-TEMPLATE = lib
-
-win32 {
- LIBS += -lpsapi $$PWD/../../../lib/libquazip.a
- LIBS += -limagehlp
-
- THE_FILE = $$PWD/qt.conf
- THE_DEST = $${DESTDIR}
- THE_FILE ~= s,/,\\,g
- THE_DEST ~= s,/,\\,g
- QMAKE_POST_LINK += $$QMAKE_COPY $$THE_FILE $$THE_DEST $$escape_expand(\\n\\t)
-}
-
-linux: {
- DEFINES += SYS_PLUGINS_DIR=$$LIBDIR/sqlitestudio
- portable: {
- DESTDIR = $$DESTDIR/lib
- }
-}
-
-macx: {
- out_file = $$DESTDIR/lib $$TARGET .dylib
- QMAKE_POST_LINK += install_name_tool -change libsqlite3.dylib @loader_path/../Frameworks/libsqlite3.dylib $$join(out_file)
-}
-
-LIBS += -lsqlite3
-
-DEFINES += CORESQLITESTUDIO_LIBRARY
-
-portable {
- DEFINES += PORTABLE_CONFIG
-}
-
-CONFIG += c++11
-QMAKE_CXXFLAGS += -pedantic
-
-TRANSLATIONS += translations/coreSQLiteStudio_it.ts \
- translations/coreSQLiteStudio_zh_CN.ts \
- translations/coreSQLiteStudio_sk.ts \
- translations/coreSQLiteStudio_de.ts \
- translations/coreSQLiteStudio_ru.ts \
- translations/coreSQLiteStudio_pt_BR.ts \
- translations/coreSQLiteStudio_fr.ts \
- translations/coreSQLiteStudio_es.ts \
- translations/coreSQLiteStudio_pl.ts
-
-SOURCES += sqlitestudio.cpp \
- returncode.cpp \
- services/config.cpp \
- common/nulldevice.cpp \
- parser/lexer_low_lev.cpp \
- common/utils.cpp \
- parser/keywords.cpp \
- common/utils_sql.cpp \
- parser/token.cpp \
- parser/lexer.cpp \
- parser/sqlite3_parse.cpp \
- parser/parsercontext.cpp \
- parser/parser.cpp \
- parser/sqlite2_parse.cpp \
- parser/ast/sqlitestatement.cpp \
- parser/ast/sqlitequery.cpp \
- parser/ast/sqlitealtertable.cpp \
- parser/ast/sqliteanalyze.cpp \
- parser/ast/sqlitebegintrans.cpp \
- parser/ast/sqlitecommittrans.cpp \
- parser/ast/sqlitecreateindex.cpp \
- parser/ast/sqlitecreatetable.cpp \
- parser/ast/sqlitecreatetrigger.cpp \
- parser/ast/sqlitecreateview.cpp \
- parser/ast/sqlitecreatevirtualtable.cpp \
- parser/ast/sqlitedelete.cpp \
- parser/ast/sqlitedetach.cpp \
- parser/ast/sqlitedroptable.cpp \
- parser/ast/sqlitedroptrigger.cpp \
- parser/ast/sqlitedropindex.cpp \
- parser/ast/sqlitedropview.cpp \
- parser/ast/sqliteinsert.cpp \
- parser/ast/sqlitepragma.cpp \
- parser/ast/sqlitereindex.cpp \
- parser/ast/sqlitesavepoint.cpp \
- parser/ast/sqliterelease.cpp \
- parser/ast/sqliterollback.cpp \
- parser/ast/sqliteselect.cpp \
- parser/ast/sqliteupdate.cpp \
- parser/ast/sqlitevacuum.cpp \
- parser/ast/sqlitecopy.cpp \
- parser/ast/sqliteemptyquery.cpp \
- parser/parser_helper_stubs.cpp \
- parser/ast/sqliteexpr.cpp \
- parser/ast/sqliteforeignkey.cpp \
- parser/ast/sqliteindexedcolumn.cpp \
- parser/ast/sqlitecolumntype.cpp \
- parser/ast/sqliteconflictalgo.cpp \
- parser/ast/sqlitesortorder.cpp \
- parser/ast/sqliteraise.cpp \
- parser/ast/sqliteorderby.cpp \
- parser/ast/sqlitelimit.cpp \
- parser/ast/sqliteattach.cpp \
- parser/parsererror.cpp \
- selectresolver.cpp \
- schemaresolver.cpp \
- parser/ast/sqlitequerytype.cpp \
- db/db.cpp \
- services/dbmanager.cpp \
- db/sqlresultsrow.cpp \
- db/asyncqueryrunner.cpp \
- completionhelper.cpp \
- completioncomparer.cpp \
- db/queryexecutor.cpp \
- qio.cpp \
- plugins/pluginsymbolresolver.cpp \
- db/sqlerrorresults.cpp \
- db/queryexecutorsteps/queryexecutorstep.cpp \
- db/queryexecutorsteps/queryexecutorcountresults.cpp \
- db/queryexecutorsteps/queryexecutorparsequery.cpp \
- db/queryexecutorsteps/queryexecutorexecute.cpp \
- db/queryexecutorsteps/queryexecutorattaches.cpp \
- db/queryexecutorsteps/queryexecutoraddrowids.cpp \
- db/queryexecutorsteps/queryexecutorlimit.cpp \
- db/queryexecutorsteps/queryexecutorcolumns.cpp \
- db/queryexecutorsteps/queryexecutorcellsize.cpp \
- db/queryexecutorsteps/queryexecutororder.cpp \
- db/sqlerrorcodes.cpp \
- common/readwritelocker.cpp \
- db/queryexecutorsteps/queryexecutorwrapdistinctresults.cpp \
- csvformat.cpp \
- csvserializer.cpp \
- db/queryexecutorsteps/queryexecutordatasources.cpp \
- expectedtoken.cpp \
- sqlhistorymodel.cpp \
- db/queryexecutorsteps/queryexecutorexplainmode.cpp \
- services/notifymanager.cpp \
- parser/statementtokenbuilder.cpp \
- parser/ast/sqlitedeferrable.cpp \
- tablemodifier.cpp \
- db/chainexecutor.cpp \
- db/queryexecutorsteps/queryexecutorreplaceviews.cpp \
- services/codeformatter.cpp \
- viewmodifier.cpp \
- log.cpp \
- plugins/plugintype.cpp \
- plugins/genericplugin.cpp \
- common/memoryusage.cpp \
- ddlhistorymodel.cpp \
- datatype.cpp \
- common/table.cpp \
- common/column.cpp \
- dbattacher.cpp \
- services/functionmanager.cpp \
- plugins/scriptingqt.cpp \
- services/impl/configimpl.cpp \
- services/impl/dbmanagerimpl.cpp \
- db/abstractdb.cpp \
- services/impl/functionmanagerimpl.cpp \
- services/impl/pluginmanagerimpl.cpp \
- impl/dbattacherimpl.cpp \
- db/dbsqlite3.cpp \
- plugins/dbpluginsqlite3.cpp \
- parser/ast/sqlitewith.cpp \
- services/impl/collationmanagerimpl.cpp \
- services/exportmanager.cpp \
- exportworker.cpp \
- plugins/scriptingsql.cpp \
- db/queryexecutorsteps/queryexecutordetectschemaalter.cpp \
- querymodel.cpp \
- plugins/genericexportplugin.cpp \
- dbobjectorganizer.cpp \
- db/attachguard.cpp \
- db/invaliddb.cpp \
- dbversionconverter.cpp \
- diff/diff_match_patch.cpp \
- db/sqlquery.cpp \
- db/queryexecutorsteps/queryexecutorvaluesmode.cpp \
- services/importmanager.cpp \
- importworker.cpp \
- services/populatemanager.cpp \
- pluginservicebase.cpp \
- populateworker.cpp \
- plugins/populatesequence.cpp \
- plugins/populaterandom.cpp \
- plugins/populaterandomtext.cpp \
- plugins/populateconstant.cpp \
- plugins/populatedictionary.cpp \
- plugins/populatescript.cpp \
- plugins/builtinplugin.cpp \
- plugins/scriptingqtdbproxy.cpp \
- plugins/sqlformatterplugin.cpp \
- services/bugreporter.cpp \
- services/updatemanager.cpp \
- config_builder/cfgmain.cpp \
- config_builder/cfgcategory.cpp \
- config_builder/cfgentry.cpp \
- config_builder/cfglazyinitializer.cpp \
- committable.cpp \
- services/extralicensemanager.cpp \
- tsvserializer.cpp \
- rsa/BigInt.cpp \
- rsa/Key.cpp \
- rsa/KeyPair.cpp \
- rsa/PrimeGenerator.cpp \
- rsa/RSA.cpp \
- translations.cpp \
- common/signalwait.cpp \
- common/blockingsocket.cpp \
- common/threadwitheventloop.cpp \
- common/private/blockingsocketprivate.cpp \
- querygenerator.cpp \
- common/bistrhash.cpp
-
-HEADERS += sqlitestudio.h\
- coreSQLiteStudio_global.h \
- returncode.h \
- services/config.h \
- common/nulldevice.h \
- parser/lexer_low_lev.h \
- common/utils.h \
- parser/keywords.h \
- parser/token.h \
- common/utils_sql.h \
- parser/lexer.h \
- parser/sqlite3_parse.h \
- parser/parsercontext.h \
- parser/parser.h \
- parser/sqlite2_parse.h \
- parser/ast/sqlitestatement.h \
- parser/ast/sqlitequery.h \
- parser/ast/sqlitealtertable.h \
- parser/ast/sqliteanalyze.h \
- parser/ast/sqlitebegintrans.h \
- parser/ast/sqlitecommittrans.h \
- parser/ast/sqlitecreateindex.h \
- parser/ast/sqlitecreatetable.h \
- parser/ast/sqlitecreatetrigger.h \
- parser/ast/sqlitecreateview.h \
- parser/ast/sqlitecreatevirtualtable.h \
- parser/ast/sqlitedelete.h \
- parser/ast/sqlitedetach.h \
- parser/ast/sqlitedroptable.h \
- parser/ast/sqlitedroptrigger.h \
- parser/ast/sqlitedropindex.h \
- parser/ast/sqlitedropview.h \
- parser/ast/sqliteinsert.h \
- parser/ast/sqlitepragma.h \
- parser/ast/sqlitereindex.h \
- parser/ast/sqlitesavepoint.h \
- parser/ast/sqliterelease.h \
- parser/ast/sqliterollback.h \
- parser/ast/sqliteselect.h \
- parser/ast/sqliteupdate.h \
- parser/ast/sqlitevacuum.h \
- parser/ast/sqlitecopy.h \
- parser/ast/sqlitequerytype.h \
- parser/ast/sqliteemptyquery.h \
- parser/parser_helper_stubs.h \
- parser/ast/sqliteconflictalgo.h \
- parser/ast/sqliteexpr.h \
- parser/ast/sqliteforeignkey.h \
- parser/ast/sqliteindexedcolumn.h \
- parser/ast/sqlitecolumntype.h \
- parser/ast/sqlitesortorder.h \
- parser/ast/sqlitedeferrable.h \
- parser/ast/sqliteraise.h \
- parser/ast/sqliteorderby.h \
- parser/ast/sqlitelimit.h \
- parser/ast/sqliteattach.h \
- parser/parsererror.h \
- common/objectpool.h \
- selectresolver.h \
- schemaresolver.h \
- dialect.h \
- db/db.h \
- services/dbmanager.h \
- db/sqlresultsrow.h \
- db/asyncqueryrunner.h \
- completionhelper.h \
- expectedtoken.h \
- completioncomparer.h \
- plugins/dbplugin.h \
- services/pluginmanager.h \
- db/queryexecutor.h \
- qio.h \
- db/dbpluginoption.h \
- common/global.h \
- parser/ast/sqlitetablerelatedddl.h \
- plugins/pluginsymbolresolver.h \
- db/sqlerrorresults.h \
- db/sqlerrorcodes.h \
- db/queryexecutorsteps/queryexecutorstep.h \
- db/queryexecutorsteps/queryexecutorcountresults.h \
- db/queryexecutorsteps/queryexecutorparsequery.h \
- db/queryexecutorsteps/queryexecutorexecute.h \
- db/queryexecutorsteps/queryexecutorattaches.h \
- db/queryexecutorsteps/queryexecutoraddrowids.h \
- db/queryexecutorsteps/queryexecutorlimit.h \
- db/queryexecutorsteps/queryexecutorcolumns.h \
- db/queryexecutorsteps/queryexecutorcellsize.h \
- common/unused.h \
- db/queryexecutorsteps/queryexecutororder.h \
- common/readwritelocker.h \
- db/queryexecutorsteps/queryexecutorwrapdistinctresults.h \
- csvformat.h \
- csvserializer.h \
- db/queryexecutorsteps/queryexecutordatasources.h \
- sqlhistorymodel.h \
- db/queryexecutorsteps/queryexecutorexplainmode.h \
- services/notifymanager.h \
- parser/statementtokenbuilder.h \
- tablemodifier.h \
- db/chainexecutor.h \
- db/queryexecutorsteps/queryexecutorreplaceviews.h \
- plugins/sqlformatterplugin.h \
- services/codeformatter.h \
- viewmodifier.h \
- log.h \
- plugins/plugintype.h \
- plugins/plugin.h \
- plugins/genericplugin.h \
- common/memoryusage.h \
- ddlhistorymodel.h \
- datatype.h \
- plugins/generalpurposeplugin.h \
- common/table.h \
- common/column.h \
- common/bihash.h \
- common/strhash.h \
- dbattacher.h \
- common/bistrhash.h \
- services/functionmanager.h \
- common/sortedhash.h \
- plugins/scriptingplugin.h \
- plugins/scriptingqt.h \
- services/impl/configimpl.h \
- services/impl/dbmanagerimpl.h \
- db/abstractdb.h \
- services/impl/functionmanagerimpl.h \
- services/impl/pluginmanagerimpl.h \
- impl/dbattacherimpl.h \
- db/abstractdb3.h \
- db/dbsqlite3.h \
- plugins/dbpluginsqlite3.h \
- db/abstractdb2.h \
- parser/ast/sqlitewith.h \
- services/collationmanager.h \
- services/impl/collationmanagerimpl.h \
- plugins/exportplugin.h \
- config_builder.h \
- services/exportmanager.h \
- exportworker.h \
- plugins/scriptingsql.h \
- db/queryexecutorsteps/queryexecutordetectschemaalter.h \
- querymodel.h \
- plugins/genericexportplugin.h \
- dbobjectorganizer.h \
- db/attachguard.h \
- interruptable.h \
- db/invaliddb.h \
- dbversionconverter.h \
- diff/diff_match_patch.h \
- db/sqlquery.h \
- dbobjecttype.h \
- db/queryexecutorsteps/queryexecutorvaluesmode.h \
- plugins/importplugin.h \
- services/importmanager.h \
- importworker.h \
- plugins/populateplugin.h \
- services/populatemanager.h \
- pluginservicebase.h \
- populateworker.h \
- plugins/populatesequence.h \
- plugins/populaterandom.h \
- plugins/populaterandomtext.h \
- plugins/populateconstant.h \
- plugins/populatedictionary.h \
- plugins/populatescript.h \
- plugins/builtinplugin.h \
- plugins/scriptingqtdbproxy.h \
- plugins/codeformatterplugin.h \
- services/bugreporter.h \
- services/updatemanager.h \
- config_builder/cfgmain.h \
- config_builder/cfgcategory.h \
- config_builder/cfgentry.h \
- config_builder/cfglazyinitializer.h \
- plugins/confignotifiableplugin.h \
- committable.h \
- plugins/uiconfiguredplugin.h \
- services/extralicensemanager.h \
- db/stdsqlite3driver.h \
- tsvserializer.h \
- rsa/BigInt.h \
- rsa/Key.h \
- rsa/KeyPair.h \
- rsa/PrimeGenerator.h \
- rsa/RSA.h \
- translations.h \
- common/signalwait.h \
- common/blockingsocket.h \
- common/threadwitheventloop.h \
- common/private/blockingsocketprivate.h \
- common/expiringcache.h \
- parser/ast/sqliteddlwithdbcontext.h \
- parser/ast/sqliteextendedindexedcolumn.h \
- querygenerator.h \
- common/sortedset.h
-
-unix: {
- target.path = $$LIBDIR
- INSTALLS += target
-}
-
-OTHER_FILES += \
- parser/lempar.c \
- parser/sqlite3_parse.y \
- parser/sqlite2_parse.y \
- parser/run_lemon.sh \
- TODO.txt \
- licenses/fugue_icons.txt \
- licenses/qhexedit.txt \
- licenses/sqlitestudio_license.txt \
- licenses/lgpl.txt \
- licenses/diff_match.txt \
- licenses/gpl.txt \
- ChangeLog.txt \
- qt.conf
-
-FORMS += \
- plugins/populatesequence.ui \
- plugins/populaterandom.ui \
- plugins/populaterandomtext.ui \
- plugins/populateconstant.ui \
- plugins/populatedictionary.ui \
- plugins/populatescript.ui
-
-RESOURCES += \
- coresqlitestudio.qrc
-
-
-
-
-
-
-
-
-
-
-
-
+#-------------------------------------------------
+#
+# Project created by QtCreator 2013-02-28T23:00:28
+#
+#-------------------------------------------------
+
+include($$PWD/../dirs.pri)
+include($$PWD/../utils.pri)
+
+OBJECTS_DIR = $$OBJECTS_DIR/coreSQLiteStudio
+MOC_DIR = $$MOC_DIR/coreSQLiteStudio
+UI_DIR = $$UI_DIR/coreSQLiteStudio
+
+QT -= gui
+QT += script network
+
+TARGET = coreSQLiteStudio
+TEMPLATE = lib
+
+win32 {
+ LIBS += -lpsapi $$PWD/../../../lib/libquazip.a
+ LIBS += -limagehlp
+
+ THE_FILE = $$PWD/qt.conf
+ THE_DEST = $${DESTDIR}
+ THE_FILE ~= s,/,\\,g
+ THE_DEST ~= s,/,\\,g
+ QMAKE_POST_LINK += $$QMAKE_COPY $$THE_FILE $$THE_DEST $$escape_expand(\\n\\t)
+}
+
+linux: {
+ DEFINES += SYS_PLUGINS_DIR=$$LIBDIR/sqlitestudio
+ portable: {
+ DESTDIR = $$DESTDIR/lib
+ }
+}
+
+macx: {
+ out_file = $$DESTDIR/lib $$TARGET .dylib
+ QMAKE_POST_LINK += install_name_tool -change libsqlite3.dylib @loader_path/../Frameworks/libsqlite3.dylib $$join(out_file)
+ QMAKE_POST_LINK += ; $$QMAKE_MKDIR $$DESTDIR/SQLiteStudio.app
+ QMAKE_POST_LINK += ; $$QMAKE_MKDIR $$DESTDIR/SQLiteStudio.app/Contents
+ QMAKE_POST_LINK += ; $$QMAKE_COPY $$PWD/Info.plist $$DESTDIR/SQLiteStudio.app/Contents
+}
+
+LIBS += -lsqlite3
+
+DEFINES += CORESQLITESTUDIO_LIBRARY
+
+portable {
+ DEFINES += PORTABLE_CONFIG
+}
+
+CONFIG += c++11
+QMAKE_CXXFLAGS += -pedantic
+
+TRANSLATIONS += translations/coreSQLiteStudio_de.ts \
+ translations/coreSQLiteStudio_it.ts \
+ translations/coreSQLiteStudio_zh_CN.ts \
+ translations/coreSQLiteStudio_sk.ts \
+ translations/coreSQLiteStudio_ru.ts \
+ translations/coreSQLiteStudio_pt_BR.ts \
+ translations/coreSQLiteStudio_fr.ts \
+ translations/coreSQLiteStudio_es.ts \
+ translations/coreSQLiteStudio_pl.ts
+
+SOURCES += sqlitestudio.cpp \
+ returncode.cpp \
+ services/config.cpp \
+ common/nulldevice.cpp \
+ parser/lexer_low_lev.cpp \
+ common/utils.cpp \
+ parser/keywords.cpp \
+ common/utils_sql.cpp \
+ parser/token.cpp \
+ parser/lexer.cpp \
+ parser/sqlite3_parse.cpp \
+ parser/parsercontext.cpp \
+ parser/parser.cpp \
+ parser/sqlite2_parse.cpp \
+ parser/ast/sqlitestatement.cpp \
+ parser/ast/sqlitequery.cpp \
+ parser/ast/sqlitealtertable.cpp \
+ parser/ast/sqliteanalyze.cpp \
+ parser/ast/sqlitebegintrans.cpp \
+ parser/ast/sqlitecommittrans.cpp \
+ parser/ast/sqlitecreateindex.cpp \
+ parser/ast/sqlitecreatetable.cpp \
+ parser/ast/sqlitecreatetrigger.cpp \
+ parser/ast/sqlitecreateview.cpp \
+ parser/ast/sqlitecreatevirtualtable.cpp \
+ parser/ast/sqlitedelete.cpp \
+ parser/ast/sqlitedetach.cpp \
+ parser/ast/sqlitedroptable.cpp \
+ parser/ast/sqlitedroptrigger.cpp \
+ parser/ast/sqlitedropindex.cpp \
+ parser/ast/sqlitedropview.cpp \
+ parser/ast/sqliteinsert.cpp \
+ parser/ast/sqlitepragma.cpp \
+ parser/ast/sqlitereindex.cpp \
+ parser/ast/sqlitesavepoint.cpp \
+ parser/ast/sqliterelease.cpp \
+ parser/ast/sqliterollback.cpp \
+ parser/ast/sqliteselect.cpp \
+ parser/ast/sqliteupdate.cpp \
+ parser/ast/sqlitevacuum.cpp \
+ parser/ast/sqlitecopy.cpp \
+ parser/ast/sqliteemptyquery.cpp \
+ parser/parser_helper_stubs.cpp \
+ parser/ast/sqliteexpr.cpp \
+ parser/ast/sqliteforeignkey.cpp \
+ parser/ast/sqliteindexedcolumn.cpp \
+ parser/ast/sqlitecolumntype.cpp \
+ parser/ast/sqliteconflictalgo.cpp \
+ parser/ast/sqlitesortorder.cpp \
+ parser/ast/sqliteraise.cpp \
+ parser/ast/sqliteorderby.cpp \
+ parser/ast/sqlitelimit.cpp \
+ parser/ast/sqliteattach.cpp \
+ parser/parsererror.cpp \
+ selectresolver.cpp \
+ schemaresolver.cpp \
+ parser/ast/sqlitequerytype.cpp \
+ db/db.cpp \
+ services/dbmanager.cpp \
+ db/sqlresultsrow.cpp \
+ db/asyncqueryrunner.cpp \
+ completionhelper.cpp \
+ completioncomparer.cpp \
+ db/queryexecutor.cpp \
+ qio.cpp \
+ plugins/pluginsymbolresolver.cpp \
+ db/sqlerrorresults.cpp \
+ db/queryexecutorsteps/queryexecutorstep.cpp \
+ db/queryexecutorsteps/queryexecutorcountresults.cpp \
+ db/queryexecutorsteps/queryexecutorparsequery.cpp \
+ db/queryexecutorsteps/queryexecutorexecute.cpp \
+ db/queryexecutorsteps/queryexecutorattaches.cpp \
+ db/queryexecutorsteps/queryexecutoraddrowids.cpp \
+ db/queryexecutorsteps/queryexecutorlimit.cpp \
+ db/queryexecutorsteps/queryexecutorcolumns.cpp \
+ db/queryexecutorsteps/queryexecutorcellsize.cpp \
+ db/queryexecutorsteps/queryexecutororder.cpp \
+ db/sqlerrorcodes.cpp \
+ common/readwritelocker.cpp \
+ db/queryexecutorsteps/queryexecutorwrapdistinctresults.cpp \
+ csvformat.cpp \
+ csvserializer.cpp \
+ db/queryexecutorsteps/queryexecutordatasources.cpp \
+ expectedtoken.cpp \
+ sqlhistorymodel.cpp \
+ db/queryexecutorsteps/queryexecutorexplainmode.cpp \
+ services/notifymanager.cpp \
+ parser/statementtokenbuilder.cpp \
+ parser/ast/sqlitedeferrable.cpp \
+ tablemodifier.cpp \
+ db/chainexecutor.cpp \
+ db/queryexecutorsteps/queryexecutorreplaceviews.cpp \
+ services/codeformatter.cpp \
+ viewmodifier.cpp \
+ log.cpp \
+ plugins/plugintype.cpp \
+ plugins/genericplugin.cpp \
+ common/memoryusage.cpp \
+ ddlhistorymodel.cpp \
+ datatype.cpp \
+ common/table.cpp \
+ common/column.cpp \
+ dbattacher.cpp \
+ services/functionmanager.cpp \
+ plugins/scriptingqt.cpp \
+ services/impl/configimpl.cpp \
+ services/impl/dbmanagerimpl.cpp \
+ db/abstractdb.cpp \
+ services/impl/functionmanagerimpl.cpp \
+ services/impl/pluginmanagerimpl.cpp \
+ impl/dbattacherimpl.cpp \
+ db/dbsqlite3.cpp \
+ plugins/dbpluginsqlite3.cpp \
+ parser/ast/sqlitewith.cpp \
+ services/impl/collationmanagerimpl.cpp \
+ services/exportmanager.cpp \
+ exportworker.cpp \
+ plugins/scriptingsql.cpp \
+ db/queryexecutorsteps/queryexecutordetectschemaalter.cpp \
+ querymodel.cpp \
+ plugins/genericexportplugin.cpp \
+ dbobjectorganizer.cpp \
+ db/attachguard.cpp \
+ db/invaliddb.cpp \
+ dbversionconverter.cpp \
+ diff/diff_match_patch.cpp \
+ db/sqlquery.cpp \
+ db/queryexecutorsteps/queryexecutorvaluesmode.cpp \
+ services/importmanager.cpp \
+ importworker.cpp \
+ services/populatemanager.cpp \
+ pluginservicebase.cpp \
+ populateworker.cpp \
+ plugins/populatesequence.cpp \
+ plugins/populaterandom.cpp \
+ plugins/populaterandomtext.cpp \
+ plugins/populateconstant.cpp \
+ plugins/populatedictionary.cpp \
+ plugins/populatescript.cpp \
+ plugins/builtinplugin.cpp \
+ plugins/scriptingqtdbproxy.cpp \
+ plugins/sqlformatterplugin.cpp \
+ services/bugreporter.cpp \
+ services/updatemanager.cpp \
+ config_builder/cfgmain.cpp \
+ config_builder/cfgcategory.cpp \
+ config_builder/cfgentry.cpp \
+ config_builder/cfglazyinitializer.cpp \
+ committable.cpp \
+ services/extralicensemanager.cpp \
+ tsvserializer.cpp \
+ rsa/BigInt.cpp \
+ rsa/Key.cpp \
+ rsa/KeyPair.cpp \
+ rsa/PrimeGenerator.cpp \
+ rsa/RSA.cpp \
+ translations.cpp \
+ common/signalwait.cpp \
+ common/blockingsocket.cpp \
+ common/threadwitheventloop.cpp \
+ common/private/blockingsocketprivate.cpp \
+ querygenerator.cpp \
+ common/bistrhash.cpp \
+ plugins/dbpluginstdfilebase.cpp
+
+HEADERS += sqlitestudio.h\
+ coreSQLiteStudio_global.h \
+ returncode.h \
+ services/config.h \
+ common/nulldevice.h \
+ parser/lexer_low_lev.h \
+ common/utils.h \
+ parser/keywords.h \
+ parser/token.h \
+ common/utils_sql.h \
+ parser/lexer.h \
+ parser/sqlite3_parse.h \
+ parser/parsercontext.h \
+ parser/parser.h \
+ parser/sqlite2_parse.h \
+ parser/ast/sqlitestatement.h \
+ parser/ast/sqlitequery.h \
+ parser/ast/sqlitealtertable.h \
+ parser/ast/sqliteanalyze.h \
+ parser/ast/sqlitebegintrans.h \
+ parser/ast/sqlitecommittrans.h \
+ parser/ast/sqlitecreateindex.h \
+ parser/ast/sqlitecreatetable.h \
+ parser/ast/sqlitecreatetrigger.h \
+ parser/ast/sqlitecreateview.h \
+ parser/ast/sqlitecreatevirtualtable.h \
+ parser/ast/sqlitedelete.h \
+ parser/ast/sqlitedetach.h \
+ parser/ast/sqlitedroptable.h \
+ parser/ast/sqlitedroptrigger.h \
+ parser/ast/sqlitedropindex.h \
+ parser/ast/sqlitedropview.h \
+ parser/ast/sqliteinsert.h \
+ parser/ast/sqlitepragma.h \
+ parser/ast/sqlitereindex.h \
+ parser/ast/sqlitesavepoint.h \
+ parser/ast/sqliterelease.h \
+ parser/ast/sqliterollback.h \
+ parser/ast/sqliteselect.h \
+ parser/ast/sqliteupdate.h \
+ parser/ast/sqlitevacuum.h \
+ parser/ast/sqlitecopy.h \
+ parser/ast/sqlitequerytype.h \
+ parser/ast/sqliteemptyquery.h \
+ parser/parser_helper_stubs.h \
+ parser/ast/sqliteconflictalgo.h \
+ parser/ast/sqliteexpr.h \
+ parser/ast/sqliteforeignkey.h \
+ parser/ast/sqliteindexedcolumn.h \
+ parser/ast/sqlitecolumntype.h \
+ parser/ast/sqlitesortorder.h \
+ parser/ast/sqlitedeferrable.h \
+ parser/ast/sqliteraise.h \
+ parser/ast/sqliteorderby.h \
+ parser/ast/sqlitelimit.h \
+ parser/ast/sqliteattach.h \
+ parser/parsererror.h \
+ common/objectpool.h \
+ selectresolver.h \
+ schemaresolver.h \
+ dialect.h \
+ db/db.h \
+ services/dbmanager.h \
+ db/sqlresultsrow.h \
+ db/asyncqueryrunner.h \
+ completionhelper.h \
+ expectedtoken.h \
+ completioncomparer.h \
+ plugins/dbplugin.h \
+ services/pluginmanager.h \
+ db/queryexecutor.h \
+ qio.h \
+ db/dbpluginoption.h \
+ common/global.h \
+ parser/ast/sqlitetablerelatedddl.h \
+ plugins/pluginsymbolresolver.h \
+ db/sqlerrorresults.h \
+ db/sqlerrorcodes.h \
+ db/queryexecutorsteps/queryexecutorstep.h \
+ db/queryexecutorsteps/queryexecutorcountresults.h \
+ db/queryexecutorsteps/queryexecutorparsequery.h \
+ db/queryexecutorsteps/queryexecutorexecute.h \
+ db/queryexecutorsteps/queryexecutorattaches.h \
+ db/queryexecutorsteps/queryexecutoraddrowids.h \
+ db/queryexecutorsteps/queryexecutorlimit.h \
+ db/queryexecutorsteps/queryexecutorcolumns.h \
+ db/queryexecutorsteps/queryexecutorcellsize.h \
+ common/unused.h \
+ db/queryexecutorsteps/queryexecutororder.h \
+ common/readwritelocker.h \
+ db/queryexecutorsteps/queryexecutorwrapdistinctresults.h \
+ csvformat.h \
+ csvserializer.h \
+ db/queryexecutorsteps/queryexecutordatasources.h \
+ sqlhistorymodel.h \
+ db/queryexecutorsteps/queryexecutorexplainmode.h \
+ services/notifymanager.h \
+ parser/statementtokenbuilder.h \
+ tablemodifier.h \
+ db/chainexecutor.h \
+ db/queryexecutorsteps/queryexecutorreplaceviews.h \
+ plugins/sqlformatterplugin.h \
+ services/codeformatter.h \
+ viewmodifier.h \
+ log.h \
+ plugins/plugintype.h \
+ plugins/plugin.h \
+ plugins/genericplugin.h \
+ common/memoryusage.h \
+ ddlhistorymodel.h \
+ datatype.h \
+ plugins/generalpurposeplugin.h \
+ common/table.h \
+ common/column.h \
+ common/bihash.h \
+ common/strhash.h \
+ dbattacher.h \
+ common/bistrhash.h \
+ services/functionmanager.h \
+ common/sortedhash.h \
+ plugins/scriptingplugin.h \
+ plugins/scriptingqt.h \
+ services/impl/configimpl.h \
+ services/impl/dbmanagerimpl.h \
+ db/abstractdb.h \
+ services/impl/functionmanagerimpl.h \
+ services/impl/pluginmanagerimpl.h \
+ impl/dbattacherimpl.h \
+ db/abstractdb3.h \
+ db/dbsqlite3.h \
+ plugins/dbpluginsqlite3.h \
+ db/abstractdb2.h \
+ parser/ast/sqlitewith.h \
+ services/collationmanager.h \
+ services/impl/collationmanagerimpl.h \
+ plugins/exportplugin.h \
+ config_builder.h \
+ services/exportmanager.h \
+ exportworker.h \
+ plugins/scriptingsql.h \
+ db/queryexecutorsteps/queryexecutordetectschemaalter.h \
+ querymodel.h \
+ plugins/genericexportplugin.h \
+ dbobjectorganizer.h \
+ db/attachguard.h \
+ interruptable.h \
+ db/invaliddb.h \
+ dbversionconverter.h \
+ diff/diff_match_patch.h \
+ db/sqlquery.h \
+ dbobjecttype.h \
+ db/queryexecutorsteps/queryexecutorvaluesmode.h \
+ plugins/importplugin.h \
+ services/importmanager.h \
+ importworker.h \
+ plugins/populateplugin.h \
+ services/populatemanager.h \
+ pluginservicebase.h \
+ populateworker.h \
+ plugins/populatesequence.h \
+ plugins/populaterandom.h \
+ plugins/populaterandomtext.h \
+ plugins/populateconstant.h \
+ plugins/populatedictionary.h \
+ plugins/populatescript.h \
+ plugins/builtinplugin.h \
+ plugins/scriptingqtdbproxy.h \
+ plugins/codeformatterplugin.h \
+ services/bugreporter.h \
+ services/updatemanager.h \
+ config_builder/cfgmain.h \
+ config_builder/cfgcategory.h \
+ config_builder/cfgentry.h \
+ config_builder/cfglazyinitializer.h \
+ plugins/confignotifiableplugin.h \
+ committable.h \
+ plugins/uiconfiguredplugin.h \
+ services/extralicensemanager.h \
+ db/stdsqlite3driver.h \
+ tsvserializer.h \
+ rsa/BigInt.h \
+ rsa/Key.h \
+ rsa/KeyPair.h \
+ rsa/PrimeGenerator.h \
+ rsa/RSA.h \
+ translations.h \
+ common/signalwait.h \
+ common/blockingsocket.h \
+ common/threadwitheventloop.h \
+ common/private/blockingsocketprivate.h \
+ common/expiringcache.h \
+ parser/ast/sqliteddlwithdbcontext.h \
+ parser/ast/sqliteextendedindexedcolumn.h \
+ querygenerator.h \
+ common/sortedset.h \
+ plugins/dbpluginstdfilebase.h
+
+unix: {
+ target.path = $$LIBDIR
+ INSTALLS += target
+}
+
+OTHER_FILES += \
+ parser/lempar.c \
+ parser/sqlite3_parse.y \
+ parser/sqlite2_parse.y \
+ parser/run_lemon.sh \
+ TODO.txt \
+ licenses/fugue_icons.txt \
+ licenses/qhexedit.txt \
+ licenses/sqlitestudio_license.txt \
+ licenses/lgpl.txt \
+ licenses/diff_match.txt \
+ licenses/gpl.txt \
+ ChangeLog.txt \
+ qt.conf \
+ Info.plist
+
+FORMS += \
+ plugins/populatesequence.ui \
+ plugins/populaterandom.ui \
+ plugins/populaterandomtext.ui \
+ plugins/populateconstant.ui \
+ plugins/populatedictionary.ui \
+ plugins/populatescript.ui
+
+RESOURCES += \
+ coreSQLiteStudio.qrc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.qrc
index 7b814ec..d58efc1 100644
--- a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc
+++ b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.qrc
@@ -24,5 +24,9 @@
<file>translations/coreSQLiteStudio_fr.qm</file>
<file>translations/coreSQLiteStudio_sk.qm</file>
<file>translations/coreSQLiteStudio_zh_CN.qm</file>
+ <file>translations/coreSQLiteStudio_de.qm</file>
</qresource>
</RCC>
+
+
+
diff --git a/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp b/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
index f5daa60..151fffd 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
@@ -1,7 +1,7 @@
#include "csvformat.h"
#include <QtGlobal>
-const CsvFormat CsvFormat::DEFAULT = {",", "\n"};
+const CsvFormat CsvFormat::DEFAULT = {{","}, {"\r\n", "\n", "\r"}};
CsvFormat::CsvFormat()
{
@@ -12,6 +12,27 @@ CsvFormat::CsvFormat(const QString& columnSeparator, const QString& rowSeparator
{
}
+CsvFormat::CsvFormat(const QStringList &columnSeparators, const QStringList &rowSeparators)
+{
+ if (rowSeparators.size() > 1)
+ {
+ this->rowSeparators = rowSeparators;
+ multipleRowSeparators = true;
+ strictRowSeparator = true;
+ }
+ else if (rowSeparators.size() > 0)
+ this->rowSeparator = rowSeparators.first();
+
+ if (columnSeparators.size() > 1)
+ {
+ this->columnSeparators = columnSeparators;
+ multipleColumnSeparators = true;
+ strictColumnSeparator = true;
+ }
+ else if (columnSeparators.size() > 0)
+ this->columnSeparator = columnSeparators.first();
+}
+
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 5ce00ad..3e8dda2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvformat.h
+++ b/SQLiteStudio3/coreSQLiteStudio/csvformat.h
@@ -3,17 +3,23 @@
#include "coreSQLiteStudio_global.h"
#include <QString>
+#include <QStringList>
struct API_EXPORT CsvFormat
{
CsvFormat();
CsvFormat(const QString& columnSeparator, const QString& rowSeparator);
+ CsvFormat(const QStringList& columnSeparators, const QStringList& rowSeparators);
CsvFormat(const QString& columnSeparator, const QString& rowSeparator, bool strictRowSeparator, bool strictColumnSeparator);
QString columnSeparator;
QString rowSeparator;
+ QStringList columnSeparators;
+ QStringList rowSeparators;
bool strictColumnSeparator = false;
bool strictRowSeparator = false;
+ bool multipleRowSeparators = false;
+ bool multipleColumnSeparators = false;
static const CsvFormat DEFAULT;
};
diff --git a/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp b/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
index 15bf4e8..ce568e9 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
@@ -10,20 +10,34 @@ bool isCsvColumnSeparator(QTextStream& data, const C& theChar, const CsvFormat&
return format.columnSeparator.contains(theChar);
// Strict checking (characters in defined order make a separator)
+ QStringList separators;
+ if (format.multipleColumnSeparators)
+ separators = format.columnSeparators;
+ else
+ separators << format.columnSeparator;
+
qint64 origPos = data.pos();
- data.seek(origPos - 1);
- C nextChar;
- for (const QChar& c : format.columnSeparator)
+ bool match = true;
+ for (const QString sep : separators)
{
- data >> nextChar;
- if (c != nextChar)
+ match = true;
+ data.seek(origPos - 1);
+ C nextChar;
+ for (const QChar& c : sep)
{
- data.seek(origPos);
- return false;
+ data >> nextChar;
+ if (c != nextChar)
+ {
+ data.seek(origPos);
+ match = false;
+ break;
+ }
}
+ if (match)
+ break;
}
- return true;
+ return match;
}
template <class C>
@@ -33,20 +47,34 @@ bool isCsvRowSeparator(QTextStream& data, const C& theChar, const CsvFormat& for
return format.rowSeparator.contains(theChar);
// Strict checking (characters in defined order make a separator)
+ QStringList separators;
+ if (format.multipleRowSeparators)
+ separators = format.rowSeparators;
+ else
+ separators << format.rowSeparator;
+
qint64 origPos = data.pos();
- data.seek(origPos - 1);
- C nextChar;
- for (const QChar& c : format.rowSeparator)
+ bool match = true;
+ for (const QString sep : separators)
{
- data >> nextChar;
- if (data.atEnd() || c != nextChar)
+ match = true;
+ data.seek(origPos - 1);
+ C nextChar;
+ for (const QChar& c : sep)
{
- data.seek(origPos);
- return false;
+ data >> nextChar;
+ if (data.atEnd() || c != nextChar)
+ {
+ data.seek(origPos);
+ match = false;
+ break;
+ }
}
+ if (match)
+ break;
}
- return true;
+ return match;
}
template <class T, class C>
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp
index 8c08a51..cd9b972 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp
@@ -761,7 +761,7 @@ bool AbstractDb::commit()
SqlQueryPtr results = exec("COMMIT;", Flag::NO_LOCK);
if (results->isError())
{
- qCritical() << "Error while commiting a transaction: " << results->getErrorCode() << results->getErrorText();
+ qCritical() << "Error while committing a transaction: " << results->getErrorCode() << results->getErrorText();
return false;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.cpp b/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.cpp
index a35856b..1f553ea 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.cpp
@@ -2,6 +2,7 @@
#include "sqlerrorcodes.h"
#include "db/sqlquery.h"
#include <QDebug>
+#include <QDateTime>
ChainExecutor::ChainExecutor(QObject *parent) :
QObject(parent)
@@ -32,12 +33,14 @@ void ChainExecutor::exec()
{
if (!db)
{
+ emit finished(SqlQueryPtr());
emit failure(SqlErrorCode::DB_NOT_DEFINED, tr("The database for executing queries was not defined.", "chain executor"));
return;
}
if (!db->isOpen())
{
+ emit finished(SqlQueryPtr());
emit failure(SqlErrorCode::DB_NOT_OPEN, tr("The database for executing queries was not open.", "chain executor"));
return;
}
@@ -47,6 +50,7 @@ void ChainExecutor::exec()
SqlQueryPtr result = db->exec("PRAGMA foreign_keys = 0;");
if (result->isError())
{
+ emit finished(SqlQueryPtr());
emit failure(db->getErrorCode(), tr("Could not disable foreign keys in the database. Details: %1", "chain executor").arg(db->getErrorText()));
return;
}
@@ -54,6 +58,7 @@ void ChainExecutor::exec()
if (transaction && !db->begin())
{
+ emit finished(SqlQueryPtr());
emit failure(db->getErrorCode(), tr("Could not start a database transaction. Details: %1", "chain executor").arg(db->getErrorText()));
return;
}
@@ -75,7 +80,7 @@ void ChainExecutor::executeCurrentSql()
{
if (currentSqlIndex >= sqls.size())
{
- executionSuccessful();
+ executionSuccessful(lastExecutionResults);
return;
}
@@ -135,10 +140,11 @@ void ChainExecutor::executionFailure(int errorCode, const QString& errorText)
restoreFk();
successfulExecution = false;
executionErrors << ExecutionError(errorCode, errorText);
+ emit finished(lastExecutionResults);
emit failure(errorCode, errorText);
}
-void ChainExecutor::executionSuccessful()
+void ChainExecutor::executionSuccessful(SqlQueryPtr results)
{
if (transaction && !db->commit())
{
@@ -148,7 +154,8 @@ void ChainExecutor::executionSuccessful()
restoreFk();
successfulExecution = true;
- emit success();
+ emit finished(results);
+ emit success(results);
}
void ChainExecutor::executeSync()
@@ -163,11 +170,12 @@ void ChainExecutor::executeSync()
currentSqlIndex++;
}
- executionSuccessful();
+ executionSuccessful(results);
}
bool ChainExecutor::handleResults(SqlQueryPtr results)
{
+ lastExecutionResults = results;
if (results->isError())
{
if (interrupted || currentSqlIndex >= mandatoryQueries.size() || mandatoryQueries[currentSqlIndex])
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.h b/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.h
index 0afbdb8..90c56f6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/chainexecutor.h
@@ -229,7 +229,7 @@ class API_EXPORT ChainExecutor : public QObject
*
* Commits transaction (in case of transactional execution) and emits success().
*/
- void executionSuccessful();
+ void executionSuccessful(SqlQueryPtr results);
/**
* @brief Executes all queries synchronously.
@@ -328,6 +328,8 @@ class API_EXPORT ChainExecutor : public QObject
bool disableForeignKeys = false;
bool disableObjectDropsDetection = false;
+ SqlQueryPtr lastExecutionResults;
+
public slots:
/**
* @brief Interrupts query execution.
@@ -353,10 +355,23 @@ class API_EXPORT ChainExecutor : public QObject
signals:
/**
* @brief Emitted when all mandatory queries were successfully executed.
+ * @param results Execution results from last query execution.
*
* See setMandatoryQueries() for details on mandatory queries.
*/
- void success();
+ void success(SqlQueryPtr results);
+
+ /**
+ * @brief Emitted when chain execution is finished, regardless of result.
+ * @param results Execution results from last query execution (may be null).
+ *
+ * In slot for this signal always check getSuccessfulExecution(),
+ * because execution could failed, despite results providing no error.
+ * It may happen for example if execution was interrupted,
+ * or executor could not pass through execution preparation phase
+ * (in which case results will be null).
+ */
+ void finished(SqlQueryPtr results);
/**
* @brief Emitted when major error occurred while executing a query.
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
index d2e7072..4a1c2f6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
@@ -20,6 +20,7 @@
#include "queryexecutorsteps/queryexecutordetectschemaalter.h"
#include "queryexecutorsteps/queryexecutorvaluesmode.h"
#include "common/unused.h"
+#include "chainexecutor.h"
#include "log.h"
#include <QMutexLocker>
#include <QDateTime>
@@ -36,6 +37,8 @@ QueryExecutor::QueryExecutor(Db* db, const QString& query, QObject *parent) :
QObject(parent)
{
context = new Context();
+ simpleExecutor = new ChainExecutor(this);
+ simpleExecutor->setTransaction(false);
originalQuery = query;
setDb(db);
setAutoDelete(false);
@@ -43,6 +46,8 @@ QueryExecutor::QueryExecutor(Db* db, const QString& query, QObject *parent) :
connect(this, SIGNAL(executionFailed(int,QString)), this, SLOT(cleanupAfterExecFailed(int,QString)));
connect(DBLIST, SIGNAL(dbAboutToBeUnloaded(Db*, DbPlugin*)), this, SLOT(cleanupBeforeDbDestroy(Db*)));
connect(DBLIST, SIGNAL(dbRemoved(Db*)), this, SLOT(cleanupBeforeDbDestroy(Db*)));
+ connect(simpleExecutor, SIGNAL(finished(SqlQueryPtr)), this, SLOT(simpleExecutionFinished(SqlQueryPtr)));
+
}
QueryExecutor::~QueryExecutor()
@@ -205,12 +210,26 @@ void QueryExecutor::run()
void QueryExecutor::execInternal()
{
+ queriesForSimpleExecution.clear();
if (forceSimpleMode)
{
executeSimpleMethod();
return;
}
+ if (queryCountLimitForSmartMode > -1)
+ {
+ queriesForSimpleExecution = quickSplitQueries(originalQuery, false, true);
+ int queryCount = queriesForSimpleExecution.size();
+ if (queryCount > queryCountLimitForSmartMode)
+ {
+ qDebug() << "Number of queries" << queryCount << "exceeds maximum number allowed for smart execution method" <<
+ queryCountLimitForSmartMode << ". Simple method will be used to retain efficiency.";
+ executeSimpleMethod();
+ return;
+ }
+ }
+
simpleExecution = false;
interrupted = false;
@@ -280,6 +299,14 @@ bool QueryExecutor::countResults()
return true;
}
+void QueryExecutor::dbAsyncExecFinished(quint32 asyncId, SqlQueryPtr results)
+{
+ if (handleRowCountingResults(asyncId, results))
+ return;
+
+ // If this was raised by any other asyncExec, handle it here.
+}
+
qint64 QueryExecutor::getLastExecutionTime() const
{
return context->executionTime;
@@ -391,45 +418,26 @@ void QueryExecutor::exec(const QString& query)
exec();
}
-void QueryExecutor::dbAsyncExecFinished(quint32 asyncId, SqlQueryPtr results)
-{
- if (handleRowCountingResults(asyncId, results))
- return;
-
- if (!simpleExecution)
- return;
-
- if (this->asyncId == 0)
- return;
-
- if (this->asyncId != asyncId)
- return;
-
- this->asyncId = 0;
-
- simpleExecutionFinished(results);
-}
-
void QueryExecutor::executeSimpleMethod()
{
simpleExecution = true;
context->editionForbiddenReasons << EditionForbiddenReason::SMART_EXECUTION_FAILED;
- simpleExecutionStartTime = QDateTime::currentMSecsSinceEpoch();
+ if (queriesForSimpleExecution.isEmpty())
+ queriesForSimpleExecution = quickSplitQueries(originalQuery, false, true);
- if (asyncMode)
- {
- asyncId = db->asyncExec(originalQuery, context->queryParameters, Db::Flag::PRELOAD);
- }
- else
- {
- SqlQueryPtr results = db->exec(originalQuery, context->queryParameters, Db::Flag::PRELOAD);
- simpleExecutionFinished(results);
- }
+ QStringList queriesWithPagination = applyLimitForSimpleMethod(queriesForSimpleExecution);
+
+ simpleExecutor->setQueries(queriesWithPagination);
+ simpleExecutor->setDb(db);
+ simpleExecutor->setAsync(false); // this is already in a thread
+
+ simpleExecutionStartTime = QDateTime::currentMSecsSinceEpoch();
+ simpleExecutor->exec();
}
void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
{
- if (results->isError())
+ if (results.isNull() || results->isError() || !simpleExecutor->getSuccessfulExecution())
{
executionMutex.lock();
executionInProgress = false;
@@ -437,9 +445,10 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
handleErrorsFromSmartAndSimpleMethods(results);
return;
}
+ context->executionTime = QDateTime::currentMSecsSinceEpoch() - simpleExecutionStartTime;
if (simpleExecIsSelect())
- context->countingQuery = "SELECT count(*) AS cnt FROM ("+originalQuery+");";
+ context->countingQuery = "SELECT count(*) AS cnt FROM ("+trimQueryEnd(queriesForSimpleExecution.last())+");";
else
context->rowsCountingRequired = true;
@@ -452,7 +461,6 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
context->resultColumns << resCol;
}
- context->executionTime = QDateTime::currentMSecsSinceEpoch() - simpleExecutionStartTime;
context->rowsAffected = results->rowsAffected();
context->totalRowsReturned = 0;
context->executionResults = results;
@@ -467,7 +475,7 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
context->resultsHandler = nullptr;
}
- if (!forceSimpleMode)
+ if (!forceSimpleMode && queriesForSimpleExecution.size() <= queryCountLimitForSmartMode)
notifyWarn(tr("SQLiteStudio was unable to extract metadata from the query. Results won't be editable."));
emit executionFinished(results);
@@ -475,7 +483,7 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
bool QueryExecutor::simpleExecIsSelect()
{
- TokenList tokens = Lexer::tokenize(originalQuery, db->getDialect());
+ TokenList tokens = Lexer::tokenize(queriesForSimpleExecution.last(), db->getDialect());
tokens.trim();
// First check if it's explicit "SELECT" or "VALUES" (the latter one added in SQLite 3.8.4).
@@ -563,6 +571,34 @@ bool QueryExecutor::handleRowCountingResults(quint32 asyncId, SqlQueryPtr result
return true;
}
+
+QStringList QueryExecutor::applyLimitForSimpleMethod(const QStringList &queries)
+{
+ static_qstring(tpl, "SELECT * FROM (%1) LIMIT %2 OFFSET %3");
+ QStringList result = queries;
+
+ QString lastQuery = queries.last();
+
+ bool isSelect = false;
+ getQueryAccessMode(lastQuery, db->getDialect(), &isSelect);
+ if (isSelect)
+ {
+ result.removeLast();
+ result << tpl.arg(trimQueryEnd(lastQuery), QString::number(resultsPerPage), QString::number(page * resultsPerPage));
+ }
+ return result;
+}
+
+int QueryExecutor::getQueryCountLimitForSmartMode() const
+{
+ return queryCountLimitForSmartMode;
+}
+
+void QueryExecutor::setQueryCountLimitForSmartMode(int value)
+{
+ queryCountLimitForSmartMode = value;
+}
+
bool QueryExecutor::getForceSimpleMode() const
{
return forceSimpleMode;
@@ -602,13 +638,25 @@ void QueryExecutor::handleErrorsFromSmartAndSimpleMethods(SqlQueryPtr results)
// therefore we need to check code from smart execution, before deciding which one to use).
// Just rename attach names in the message.
bool useSmartError = context->errorCodeFromSmartExecution != 0;
- QString msg = useSmartError ? context->errorMessageFromSmartExecution : results->getErrorText();
- int code = useSmartError ? context->errorCodeFromSmartExecution : results->getErrorCode();
- QString match;
- QString replaceName;
- Dialect dialect = db->getDialect();
+ QString msg;
+ int code;
+
+ if (!useSmartError && (results.isNull() || !results->isError()) && !simpleExecutor->getErrors().isEmpty())
+ {
+ code = simpleExecutor->getErrors().first().first;
+ msg = simpleExecutor->getErrors().first().second;
+ }
+ else
+ {
+ msg = useSmartError ? context->errorMessageFromSmartExecution : results->getErrorText();
+ code = useSmartError ? context->errorCodeFromSmartExecution : results->getErrorCode();
+ }
+
if (useSmartError)
{
+ QString match;
+ QString replaceName;
+ Dialect dialect = db->getDialect();
for (const QString& attachName : context->dbNameToAttach.rightValues())
{
match = attachName + ".";
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
index eddbe8c..4830e36 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
@@ -18,6 +18,7 @@ class Parser;
class SqliteQuery;
class QueryExecutorStep;
class DbPlugin;
+class ChainExecutor;
/**
* @brief Advanced SQL query execution handler.
@@ -1034,6 +1035,9 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
bool isInterrupted() const;
+ int getQueryCountLimitForSmartMode() const;
+ void setQueryCountLimitForSmartMode(int value);
+
private:
/**
* @brief Executes query.
@@ -1088,17 +1092,6 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
void executeSimpleMethod();
/**
- * @brief Handles results of simple execution.
- * @param results Results object returned from Db.
- *
- * Checks results for errors and extracts basic meta information,
- * such as rows affected, total result rows and time of execution.
- *
- * In case of success emits executionFinished(), in case of error emits executionFailed().
- */
- void simpleExecutionFinished(SqlQueryPtr results);
-
- /**
* @brief Tests whether the original query is a SELECT statement.
* @return true if the query is SELECT, or false otherwise.
*
@@ -1130,6 +1123,8 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
*/
bool handleRowCountingResults(quint32 asyncId, SqlQueryPtr results);
+ QStringList applyLimitForSimpleMethod(const QStringList &queries);
+
/**
* @brief Query executor context object.
*
@@ -1173,6 +1168,8 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
*/
QString originalQuery;
+ QStringList queriesForSimpleExecution;
+
/**
* @brief Predefined number of results per page.
*
@@ -1245,18 +1242,20 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
int dataLengthLimit = -1;
/**
- * @brief Exact moment when query execution started.
+ * @brief Limit of queries, after which simple mode is used.
*
- * Expressed in number of milliseconds since 1970-01-01 00:00:00.
+ * Up to the defined limit the smart execution will be used (unless #forceSimpleMode was set).
+ * After exceeding this limit, the simple mode will be used.
+ * Set to negative number to disable this limit.
*/
- qint64 simpleExecutionStartTime;
+ int queryCountLimitForSmartMode = -1;
/**
- * @brief Asynchronous ID of query execution.
+ * @brief Exact moment when query execution started.
*
- * Asynchronous ID returned from Db::asyncExec() for the query execution.
+ * Expressed in number of milliseconds since 1970-01-01 00:00:00.
*/
- quint32 asyncId = 0;
+ qint64 simpleExecutionStartTime;
/**
* @brief Asynchronous ID of counting query execution.
@@ -1329,6 +1328,7 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
Db::QueryResultsHandler resultsHandler = nullptr;
bool forceSimpleMode = false;
+ ChainExecutor* simpleExecutor = nullptr;
signals:
/**
@@ -1381,17 +1381,6 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
private slots:
/**
- * @brief Handles asynchronous database execution results.
- * @param asyncId Asynchronous ID of the execution.
- * @param results Results from the execution.
- *
- * QueryExecutor checks whether the \p asyncId belongs to the counting query execution,
- * or the simple execution.
- * Dispatches query results to a proper handler method.
- */
- void dbAsyncExecFinished(quint32 asyncId, SqlQueryPtr results);
-
- /**
* @brief Calledn when an executor step has failed with its job.
*
* An executor step reported an error. "Smart execution" failed and now the executor will try
@@ -1416,6 +1405,28 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
* be unloaded soon and we won't be able to call results destructor.
*/
void cleanupBeforeDbDestroy(Db* dbToBeUnloaded);
+
+ /**
+ * @brief Handles results of simple execution.
+ * @param results Results object returned from Db.
+ *
+ * Checks results for errors and extracts basic meta information,
+ * such as rows affected, total result rows and time of execution.
+ *
+ * In case of success emits executionFinished(), in case of error emits executionFailed().
+ */
+ void simpleExecutionFinished(SqlQueryPtr results);
+
+ /**
+ * @brief Handles asynchronous database execution results.
+ * @param asyncId Asynchronous ID of the execution.
+ * @param results Results from the execution.
+ *
+ * QueryExecutor checks whether the \p asyncId belongs to the counting query execution,
+ * or the simple execution.
+ * Dispatches query results to a proper handler method.
+ */
+ void dbAsyncExecFinished(quint32 asyncId, SqlQueryPtr results);
};
int qHash(QueryExecutor::EditionForbiddenReason reason);
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
index 8cc344c..d417072 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
@@ -31,8 +31,10 @@ bool QueryExecutorAddRowIds::exec()
}
// ...and putting it into parsed query, then update processed query
+// qDebug() << "before addrowid: " << context->processedQuery;
select->rebuildTokens();
updateQueries();
+// qDebug() << "after addrowid: " << context->processedQuery;
return true;
}
@@ -148,17 +150,30 @@ 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)
{
+ SelectResolver::Table keyTable = table;
+ if (!rowIdColsMap.contains(table))
+ {
+ for (const SelectResolver::Table& rowIdColsMapTable : rowIdColsMap.keys())
+ {
+ if (!table.oldTableAliases.contains(rowIdColsMapTable.tableAlias, Qt::CaseInsensitive))
+ continue;
+
+ keyTable = rowIdColsMapTable;
+ }
+ }
+
+ // Find ROWID column from inner SELECT, or create new column for the table.
QHash<QString, QString> executorToRealColumns;
bool aliasOnlyAsSelectColumn = false;
- if (rowIdColsMap.contains(table))
+ if (rowIdColsMap.contains(keyTable))
{
- executorToRealColumns = rowIdColsMap[table]; // we already have resCol names from subselect
+ executorToRealColumns = rowIdColsMap[keyTable]; // we already have resCol names from subselect
aliasOnlyAsSelectColumn = true;
}
else
{
- executorToRealColumns = getNextColNames(table);
- rowIdColsMap[table] = executorToRealColumns;
+ executorToRealColumns = getNextColNames(keyTable);
+ rowIdColsMap[keyTable] = executorToRealColumns;
}
if (executorToRealColumns.size() == 0)
@@ -182,7 +197,7 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
queryExecutorResCol->dbName = table.originalDatabase;
queryExecutorResCol->database = table.database;
queryExecutorResCol->table = table.table;
- queryExecutorResCol->tableAlias = table.alias;
+ queryExecutorResCol->tableAlias = table.tableAlias;
queryExecutorResCol->queryExecutorAliasToColumn = executorToRealColumns;
context->rowIdColumns << queryExecutorResCol;
}
@@ -207,9 +222,9 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
else
{
resCol->expr->initId(realColumn);
- if (!table.alias.isNull())
+ if (!table.tableAlias.isNull())
{
- resCol->expr->table = table.alias;
+ resCol->expr->table = table.tableAlias;
}
else
{
@@ -222,6 +237,6 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
resCol->asKw = true;
resCol->alias = queryExecutorColumn;
- core->resultColumns.insert(0, resCol);
+ core->resultColumns << resCol;
return true;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcellsize.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcellsize.cpp
index 934a20d..54bd35a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcellsize.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcellsize.cpp
@@ -31,21 +31,21 @@ bool QueryExecutorCellSize::applyDataLimit(SqliteSelect* select, SqliteSelect::C
bool first = true;
TokenList tokens;
- foreach (const QueryExecutor::ResultRowIdColumnPtr& col, context->rowIdColumns)
+ foreach (const QueryExecutor::ResultColumnPtr& col, context->resultColumns)
{
if (!first)
tokens += getSeparatorTokens();
- tokens += getNoLimitTokens(col);
+ tokens += getLimitTokens(col);
first = false;
}
- foreach (const QueryExecutor::ResultColumnPtr& col, context->resultColumns)
+ foreach (const QueryExecutor::ResultRowIdColumnPtr& col, context->rowIdColumns)
{
if (!first)
tokens += getSeparatorTokens();
- tokens += getLimitTokens(col);
+ tokens += getNoLimitTokens(col);
first = false;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp
index 344f2e5..30a4f5d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp
@@ -48,6 +48,7 @@ bool QueryExecutorColumns::exec()
SqliteSelect::Core::ResultColumn* resultColumnForSelect = nullptr;
bool rowIdColumn = false;
int i = 0;
+ QSet<QString> usedAliases;
for (const SelectResolver::Column& col : columns)
{
// Convert column to QueryExecutor result column
@@ -58,7 +59,7 @@ bool QueryExecutorColumns::exec()
if (rowIdColumn && col.alias.contains(":"))
continue; // duplicate ROWID column provided by SelectResolver. See isRowIdColumn() for details.
- resultColumnForSelect = getResultColumnForSelect(resultColumn, col);
+ resultColumnForSelect = getResultColumnForSelect(resultColumn, col, usedAliases);
if (!resultColumnForSelect)
return false;
@@ -126,7 +127,7 @@ QueryExecutor::ResultColumnPtr QueryExecutorColumns::getResultColumn(const Selec
return resultColumn;
}
-SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col)
+SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col, QSet<QString> &usedAliases)
{
SqliteSelect::Core::ResultColumn* selectResultColumn = new SqliteSelect::Core::ResultColumn();
@@ -177,6 +178,15 @@ SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect
else
selectResultColumn->alias = resultColumn->queryExecutorAlias;
+ // If this alias was already used we need to use sequential alias
+ static_qstring(aliasTpl, "%1:%2");
+ int nextAliasCounter = 1;
+ QString aliasBase = selectResultColumn->alias;
+ while (usedAliases.contains(selectResultColumn->alias))
+ selectResultColumn->alias = aliasTpl.arg(aliasBase, QString::number(nextAliasCounter++));
+
+ usedAliases += selectResultColumn->alias;
+
return selectResultColumn;
}
@@ -206,18 +216,6 @@ void QueryExecutorColumns::wrapWithAliasedColumns(SqliteSelect* select)
bool first = true;
TokenList outerColumns;
- for (const QueryExecutor::ResultRowIdColumnPtr& rowIdColumn : context->rowIdColumns)
- {
- for (const QString& alias : rowIdColumn->queryExecutorAliasToColumn.keys())
- {
- if (!first)
- outerColumns += sepTokens;
-
- outerColumns << TokenPtr::create(Token::OTHER, alias);
- first = false;
- }
- }
-
QStringList columnNamesUsed;
QString baseColName;
QString colName;
@@ -251,6 +249,18 @@ void QueryExecutorColumns::wrapWithAliasedColumns(SqliteSelect* select)
first = false;
}
+ for (const QueryExecutor::ResultRowIdColumnPtr& rowIdColumn : context->rowIdColumns)
+ {
+ for (const QString& alias : rowIdColumn->queryExecutorAliasToColumn.keys())
+ {
+ if (!first)
+ outerColumns += sepTokens;
+
+ outerColumns << TokenPtr::create(Token::OTHER, alias);
+ first = false;
+ }
+ }
+
//QString t = outerColumns.detokenize(); // keeping it for debug purposes
select->tokens = wrapSelect(select->tokens, outerColumns);
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h
index e23b9f6..8e1ebd2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h
@@ -50,7 +50,7 @@ class QueryExecutorColumns : public QueryExecutorStep
* @param rowIdColumn Indicates if this is a call for ROWID column added by QueryExecutorRowId step.
* @return Result column object ready for rebuilding tokens and detokenizing.
*/
- SqliteSelect::Core::ResultColumn* getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col);
+ SqliteSelect::Core::ResultColumn* getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col, QSet<QString>& usedAliases);
/**
* @brief Translates attach name into database name.
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp
index 31cda9e..4a422d3 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp
@@ -24,7 +24,7 @@ bool QueryExecutorDataSources::exec()
QueryExecutor::SourceTablePtr table = QueryExecutor::SourceTablePtr::create();
table->database = resolvedTable.database;
table->table = resolvedTable.table;
- table->alias = resolvedTable.alias;
+ table->alias = resolvedTable.tableAlias;
context->sourceTables << table;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
index 3036796..aaa8014 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
@@ -3,13 +3,14 @@
#include "db/queryexecutor.h"
#include "parser/ast/sqlitequery.h"
#include "parser/lexer.h"
+#include "log.h"
#include "parser/ast/sqlitecreatetable.h"
#include "datatype.h"
+#include "schemaresolver.h"
+#include "common/table.h"
#include <QDateTime>
#include <QDebug>
#include <QStack>
-#include <schemaresolver.h>
-#include <common/table.h>
bool QueryExecutorExecute::exec()
{
@@ -58,8 +59,9 @@ bool QueryExecutorExecute::executeQueries()
if (isBeginTransaction(query->queryType))
rowsAffectedBeforeTransaction.push(context->rowsAffected);
-// qDebug() << "Executing query:" << queryStr;
+ //qDebug() << getLogDateTime() << "Executing query:" << queryStr;
results->execute();
+ //qDebug() << getLogDateTime() << "Done.";
if (results->isError())
{
@@ -155,7 +157,7 @@ void QueryExecutorExecute::setupSqlite2ColumnDataTypes(SqlQueryPtr results)
sqlite2Helper->clearBinaryTypes();
SqliteCreateTable::Column* column = nullptr;
- int idx = -1 + context->rowIdColumns.size();
+ int idx = -1;
for (QueryExecutor::ResultColumnPtr resCol : context->resultColumns)
{
idx++;
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
index 1f2e736..affe45c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
@@ -91,6 +91,7 @@ void QueryExecutorReplaceViews::replaceViews(SqliteSelect* select)
}
src->select = view->select;
+ src->alias = view->view;
src->database = QString::null;
src->table = QString::null;
diff --git a/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.cpp b/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.cpp
index 9e4c664..96f73d7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/dbversionconverter.cpp
@@ -755,6 +755,9 @@ bool DbVersionConverter::modifySingleExprForVersion2(SqliteExpr* expr)
case SqliteExpr::Mode::CTIME:
errors << QObject::tr("SQLite %1 does not support current date or time clauses in expressions.").arg("2");
return false;
+ case SqliteExpr::Mode::ROW_VALUE:
+ errors << QObject::tr("SQLite %1 does not support row value clauses in expressions.").arg("2");
+ return false;
case SqliteExpr::Mode::IN:
case SqliteExpr::Mode::SUB_SELECT:
{
diff --git a/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp b/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp
index 6427138..bc34bd0 100644
--- a/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp
@@ -204,7 +204,8 @@ QHash<ExportManager::ExportProviderFlag, QVariant> ExportWorker::getProviderData
else
{
QList<int> colWidths;
- for (const QVariant& value : results->next()->valueList())
+ SqlResultsRowPtr row = results->next();
+ for (const QVariant& value : row->valueList())
colWidths << value.toInt();
providerData[ExportManager::DATA_LENGTHS] = QVariant::fromValue(colWidths);
@@ -242,15 +243,6 @@ bool ExportWorker::exportDatabase()
return false;
}
- QList<ExportManager::ExportObject::Type> order = {
- ExportManager::ExportObject::TABLE, ExportManager::ExportObject::INDEX, ExportManager::ExportObject::TRIGGER, ExportManager::ExportObject::VIEW
- };
-
- qSort(dbObjects.begin(), dbObjects.end(), [=](const ExportManager::ExportObjectPtr& dbObj1, const ExportManager::ExportObjectPtr& dbObj2) -> bool
- {
- return order.indexOf(dbObj1->type) < order.indexOf(dbObj2->type);
- });
-
if (!plugin->beforeExportTables())
{
logExportFail("beforeExportTables()");
diff --git a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
index a8ca8f7..ea6c40d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
@@ -25,7 +25,7 @@ void ImportWorker::run()
return;
}
- if (!db->begin())
+ if (!config->skipTransaction && !db->begin())
{
error(tr("Could not start transaction in order to import a data: %1").arg(db->getErrorText()));
return;
@@ -33,20 +33,26 @@ void ImportWorker::run()
if (!prepareTable())
{
- db->rollback();
+ if (!config->skipTransaction)
+ db->rollback();
+
return;
}
if (!importData())
{
- db->rollback();
+ if (!config->skipTransaction)
+ db->rollback();
+
return;
}
- if (!db->commit())
+ if (!config->skipTransaction && !db->commit())
{
error(tr("Could not commit transaction for imported data: %1").arg(db->getErrorText()));
- db->rollback();
+ if (!config->skipTransaction)
+ db->rollback();
+
return;
}
@@ -111,7 +117,8 @@ bool ImportWorker::prepareTable()
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(", ")));
+ Db::Flags flags = config->skipTransaction ? Db::Flag::NO_LOCK : Db::Flag::NONE;
+ SqlQueryPtr result = db->exec(ddl.arg(wrapObjIfNeeded(table, dialect), colDefs.join(", ")), flags);
if (result->isError())
{
error(tr("Could not create table to import to: %1").arg(result->getErrorText()));
@@ -153,6 +160,11 @@ bool ImportWorker::importData()
// Assign argument values
query->setArgs(row.mid(0, colCount));
+
+ // No transactions = already in transaction, skip locking
+ if (config->skipTransaction)
+ query->setFlags(Db::Flag::NO_LOCK);
+
if (!query->execute())
{
if (config->ignoreErrors)
diff --git a/SQLiteStudio3/coreSQLiteStudio/log.cpp b/SQLiteStudio3/coreSQLiteStudio/log.cpp
index d45f1aa..60a22b2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/log.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/log.cpp
@@ -1,6 +1,7 @@
#include "log.h"
#include "db/queryexecutorsteps/queryexecutorstep.h"
#include <QTime>
+#include <QDateTime>
#include <QDebug>
static bool SQL_DEBUG = false;
@@ -17,6 +18,11 @@ void setSqlLoggingFilter(const QString& filter)
SQL_DEBUG_FILTER = filter;
}
+QString getLogDateTime()
+{
+ return QDateTime::currentDateTime().toString("[HH:mm:ss.zzz]");
+}
+
void logSql(Db* db, const QString& str, const QHash<QString,QVariant>& args, Db::Flags flags)
{
if (!SQL_DEBUG)
@@ -44,7 +50,7 @@ void logSql(Db* db, const QString& str, const QList<QVariant>& args, Db::Flags f
qDebug() << QString("SQL %1> %2").arg(db->getName()).arg(str) << "(flags:" << Db::flagsToString(flags) << ")";
int i = 0;
- foreach (const QVariant& arg, args)
+ for (const QVariant& arg : args)
qDebug() << " SQL arg>" << i++ << "=" << arg;
}
@@ -58,7 +64,7 @@ void logExecutorStep(QueryExecutorStep* step)
if (!EXECUTOR_DEBUG)
return;
- qDebug() << "Executing step:" << step->metaObject()->className() << step->objectName();
+ qDebug() << getLogDateTime() << "Executing step:" << step->metaObject()->className() << step->objectName();
}
@@ -67,5 +73,5 @@ void logExecutorAfterStep(const QString& str)
if (!EXECUTOR_DEBUG)
return;
- qDebug() << str;
+ qDebug() << getLogDateTime() << str;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/log.h b/SQLiteStudio3/coreSQLiteStudio/log.h
index 1cf8dc5..0167509 100644
--- a/SQLiteStudio3/coreSQLiteStudio/log.h
+++ b/SQLiteStudio3/coreSQLiteStudio/log.h
@@ -10,6 +10,7 @@
class QueryExecutorStep;
+API_EXPORT QString getLogDateTime();
API_EXPORT void logSql(Db* db, const QString& str, const QHash<QString,QVariant>& args, Db::Flags flags);
API_EXPORT void logSql(Db* db, const QString& str, const QList<QVariant>& args, Db::Flags flags);
API_EXPORT void logExecutorStep(QueryExecutorStep* step);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp
index cc773bb..2c48119 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp
@@ -60,7 +60,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents()
else if (scale.userType() == QVariant::LongLong)
builder.withInteger(scale.toLongLong());
else if (scale.userType() == QVariant::Double)
- builder.withFloat(scale.toDouble());
+ builder.withFloat(scale);
else
builder.withOther(scale.toString());
@@ -72,7 +72,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents()
else if (precision.userType() == QVariant::LongLong)
builder.withInteger(precision.toLongLong());
else if (precision.userType() == QVariant::Double)
- builder.withFloat(precision.toDouble());
+ builder.withFloat(precision);
else
builder.withOther(precision.toString());
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
index 3009b4b..5dc830b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
@@ -124,6 +124,21 @@ void SqliteExpr::initSubExpr(SqliteExpr *expr)
expr->setParent(this);
}
+void SqliteExpr::initRowValue(const QList<SqliteExpr*> &exprList)
+{
+ if (exprList.size() == 1)
+ {
+ initSubExpr(exprList.first());
+ return;
+ }
+
+ mode = SqliteExpr::Mode::ROW_VALUE;
+ this->exprList = exprList;
+
+ for (SqliteExpr* expr : exprList)
+ expr->setParent(this);
+}
+
void SqliteExpr::initBindParam(const QString& value)
{
mode = SqliteExpr::Mode::BIND_PARAM;
@@ -158,7 +173,7 @@ void SqliteExpr::initFunction(const QString& fnName, int distinct, const QList<S
else if (distinct == 2)
allKw = true;
- foreach (SqliteExpr* expr, exprList)
+ for (SqliteExpr* expr : exprList)
expr->setParent(this);
}
@@ -496,6 +511,9 @@ TokenList SqliteExpr::rebuildTokensFromContents()
case SqliteExpr::Mode::IN:
builder.withTokens(rebuildIn());
break;
+ case SqliteExpr::Mode::ROW_VALUE:
+ builder.withParLeft().withStatementList(exprList).withParRight();
+ break;
case SqliteExpr::Mode::EXISTS:
builder.withKeyword("EXISTS").withParLeft().withStatement(select).withParRight();
break;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
index f57004f..4d5bb03 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
@@ -24,6 +24,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
BINARY_OP,
FUNCTION,
SUB_EXPR,
+ ROW_VALUE,
CAST,
COLLATE, // in Sqlite2 exists only in expr of sortlist
LIKE,
@@ -69,6 +70,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
void initNull();
void initCTime(const QString& name);
void initSubExpr(SqliteExpr* expr);
+ void initRowValue(const QList<SqliteExpr*>& exprList);
void initId(const QString& db, const QString& table, const QString& column);
void initId(const QString& table, const QString& column);
void initId(const QString& column);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
index 6be7528..77036f7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
@@ -1,5 +1,6 @@
#include "lexer.h"
#include "keywords.h"
+#include "log.h"
#include "lexer_low_lev.h"
#include "sqlite2_parse.h"
#include "sqlite3_parse.h"
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
index 894afd1..0f9aa91 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
@@ -315,7 +315,7 @@ int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tole
)
{
i += 2;
- while ( charAt(z, i+2).isDigit() )
+ while ( charAt(z, i).isDigit() )
i++;
token->lemonType = v3 ? TK3_FLOAT : TK2_FLOAT;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
index 43cc4a0..3884655 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
@@ -243,602 +243,600 @@ static const YYMINORTYPE yyzerominor = { 0 };
** shifting non-terminals after a reduce.
** yy_default[] Default action for each state.
*/
-#define YY_ACTTAB_COUNT (2285)
+#define YY_ACTTAB_COUNT (2271)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 432, 49, 49, 48, 48, 48, 47, 216, 717, 340,
- /* 10 */ 644, 426, 52, 52, 52, 52, 45, 50, 50, 50,
- /* 20 */ 50, 49, 49, 48, 48, 48, 47, 216, 722, 1027,
- /* 30 */ 1027, 644, 131, 581, 52, 52, 52, 52, 412, 50,
- /* 40 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216,
- /* 50 */ 580, 81, 59, 644, 157, 686, 302, 283, 1027, 1027,
- /* 60 */ 42, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 70 */ 1027, 1027, 564, 1027, 1027, 1027, 1027, 39, 40, 1027,
- /* 80 */ 1027, 1027, 1027, 1027, 41, 432, 529, 386, 717, 596,
- /* 90 */ 595, 281, 4, 378, 717, 631, 426, 643, 609, 423,
- /* 100 */ 13, 134, 688, 430, 563, 610, 484, 691, 332, 280,
- /* 110 */ 715, 714, 565, 566, 643, 690, 689, 688, 235, 507,
- /* 120 */ 61, 321, 611, 412, 48, 48, 48, 47, 216, 122,
- /* 130 */ 243, 213, 247, 60, 1143, 1143, 487, 610, 608, 604,
- /* 140 */ 686, 307, 486, 585, 717, 42, 508, 510, 643, 509,
- /* 150 */ 677, 9, 643, 144, 95, 282, 380, 277, 379, 132,
- /* 160 */ 298, 717, 39, 40, 602, 200, 199, 7, 356, 41,
- /* 170 */ 885, 308, 1135, 275, 249, 717, 18, 4, 885, 1135,
- /* 180 */ 57, 718, 643, 432, 423, 885, 330, 688, 430, 717,
- /* 190 */ 688, 644, 691, 688, 426, 691, 715, 714, 691, 643,
- /* 200 */ 690, 689, 688, 690, 689, 688, 690, 689, 688, 98,
- /* 210 */ 683, 240, 644, 218, 411, 885, 487, 885, 885, 484,
- /* 220 */ 717, 412, 239, 885, 304, 583, 513, 582, 885, 885,
- /* 230 */ 885, 885, 885, 643, 644, 677, 9, 643, 686, 217,
- /* 240 */ 245, 674, 102, 42, 288, 301, 715, 714, 67, 303,
- /* 250 */ 148, 308, 1134, 151, 307, 485, 81, 716, 97, 1134,
- /* 260 */ 39, 40, 552, 715, 714, 772, 130, 41, 947, 377,
- /* 270 */ 374, 373, 448, 47, 216, 4, 947, 715, 714, 335,
- /* 280 */ 643, 683, 423, 947, 607, 688, 430, 372, 449, 448,
- /* 290 */ 691, 715, 714, 305, 265, 146, 268, 643, 690, 689,
- /* 300 */ 688, 288, 68, 678, 692, 255, 363, 259, 360, 693,
- /* 310 */ 1028, 1028, 683, 947, 716, 947, 947, 448, 699, 234,
- /* 320 */ 387, 716, 715, 714, 774, 652, 947, 947, 947, 947,
- /* 330 */ 110, 643, 318, 677, 9, 643, 222, 678, 300, 53,
- /* 340 */ 54, 427, 290, 1028, 1028, 676, 676, 51, 51, 52,
- /* 350 */ 52, 52, 52, 717, 50, 50, 50, 50, 49, 49,
- /* 360 */ 48, 48, 48, 47, 216, 432, 429, 341, 717, 336,
- /* 370 */ 672, 671, 288, 284, 717, 138, 426, 209, 219, 431,
- /* 380 */ 269, 396, 652, 683, 337, 716, 716, 687, 187, 53,
- /* 390 */ 54, 427, 290, 716, 453, 676, 676, 51, 51, 52,
- /* 400 */ 52, 52, 52, 412, 50, 50, 50, 50, 49, 49,
- /* 410 */ 48, 48, 48, 47, 216, 91, 954, 717, 620, 713,
- /* 420 */ 686, 404, 383, 130, 711, 42, 377, 374, 373, 712,
- /* 430 */ 233, 954, 395, 312, 210, 594, 667, 385, 429, 17,
- /* 440 */ 317, 660, 39, 40, 372, 231, 230, 717, 89, 41,
- /* 450 */ 932, 431, 717, 659, 717, 715, 714, 4, 932, 687,
- /* 460 */ 92, 143, 643, 359, 423, 932, 675, 688, 430, 15,
- /* 470 */ 715, 714, 691, 131, 457, 552, 715, 714, 954, 643,
- /* 480 */ 690, 689, 688, 669, 668, 210, 594, 459, 385, 458,
- /* 490 */ 577, 88, 1028, 1028, 14, 932, 673, 932, 932, 55,
- /* 500 */ 576, 679, 43, 369, 38, 402, 36, 382, 932, 1,
- /* 510 */ 932, 932, 642, 643, 635, 677, 9, 643, 662, 715,
- /* 520 */ 714, 53, 54, 427, 290, 1028, 1028, 676, 676, 51,
- /* 530 */ 51, 52, 52, 52, 52, 661, 50, 50, 50, 50,
- /* 540 */ 49, 49, 48, 48, 48, 47, 216, 658, 649, 715,
- /* 550 */ 714, 497, 543, 570, 715, 714, 715, 714, 657, 692,
- /* 560 */ 544, 615, 321, 31, 693, 28, 717, 586, 275, 683,
- /* 570 */ 160, 1028, 1028, 427, 290, 694, 614, 676, 676, 51,
- /* 580 */ 51, 52, 52, 52, 52, 399, 50, 50, 50, 50,
- /* 590 */ 49, 49, 48, 48, 48, 47, 216, 1026, 1026, 81,
- /* 600 */ 53, 54, 427, 290, 1028, 1028, 676, 676, 51, 51,
- /* 610 */ 52, 52, 52, 52, 497, 50, 50, 50, 50, 49,
- /* 620 */ 49, 48, 48, 48, 47, 216, 1026, 1026, 1026, 1026,
- /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 640 */ 717, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 650 */ 1026, 1026, 1028, 1028, 358, 50, 50, 50, 50, 49,
- /* 660 */ 49, 48, 48, 48, 47, 216, 289, 553, 715, 714,
- /* 670 */ 496, 683, 299, 663, 347, 153, 539, 69, 695, 716,
- /* 680 */ 716, 53, 54, 427, 290, 1028, 1028, 676, 676, 51,
- /* 690 */ 51, 52, 52, 52, 52, 1095, 50, 50, 50, 50,
- /* 700 */ 49, 49, 48, 48, 48, 47, 216, 53, 54, 427,
- /* 710 */ 290, 419, 512, 676, 676, 51, 51, 52, 52, 52,
- /* 720 */ 52, 159, 50, 50, 50, 50, 49, 49, 48, 48,
- /* 730 */ 48, 47, 216, 491, 955, 316, 483, 483, 664, 554,
- /* 740 */ 215, 651, 715, 714, 81, 53, 54, 427, 290, 955,
- /* 750 */ 415, 676, 676, 51, 51, 52, 52, 52, 52, 398,
- /* 760 */ 50, 50, 50, 50, 49, 49, 48, 48, 48, 47,
- /* 770 */ 216, 158, 1095, 22, 717, 628, 460, 717, 1080, 717,
- /* 780 */ 648, 1046, 140, 89, 717, 1150, 154, 436, 2, 716,
- /* 790 */ 425, 672, 671, 397, 461, 462, 955, 53, 54, 427,
- /* 800 */ 290, 574, 717, 676, 676, 51, 51, 52, 52, 52,
- /* 810 */ 52, 322, 50, 50, 50, 50, 49, 49, 48, 48,
- /* 820 */ 48, 47, 216, 432, 1109, 81, 206, 205, 204, 53,
- /* 830 */ 54, 427, 290, 717, 426, 676, 676, 51, 51, 52,
- /* 840 */ 52, 52, 52, 345, 50, 50, 50, 50, 49, 49,
- /* 850 */ 48, 48, 48, 47, 216, 598, 716, 667, 601, 463,
- /* 860 */ 667, 412, 32, 717, 658, 90, 13, 895, 721, 669,
- /* 870 */ 668, 610, 725, 435, 81, 657, 715, 714, 686, 715,
- /* 880 */ 714, 715, 714, 42, 529, 273, 715, 714, 611, 350,
- /* 890 */ 529, 451, 89, 678, 13, 634, 634, 339, 637, 610,
- /* 900 */ 39, 40, 650, 610, 715, 714, 717, 41, 1143, 1143,
- /* 910 */ 717, 525, 683, 582, 717, 4, 611, 469, 61, 451,
- /* 920 */ 643, 208, 423, 507, 61, 688, 430, 678, 33, 109,
- /* 930 */ 691, 610, 501, 502, 353, 715, 714, 643, 690, 689,
- /* 940 */ 688, 429, 901, 901, 468, 467, 553, 466, 422, 384,
- /* 950 */ 508, 510, 142, 509, 431, 441, 69, 1143, 1143, 716,
- /* 960 */ 445, 723, 687, 182, 647, 715, 714, 646, 231, 230,
- /* 970 */ 438, 643, 357, 677, 9, 643, 418, 445, 53, 54,
- /* 980 */ 427, 290, 91, 91, 676, 676, 51, 51, 52, 52,
- /* 990 */ 52, 52, 645, 50, 50, 50, 50, 49, 49, 48,
- /* 1000 */ 48, 48, 47, 216, 1035, 445, 669, 668, 715, 714,
- /* 1010 */ 91, 454, 715, 714, 683, 642, 715, 714, 325, 202,
- /* 1020 */ 53, 54, 427, 290, 447, 681, 676, 676, 51, 51,
- /* 1030 */ 52, 52, 52, 52, 640, 50, 50, 50, 50, 49,
- /* 1040 */ 49, 48, 48, 48, 47, 216, 606, 53, 54, 427,
- /* 1050 */ 290, 717, 447, 676, 676, 51, 51, 52, 52, 52,
- /* 1060 */ 52, 460, 50, 50, 50, 50, 49, 49, 48, 48,
- /* 1070 */ 48, 47, 216, 454, 716, 37, 664, 424, 215, 461,
- /* 1080 */ 342, 370, 593, 53, 54, 427, 290, 639, 89, 676,
- /* 1090 */ 676, 51, 51, 52, 52, 52, 52, 32, 50, 50,
- /* 1100 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 414,
- /* 1110 */ 724, 2, 12, 53, 54, 427, 290, 34, 589, 676,
- /* 1120 */ 676, 51, 51, 52, 52, 52, 52, 625, 50, 50,
- /* 1130 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 516,
- /* 1140 */ 716, 538, 30, 91, 343, 667, 140, 136, 572, 53,
- /* 1150 */ 54, 427, 290, 715, 714, 676, 676, 51, 51, 52,
- /* 1160 */ 52, 52, 52, 549, 50, 50, 50, 50, 49, 49,
- /* 1170 */ 48, 48, 48, 47, 216, 91, 717, 234, 387, 53,
- /* 1180 */ 54, 427, 290, 339, 272, 676, 676, 51, 51, 52,
- /* 1190 */ 52, 52, 52, 334, 50, 50, 50, 50, 49, 49,
- /* 1200 */ 48, 48, 48, 47, 216, 533, 8, 518, 697, 87,
- /* 1210 */ 137, 53, 54, 427, 290, 23, 558, 676, 676, 51,
- /* 1220 */ 51, 52, 52, 52, 52, 135, 50, 50, 50, 50,
- /* 1230 */ 49, 49, 48, 48, 48, 47, 216, 81, 1110, 91,
- /* 1240 */ 717, 91, 53, 54, 427, 290, 616, 723, 676, 676,
- /* 1250 */ 51, 51, 52, 52, 52, 52, 605, 50, 50, 50,
- /* 1260 */ 50, 49, 49, 48, 48, 48, 47, 216, 99, 1108,
- /* 1270 */ 391, 505, 389, 492, 53, 54, 427, 290, 715, 714,
- /* 1280 */ 676, 676, 51, 51, 52, 52, 52, 52, 621, 50,
- /* 1290 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216,
- /* 1300 */ 683, 53, 58, 427, 290, 683, 600, 676, 676, 51,
- /* 1310 */ 51, 52, 52, 52, 52, 429, 50, 50, 50, 50,
- /* 1320 */ 49, 49, 48, 48, 48, 47, 216, 432, 431, 717,
- /* 1330 */ 5, 621, 226, 633, 492, 632, 687, 187, 426, 54,
- /* 1340 */ 427, 290, 715, 714, 676, 676, 51, 51, 52, 52,
- /* 1350 */ 52, 52, 717, 50, 50, 50, 50, 49, 49, 48,
- /* 1360 */ 48, 48, 47, 216, 553, 412, 288, 599, 287, 717,
- /* 1370 */ 404, 388, 429, 698, 69, 613, 252, 716, 429, 716,
- /* 1380 */ 405, 716, 686, 30, 209, 431, 209, 42, 626, 317,
- /* 1390 */ 489, 431, 597, 687, 187, 429, 223, 309, 540, 687,
- /* 1400 */ 187, 329, 683, 717, 39, 40, 11, 683, 431, 287,
- /* 1410 */ 432, 41, 621, 654, 91, 592, 687, 92, 556, 4,
- /* 1420 */ 571, 426, 716, 625, 643, 537, 423, 404, 406, 688,
- /* 1430 */ 430, 715, 714, 333, 691, 717, 716, 429, 717, 591,
- /* 1440 */ 717, 643, 690, 689, 688, 107, 317, 652, 412, 531,
- /* 1450 */ 431, 590, 317, 717, 715, 714, 612, 830, 687, 187,
- /* 1460 */ 429, 225, 326, 717, 541, 686, 526, 417, 20, 642,
- /* 1470 */ 42, 715, 714, 431, 683, 643, 717, 677, 9, 643,
- /* 1480 */ 531, 687, 187, 526, 562, 717, 621, 39, 40, 327,
- /* 1490 */ 376, 65, 64, 432, 41, 274, 19, 266, 371, 535,
- /* 1500 */ 535, 267, 4, 271, 426, 715, 714, 643, 421, 423,
- /* 1510 */ 716, 407, 688, 430, 286, 400, 717, 691, 717, 280,
- /* 1520 */ 717, 63, 129, 429, 643, 690, 689, 688, 367, 717,
- /* 1530 */ 603, 412, 520, 534, 317, 515, 431, 715, 714, 156,
- /* 1540 */ 715, 714, 715, 714, 687, 192, 717, 209, 686, 520,
- /* 1550 */ 480, 465, 515, 42, 717, 715, 714, 3, 643, 717,
- /* 1560 */ 677, 9, 643, 717, 716, 715, 714, 480, 138, 125,
- /* 1570 */ 39, 40, 85, 476, 79, 432, 683, 41, 715, 714,
- /* 1580 */ 27, 429, 473, 511, 717, 4, 426, 715, 714, 517,
- /* 1590 */ 643, 532, 423, 408, 431, 688, 430, 642, 26, 719,
- /* 1600 */ 691, 717, 687, 181, 77, 476, 506, 643, 690, 689,
- /* 1610 */ 688, 620, 716, 412, 354, 470, 706, 439, 715, 714,
- /* 1620 */ 715, 714, 715, 714, 261, 288, 717, 473, 221, 504,
- /* 1630 */ 686, 715, 714, 704, 439, 42, 717, 716, 716, 568,
- /* 1640 */ 83, 643, 140, 677, 9, 643, 498, 1036, 715, 714,
- /* 1650 */ 702, 284, 39, 40, 254, 642, 715, 714, 432, 41,
- /* 1660 */ 328, 715, 714, 429, 716, 715, 714, 4, 1038, 426,
- /* 1670 */ 119, 10, 643, 503, 423, 707, 431, 688, 430, 470,
- /* 1680 */ 429, 161, 691, 251, 687, 163, 715, 714, 716, 643,
- /* 1690 */ 690, 689, 688, 431, 717, 429, 412, 152, 479, 456,
- /* 1700 */ 455, 687, 172, 715, 714, 72, 652, 705, 431, 429,
- /* 1710 */ 630, 312, 111, 686, 530, 338, 687, 190, 42, 437,
- /* 1720 */ 716, 622, 431, 643, 96, 677, 9, 643, 715, 714,
- /* 1730 */ 687, 188, 209, 717, 207, 39, 40, 642, 715, 714,
- /* 1740 */ 432, 224, 41, 617, 86, 429, 703, 717, 203, 429,
- /* 1750 */ 4, 426, 320, 720, 642, 643, 150, 423, 431, 716,
- /* 1760 */ 688, 430, 431, 700, 429, 691, 687, 196, 475, 642,
- /* 1770 */ 687, 195, 643, 690, 689, 688, 716, 431, 412, 717,
- /* 1780 */ 319, 710, 717, 642, 522, 687, 197, 709, 708, 258,
- /* 1790 */ 499, 429, 434, 220, 500, 686, 715, 714, 625, 16,
- /* 1800 */ 42, 717, 716, 257, 431, 717, 643, 256, 677, 9,
- /* 1810 */ 643, 716, 687, 201, 717, 351, 716, 39, 40, 642,
- /* 1820 */ 149, 248, 432, 642, 41, 482, 147, 246, 433, 442,
- /* 1830 */ 368, 478, 4, 426, 716, 715, 714, 643, 642, 423,
- /* 1840 */ 716, 717, 715, 430, 82, 701, 429, 691, 685, 715,
- /* 1850 */ 714, 145, 495, 234, 643, 690, 689, 688, 429, 431,
- /* 1860 */ 412, 559, 244, 284, 352, 642, 474, 687, 232, 18,
- /* 1870 */ 242, 431, 401, 429, 471, 716, 716, 686, 295, 687,
- /* 1880 */ 291, 715, 714, 716, 715, 714, 431, 294, 643, 696,
- /* 1890 */ 677, 9, 643, 542, 687, 191, 528, 293, 680, 39,
- /* 1900 */ 40, 717, 716, 715, 714, 429, 41, 715, 714, 429,
- /* 1910 */ 490, 716, 292, 29, 4, 493, 715, 714, 431, 643,
- /* 1920 */ 642, 423, 431, 227, 688, 430, 687, 194, 429, 691,
- /* 1930 */ 687, 193, 642, 429, 477, 429, 643, 690, 689, 688,
- /* 1940 */ 429, 431, 717, 715, 714, 429, 431, 642, 431, 687,
- /* 1950 */ 185, 717, 403, 431, 687, 189, 687, 315, 431, 717,
- /* 1960 */ 216, 687, 314, 429, 409, 684, 687, 313, 717, 429,
- /* 1970 */ 643, 56, 677, 9, 643, 44, 431, 716, 717, 642,
- /* 1980 */ 638, 627, 431, 642, 687, 184, 623, 420, 236, 653,
- /* 1990 */ 687, 171, 323, 716, 716, 641, 229, 66, 214, 716,
- /* 2000 */ 429, 716, 642, 715, 714, 618, 35, 642, 228, 642,
- /* 2010 */ 429, 133, 394, 431, 642, 524, 276, 429, 716, 642,
- /* 2020 */ 429, 687, 170, 431, 716, 716, 636, 569, 416, 716,
- /* 2030 */ 431, 687, 183, 431, 429, 550, 429, 642, 687, 169,
- /* 2040 */ 716, 687, 186, 642, 715, 714, 429, 431, 716, 431,
- /* 2050 */ 141, 429, 108, 715, 714, 687, 168, 687, 167, 431,
- /* 2060 */ 139, 715, 714, 270, 431, 519, 429, 687, 93, 390,
- /* 2070 */ 715, 714, 687, 166, 642, 717, 716, 429, 584, 431,
- /* 2080 */ 715, 714, 481, 429, 642, 717, 381, 687, 164, 717,
- /* 2090 */ 431, 642, 444, 579, 642, 578, 431, 387, 687, 174,
- /* 2100 */ 429, 263, 429, 472, 687, 173, 429, 331, 642, 278,
- /* 2110 */ 642, 574, 575, 431, 716, 431, 429, 361, 464, 431,
- /* 2120 */ 642, 687, 175, 687, 178, 642, 429, 687, 94, 431,
- /* 2130 */ 716, 429, 573, 429, 555, 548, 348, 687, 177, 431,
- /* 2140 */ 642, 547, 546, 545, 431, 429, 431, 687, 176, 716,
- /* 2150 */ 393, 642, 687, 180, 687, 179, 443, 642, 431, 536,
- /* 2160 */ 428, 128, 285, 431, 311, 310, 687, 165, 80, 716,
- /* 2170 */ 264, 687, 70, 716, 642, 716, 642, 715, 714, 366,
- /* 2180 */ 642, 649, 253, 716, 106, 250, 127, 715, 714, 241,
- /* 2190 */ 642, 715, 714, 237, 126, 716, 238, 262, 716, 355,
- /* 2200 */ 642, 212, 716, 25, 124, 642, 716, 642, 527, 716,
- /* 2210 */ 364, 78, 105, 123, 121, 155, 84, 514, 104, 642,
- /* 2220 */ 120, 349, 494, 624, 642, 346, 103, 118, 76, 344,
- /* 2230 */ 117, 75, 116, 115, 74, 73, 114, 521, 324, 113,
- /* 2240 */ 24, 452, 450, 21, 101, 100, 112, 446, 62, 440,
- /* 2250 */ 162, 296, 670, 666, 656, 413, 279, 619, 570, 198,
- /* 2260 */ 629, 375, 523, 260, 362, 306, 6, 71, 682, 665,
- /* 2270 */ 655, 557, 211, 297, 410, 567, 365, 46, 551, 561,
- /* 2280 */ 560, 488, 588, 81, 587,
+ /* 0 */ 432, 565, 566, 717, 50, 50, 49, 49, 49, 48,
+ /* 10 */ 215, 420, 53, 53, 53, 53, 28, 51, 51, 51,
+ /* 20 */ 51, 50, 50, 49, 49, 49, 48, 215, 717, 1026,
+ /* 30 */ 1026, 336, 666, 665, 53, 53, 53, 53, 425, 51,
+ /* 40 */ 51, 51, 51, 50, 50, 49, 49, 49, 48, 215,
+ /* 50 */ 722, 81, 205, 204, 203, 672, 592, 592, 1026, 1026,
+ /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 70 */ 1026, 1026, 639, 1026, 1026, 1026, 1026, 38, 39, 1026,
+ /* 80 */ 1026, 1026, 1026, 1026, 40, 432, 529, 285, 717, 56,
+ /* 90 */ 108, 684, 3, 717, 668, 301, 420, 678, 661, 417,
+ /* 100 */ 716, 67, 688, 430, 552, 715, 714, 691, 130, 331,
+ /* 110 */ 60, 377, 374, 373, 678, 690, 689, 688, 674, 507,
+ /* 120 */ 61, 216, 717, 425, 49, 49, 49, 48, 215, 372,
+ /* 130 */ 715, 714, 212, 131, 1143, 1143, 242, 629, 246, 674,
+ /* 140 */ 672, 421, 685, 48, 215, 41, 508, 510, 678, 509,
+ /* 150 */ 9, 678, 33, 669, 144, 95, 281, 380, 276, 379,
+ /* 160 */ 132, 674, 38, 39, 609, 229, 228, 7, 356, 40,
+ /* 170 */ 885, 717, 403, 717, 274, 484, 685, 3, 885, 529,
+ /* 180 */ 248, 610, 678, 68, 417, 885, 411, 688, 430, 209,
+ /* 190 */ 715, 714, 691, 684, 457, 715, 714, 717, 209, 678,
+ /* 200 */ 690, 689, 688, 663, 662, 432, 453, 459, 460, 458,
+ /* 210 */ 306, 486, 507, 61, 717, 885, 420, 885, 885, 492,
+ /* 220 */ 725, 716, 320, 885, 715, 714, 461, 462, 885, 885,
+ /* 230 */ 885, 885, 885, 678, 297, 9, 678, 772, 669, 508,
+ /* 240 */ 510, 687, 509, 425, 717, 339, 244, 51, 51, 51,
+ /* 250 */ 51, 50, 50, 49, 49, 49, 48, 215, 543, 570,
+ /* 260 */ 672, 357, 713, 283, 688, 41, 544, 711, 448, 691,
+ /* 270 */ 445, 577, 712, 715, 714, 715, 714, 690, 689, 688,
+ /* 280 */ 492, 576, 38, 39, 449, 448, 512, 445, 487, 40,
+ /* 290 */ 947, 463, 661, 389, 497, 603, 602, 3, 947, 715,
+ /* 300 */ 714, 230, 678, 684, 417, 947, 13, 688, 430, 723,
+ /* 310 */ 17, 617, 691, 448, 513, 445, 715, 714, 81, 678,
+ /* 320 */ 690, 689, 688, 307, 1135, 679, 460, 654, 618, 360,
+ /* 330 */ 774, 1135, 1028, 1028, 89, 947, 1, 947, 947, 716,
+ /* 340 */ 110, 595, 716, 617, 461, 342, 715, 714, 947, 947,
+ /* 350 */ 947, 947, 1080, 678, 692, 9, 678, 497, 669, 693,
+ /* 360 */ 717, 54, 55, 427, 295, 1028, 1028, 681, 681, 52,
+ /* 370 */ 52, 53, 53, 53, 53, 717, 51, 51, 51, 51,
+ /* 380 */ 50, 50, 49, 49, 49, 48, 215, 432, 496, 382,
+ /* 390 */ 717, 553, 347, 254, 363, 258, 298, 139, 420, 218,
+ /* 400 */ 539, 69, 286, 287, 716, 684, 143, 231, 390, 343,
+ /* 410 */ 661, 54, 55, 427, 295, 716, 716, 681, 681, 52,
+ /* 420 */ 52, 53, 53, 53, 53, 425, 51, 51, 51, 51,
+ /* 430 */ 50, 50, 49, 49, 49, 48, 215, 684, 954, 608,
+ /* 440 */ 628, 692, 672, 663, 662, 585, 693, 41, 429, 207,
+ /* 450 */ 601, 491, 388, 954, 130, 652, 499, 377, 374, 373,
+ /* 460 */ 500, 431, 715, 714, 38, 39, 651, 199, 198, 673,
+ /* 470 */ 186, 40, 932, 699, 685, 372, 717, 715, 714, 3,
+ /* 480 */ 932, 351, 57, 653, 678, 616, 417, 932, 135, 688,
+ /* 490 */ 430, 59, 688, 157, 691, 717, 680, 691, 340, 1046,
+ /* 500 */ 954, 678, 690, 689, 688, 690, 689, 688, 685, 419,
+ /* 510 */ 666, 665, 724, 2, 1028, 1028, 636, 932, 208, 932,
+ /* 520 */ 932, 43, 386, 141, 294, 615, 611, 264, 284, 267,
+ /* 530 */ 932, 139, 932, 932, 122, 678, 400, 9, 678, 684,
+ /* 540 */ 669, 716, 142, 54, 55, 427, 295, 1028, 1028, 681,
+ /* 550 */ 681, 52, 52, 53, 53, 53, 53, 339, 51, 51,
+ /* 560 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 652,
+ /* 570 */ 91, 299, 483, 483, 628, 717, 661, 717, 715, 714,
+ /* 580 */ 651, 18, 717, 605, 717, 37, 677, 399, 311, 717,
+ /* 590 */ 34, 535, 535, 1028, 1028, 427, 295, 715, 714, 681,
+ /* 600 */ 681, 52, 52, 53, 53, 53, 53, 234, 51, 51,
+ /* 610 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 1027,
+ /* 620 */ 1027, 723, 54, 55, 427, 295, 1028, 1028, 681, 681,
+ /* 630 */ 52, 52, 53, 53, 53, 53, 42, 51, 51, 51,
+ /* 640 */ 51, 50, 50, 49, 49, 49, 48, 215, 1027, 1027,
+ /* 650 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 660 */ 1027, 1027, 717, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 670 */ 1027, 1027, 1027, 1027, 1028, 1028, 718, 715, 714, 715,
+ /* 680 */ 714, 454, 324, 201, 715, 714, 715, 714, 321, 695,
+ /* 690 */ 315, 715, 714, 658, 554, 214, 676, 46, 568, 32,
+ /* 700 */ 81, 88, 675, 54, 55, 427, 295, 1028, 1028, 681,
+ /* 710 */ 681, 52, 52, 53, 53, 53, 53, 1095, 51, 51,
+ /* 720 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 54,
+ /* 730 */ 55, 427, 295, 667, 423, 681, 681, 52, 52, 53,
+ /* 740 */ 53, 53, 53, 454, 51, 51, 51, 51, 50, 50,
+ /* 750 */ 49, 49, 49, 48, 215, 358, 955, 656, 643, 1150,
+ /* 760 */ 154, 436, 2, 487, 715, 714, 350, 54, 55, 427,
+ /* 770 */ 295, 955, 484, 681, 681, 52, 52, 53, 53, 53,
+ /* 780 */ 53, 160, 51, 51, 51, 51, 50, 50, 49, 49,
+ /* 790 */ 49, 48, 215, 600, 1095, 22, 717, 280, 307, 1134,
+ /* 800 */ 34, 717, 501, 502, 353, 629, 1134, 306, 485, 697,
+ /* 810 */ 268, 717, 229, 228, 337, 279, 717, 558, 955, 54,
+ /* 820 */ 55, 427, 295, 716, 717, 681, 681, 52, 52, 53,
+ /* 830 */ 53, 53, 53, 655, 51, 51, 51, 51, 50, 50,
+ /* 840 */ 49, 49, 49, 48, 215, 432, 1109, 81, 717, 225,
+ /* 850 */ 663, 662, 54, 55, 427, 295, 420, 153, 681, 681,
+ /* 860 */ 52, 52, 53, 53, 53, 53, 641, 51, 51, 51,
+ /* 870 */ 51, 50, 50, 49, 49, 49, 48, 215, 586, 89,
+ /* 880 */ 717, 231, 390, 425, 15, 717, 694, 413, 13, 895,
+ /* 890 */ 721, 207, 601, 617, 388, 435, 81, 574, 715, 714,
+ /* 900 */ 672, 272, 553, 715, 714, 41, 529, 537, 89, 14,
+ /* 910 */ 618, 698, 69, 715, 714, 716, 13, 209, 715, 714,
+ /* 920 */ 359, 617, 38, 39, 159, 617, 715, 714, 645, 40,
+ /* 930 */ 1143, 1143, 717, 345, 222, 674, 540, 3, 618, 469,
+ /* 940 */ 61, 285, 678, 625, 417, 473, 716, 688, 430, 45,
+ /* 950 */ 715, 714, 691, 617, 716, 416, 674, 402, 581, 678,
+ /* 960 */ 690, 689, 688, 429, 901, 901, 468, 467, 284, 466,
+ /* 970 */ 629, 81, 706, 633, 495, 580, 431, 526, 674, 1143,
+ /* 980 */ 1143, 716, 715, 714, 673, 92, 716, 715, 714, 91,
+ /* 990 */ 473, 401, 438, 678, 526, 9, 678, 370, 669, 409,
+ /* 1000 */ 54, 55, 427, 295, 89, 505, 681, 681, 52, 52,
+ /* 1010 */ 53, 53, 53, 53, 620, 51, 51, 51, 51, 50,
+ /* 1020 */ 50, 49, 49, 49, 48, 215, 717, 638, 311, 717,
+ /* 1030 */ 406, 658, 418, 214, 715, 714, 90, 642, 131, 334,
+ /* 1040 */ 415, 644, 54, 55, 427, 295, 451, 640, 681, 681,
+ /* 1050 */ 52, 52, 53, 53, 53, 53, 158, 51, 51, 51,
+ /* 1060 */ 51, 50, 50, 49, 49, 49, 48, 215, 369, 54,
+ /* 1070 */ 55, 427, 295, 12, 451, 681, 681, 52, 52, 53,
+ /* 1080 */ 53, 53, 53, 633, 51, 51, 51, 51, 50, 50,
+ /* 1090 */ 49, 49, 49, 48, 215, 36, 716, 8, 209, 54,
+ /* 1100 */ 55, 427, 295, 34, 589, 681, 681, 52, 52, 53,
+ /* 1110 */ 53, 53, 53, 704, 51, 51, 51, 51, 50, 50,
+ /* 1120 */ 49, 49, 49, 48, 215, 87, 138, 320, 715, 714,
+ /* 1130 */ 412, 715, 714, 274, 572, 54, 55, 427, 295, 30,
+ /* 1140 */ 624, 681, 681, 52, 52, 53, 53, 53, 53, 326,
+ /* 1150 */ 51, 51, 51, 51, 50, 50, 49, 49, 49, 48,
+ /* 1160 */ 215, 408, 717, 137, 91, 54, 55, 427, 295, 614,
+ /* 1170 */ 271, 681, 681, 52, 52, 53, 53, 53, 53, 465,
+ /* 1180 */ 51, 51, 51, 51, 50, 50, 49, 49, 49, 48,
+ /* 1190 */ 215, 136, 716, 538, 612, 91, 99, 54, 55, 427,
+ /* 1200 */ 295, 23, 607, 681, 681, 52, 52, 53, 53, 53,
+ /* 1210 */ 53, 395, 51, 51, 51, 51, 50, 50, 49, 49,
+ /* 1220 */ 49, 48, 215, 533, 1110, 516, 717, 91, 54, 55,
+ /* 1230 */ 427, 295, 141, 393, 681, 681, 52, 52, 53, 53,
+ /* 1240 */ 53, 53, 5, 51, 51, 51, 51, 50, 50, 49,
+ /* 1250 */ 49, 49, 48, 215, 717, 1108, 606, 91, 717, 476,
+ /* 1260 */ 54, 55, 427, 295, 715, 714, 681, 681, 52, 52,
+ /* 1270 */ 53, 53, 53, 53, 684, 51, 51, 51, 51, 50,
+ /* 1280 */ 50, 49, 49, 49, 48, 215, 684, 54, 58, 427,
+ /* 1290 */ 295, 476, 717, 681, 681, 52, 52, 53, 53, 53,
+ /* 1300 */ 53, 633, 51, 51, 51, 51, 50, 50, 49, 49,
+ /* 1310 */ 49, 48, 215, 432, 716, 251, 518, 604, 1035, 11,
+ /* 1320 */ 107, 629, 36, 531, 420, 55, 427, 295, 715, 714,
+ /* 1330 */ 681, 681, 52, 52, 53, 53, 53, 53, 224, 51,
+ /* 1340 */ 51, 51, 51, 50, 50, 49, 49, 49, 48, 215,
+ /* 1350 */ 91, 425, 717, 583, 531, 582, 715, 714, 429, 20,
+ /* 1360 */ 715, 714, 429, 684, 429, 619, 384, 352, 672, 562,
+ /* 1370 */ 387, 431, 623, 41, 489, 431, 684, 431, 657, 673,
+ /* 1380 */ 186, 308, 717, 673, 186, 673, 186, 622, 684, 470,
+ /* 1390 */ 38, 39, 599, 597, 715, 714, 432, 40, 719, 683,
+ /* 1400 */ 91, 830, 634, 596, 91, 3, 571, 420, 541, 591,
+ /* 1410 */ 678, 716, 417, 391, 385, 688, 430, 332, 707, 333,
+ /* 1420 */ 691, 525, 429, 582, 717, 65, 429, 678, 690, 689,
+ /* 1430 */ 688, 716, 316, 717, 425, 431, 316, 564, 316, 431,
+ /* 1440 */ 717, 590, 376, 673, 186, 64, 429, 673, 186, 429,
+ /* 1450 */ 273, 672, 19, 470, 715, 714, 41, 371, 378, 431,
+ /* 1460 */ 684, 678, 431, 9, 678, 684, 669, 673, 186, 563,
+ /* 1470 */ 673, 92, 717, 38, 39, 63, 648, 391, 383, 432,
+ /* 1480 */ 40, 391, 392, 129, 715, 714, 717, 279, 3, 270,
+ /* 1490 */ 420, 367, 613, 678, 705, 417, 316, 534, 688, 430,
+ /* 1500 */ 316, 404, 4, 691, 717, 553, 717, 716, 156, 284,
+ /* 1510 */ 678, 690, 689, 688, 441, 69, 325, 425, 716, 630,
+ /* 1520 */ 316, 717, 716, 642, 125, 79, 715, 714, 703, 27,
+ /* 1530 */ 26, 85, 517, 77, 672, 715, 714, 520, 447, 41,
+ /* 1540 */ 717, 716, 715, 714, 678, 549, 9, 678, 717, 669,
+ /* 1550 */ 511, 329, 700, 506, 520, 354, 38, 39, 504, 702,
+ /* 1560 */ 83, 432, 684, 40, 265, 716, 447, 286, 266, 226,
+ /* 1570 */ 141, 3, 420, 556, 715, 714, 678, 716, 417, 696,
+ /* 1580 */ 716, 688, 430, 515, 686, 422, 691, 717, 715, 714,
+ /* 1590 */ 498, 429, 716, 678, 690, 689, 688, 716, 716, 425,
+ /* 1600 */ 515, 480, 335, 439, 431, 253, 715, 714, 715, 714,
+ /* 1610 */ 119, 479, 673, 194, 250, 260, 672, 717, 480, 220,
+ /* 1620 */ 439, 41, 717, 715, 714, 10, 152, 678, 716, 9,
+ /* 1630 */ 678, 161, 669, 1036, 286, 594, 456, 455, 38, 39,
+ /* 1640 */ 72, 111, 715, 714, 432, 40, 635, 716, 646, 429,
+ /* 1650 */ 715, 714, 338, 3, 1038, 420, 437, 209, 678, 716,
+ /* 1660 */ 417, 202, 431, 688, 430, 642, 429, 96, 691, 221,
+ /* 1670 */ 673, 181, 631, 717, 223, 678, 690, 689, 688, 431,
+ /* 1680 */ 717, 429, 425, 206, 86, 716, 717, 673, 185, 715,
+ /* 1690 */ 714, 319, 626, 257, 431, 429, 522, 219, 720, 672,
+ /* 1700 */ 530, 559, 673, 189, 41, 716, 716, 318, 431, 678,
+ /* 1710 */ 710, 9, 678, 717, 669, 646, 673, 187, 490, 715,
+ /* 1720 */ 714, 38, 39, 642, 715, 714, 432, 150, 40, 134,
+ /* 1730 */ 709, 542, 429, 717, 149, 429, 3, 420, 708, 286,
+ /* 1740 */ 642, 678, 716, 417, 434, 431, 688, 430, 431, 286,
+ /* 1750 */ 429, 691, 716, 673, 195, 642, 673, 193, 678, 690,
+ /* 1760 */ 689, 688, 716, 431, 425, 398, 256, 621, 368, 642,
+ /* 1770 */ 255, 673, 196, 147, 328, 715, 714, 429, 716, 716,
+ /* 1780 */ 716, 672, 715, 714, 327, 82, 41, 433, 715, 714,
+ /* 1790 */ 431, 16, 678, 701, 9, 678, 598, 669, 673, 200,
+ /* 1800 */ 503, 532, 145, 38, 39, 215, 642, 232, 432, 642,
+ /* 1810 */ 40, 47, 671, 247, 31, 715, 714, 482, 3, 420,
+ /* 1820 */ 646, 275, 475, 678, 642, 417, 716, 528, 715, 430,
+ /* 1830 */ 646, 569, 429, 691, 716, 715, 714, 550, 231, 291,
+ /* 1840 */ 678, 690, 689, 688, 716, 431, 425, 524, 245, 18,
+ /* 1850 */ 716, 642, 478, 673, 233, 98, 290, 239, 243, 217,
+ /* 1860 */ 429, 716, 474, 672, 717, 241, 35, 405, 238, 471,
+ /* 1870 */ 303, 716, 289, 431, 678, 288, 9, 678, 716, 669,
+ /* 1880 */ 235, 673, 296, 670, 322, 38, 39, 414, 102, 44,
+ /* 1890 */ 717, 300, 40, 716, 407, 302, 148, 66, 227, 151,
+ /* 1900 */ 3, 213, 81, 269, 97, 678, 642, 417, 410, 140,
+ /* 1910 */ 688, 430, 717, 262, 429, 691, 716, 361, 109, 348,
+ /* 1920 */ 394, 390, 678, 690, 689, 688, 716, 431, 584, 429,
+ /* 1930 */ 716, 429, 716, 429, 642, 673, 192, 593, 133, 304,
+ /* 1940 */ 717, 146, 431, 381, 431, 579, 431, 429, 277, 429,
+ /* 1950 */ 673, 184, 673, 172, 673, 163, 678, 578, 9, 678,
+ /* 1960 */ 431, 669, 431, 330, 429, 575, 715, 714, 673, 171,
+ /* 1970 */ 673, 183, 717, 574, 717, 573, 429, 431, 317, 310,
+ /* 1980 */ 548, 555, 443, 547, 546, 673, 188, 429, 642, 431,
+ /* 1990 */ 545, 309, 715, 714, 536, 716, 128, 673, 314, 428,
+ /* 2000 */ 431, 80, 127, 642, 519, 642, 429, 642, 673, 313,
+ /* 2010 */ 366, 429, 716, 341, 715, 714, 717, 106, 429, 431,
+ /* 2020 */ 211, 642, 261, 642, 431, 472, 493, 673, 312, 126,
+ /* 2030 */ 717, 431, 673, 170, 355, 429, 282, 25, 642, 673,
+ /* 2040 */ 93, 429, 715, 714, 124, 527, 429, 263, 431, 716,
+ /* 2050 */ 642, 429, 252, 78, 431, 105, 673, 169, 249, 431,
+ /* 2060 */ 716, 642, 673, 168, 431, 716, 429, 673, 166, 429,
+ /* 2070 */ 84, 716, 673, 165, 715, 714, 715, 714, 717, 431,
+ /* 2080 */ 642, 717, 431, 429, 123, 642, 444, 673, 182, 429,
+ /* 2090 */ 673, 164, 642, 240, 236, 364, 431, 717, 121, 464,
+ /* 2100 */ 429, 717, 431, 477, 673, 190, 716, 716, 717, 642,
+ /* 2110 */ 673, 191, 442, 431, 429, 642, 155, 429, 715, 714,
+ /* 2120 */ 642, 673, 174, 717, 429, 642, 514, 431, 429, 237,
+ /* 2130 */ 431, 429, 715, 714, 429, 673, 173, 431, 673, 175,
+ /* 2140 */ 642, 431, 716, 642, 431, 673, 178, 431, 429, 673,
+ /* 2150 */ 94, 349, 673, 177, 429, 673, 176, 642, 104, 120,
+ /* 2160 */ 494, 431, 103, 642, 429, 346, 118, 431, 344, 673,
+ /* 2170 */ 180, 117, 76, 75, 642, 673, 179, 431, 647, 116,
+ /* 2180 */ 715, 714, 74, 715, 714, 673, 167, 115, 642, 73,
+ /* 2190 */ 114, 642, 481, 643, 323, 113, 397, 24, 642, 715,
+ /* 2200 */ 714, 452, 642, 715, 714, 642, 21, 450, 642, 431,
+ /* 2210 */ 715, 714, 101, 100, 446, 112, 62, 673, 70, 440,
+ /* 2220 */ 162, 292, 642, 664, 552, 715, 714, 570, 642, 632,
+ /* 2230 */ 426, 650, 637, 627, 278, 197, 375, 660, 642, 259,
+ /* 2240 */ 362, 523, 6, 305, 682, 659, 649, 557, 210, 521,
+ /* 2250 */ 29, 365, 424, 293, 71, 567, 561, 560, 488, 588,
+ /* 2260 */ 587, 81, 551, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+ /* 2270 */ 642,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 4, 81, 82, 83, 84, 85, 86, 87, 4, 58,
- /* 10 */ 5, 15, 72, 73, 74, 75, 76, 77, 78, 79,
- /* 20 */ 80, 81, 82, 83, 84, 85, 86, 87, 89, 33,
- /* 30 */ 34, 26, 34, 28, 72, 73, 74, 75, 42, 77,
+ /* 0 */ 4, 110, 111, 4, 81, 82, 83, 84, 85, 86,
+ /* 10 */ 87, 15, 72, 73, 74, 75, 76, 77, 78, 79,
+ /* 20 */ 80, 81, 82, 83, 84, 85, 86, 87, 4, 33,
+ /* 30 */ 34, 194, 195, 196, 72, 73, 74, 75, 42, 77,
/* 40 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- /* 50 */ 45, 55, 96, 48, 98, 59, 93, 104, 62, 63,
+ /* 50 */ 89, 55, 124, 125, 126, 59, 33, 34, 62, 63,
/* 60 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 70 */ 74, 75, 14, 77, 78, 79, 80, 81, 82, 83,
- /* 80 */ 84, 85, 86, 87, 88, 4, 185, 134, 4, 136,
- /* 90 */ 137, 111, 96, 35, 4, 104, 15, 101, 104, 103,
- /* 100 */ 96, 107, 106, 107, 46, 101, 61, 111, 64, 129,
- /* 110 */ 106, 107, 110, 111, 118, 119, 120, 121, 167, 218,
- /* 120 */ 219, 123, 118, 42, 83, 84, 85, 86, 87, 104,
- /* 130 */ 51, 87, 53, 142, 138, 139, 61, 133, 144, 145,
- /* 140 */ 59, 96, 97, 59, 4, 64, 245, 246, 152, 248,
- /* 150 */ 154, 155, 156, 109, 110, 111, 112, 113, 114, 115,
- /* 160 */ 97, 4, 81, 82, 83, 81, 82, 266, 267, 88,
- /* 170 */ 89, 96, 97, 129, 95, 4, 151, 96, 97, 104,
- /* 180 */ 96, 91, 101, 4, 103, 104, 128, 106, 107, 4,
- /* 190 */ 106, 5, 111, 106, 15, 111, 106, 107, 111, 118,
- /* 200 */ 119, 120, 121, 119, 120, 121, 119, 120, 121, 8,
- /* 210 */ 4, 10, 26, 12, 28, 134, 61, 136, 137, 61,
- /* 220 */ 4, 42, 21, 142, 23, 214, 45, 216, 147, 148,
- /* 230 */ 149, 150, 151, 152, 48, 154, 155, 156, 59, 96,
- /* 240 */ 161, 97, 41, 64, 177, 44, 106, 107, 104, 48,
- /* 250 */ 49, 96, 97, 52, 96, 97, 55, 190, 57, 104,
- /* 260 */ 81, 82, 105, 106, 107, 99, 109, 88, 89, 112,
- /* 270 */ 113, 114, 101, 86, 87, 96, 97, 106, 107, 212,
- /* 280 */ 101, 4, 103, 104, 144, 106, 107, 130, 117, 118,
- /* 290 */ 111, 106, 107, 92, 51, 94, 53, 118, 119, 120,
- /* 300 */ 121, 177, 96, 118, 135, 124, 125, 126, 177, 140,
- /* 310 */ 33, 34, 106, 134, 190, 136, 137, 146, 102, 138,
- /* 320 */ 139, 190, 106, 107, 99, 258, 147, 148, 149, 150,
- /* 330 */ 99, 152, 131, 154, 155, 156, 212, 152, 95, 62,
- /* 340 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- /* 350 */ 73, 74, 75, 4, 77, 78, 79, 80, 81, 82,
- /* 360 */ 83, 84, 85, 86, 87, 4, 177, 166, 4, 194,
- /* 370 */ 195, 196, 177, 177, 4, 98, 15, 252, 247, 190,
- /* 380 */ 177, 185, 258, 106, 181, 190, 190, 198, 199, 62,
- /* 390 */ 63, 64, 65, 190, 269, 68, 69, 70, 71, 72,
- /* 400 */ 73, 74, 75, 42, 77, 78, 79, 80, 81, 82,
- /* 410 */ 83, 84, 85, 86, 87, 219, 89, 4, 141, 19,
- /* 420 */ 59, 232, 233, 109, 24, 64, 112, 113, 114, 29,
- /* 430 */ 225, 104, 236, 237, 220, 221, 261, 223, 177, 234,
- /* 440 */ 251, 97, 81, 82, 130, 81, 82, 4, 104, 88,
- /* 450 */ 89, 190, 4, 258, 4, 106, 107, 96, 97, 198,
- /* 460 */ 199, 99, 101, 249, 103, 104, 111, 106, 107, 71,
- /* 470 */ 106, 107, 111, 34, 110, 105, 106, 107, 151, 118,
- /* 480 */ 119, 120, 121, 119, 120, 220, 221, 123, 223, 125,
- /* 490 */ 19, 43, 33, 34, 96, 134, 97, 136, 137, 40,
- /* 500 */ 29, 152, 96, 64, 158, 244, 160, 83, 147, 96,
- /* 510 */ 149, 150, 251, 152, 101, 154, 155, 156, 97, 106,
- /* 520 */ 107, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- /* 530 */ 71, 72, 73, 74, 75, 97, 77, 78, 79, 80,
- /* 540 */ 81, 82, 83, 84, 85, 86, 87, 9, 100, 106,
- /* 550 */ 107, 101, 205, 206, 106, 107, 106, 107, 20, 135,
- /* 560 */ 213, 118, 123, 104, 140, 123, 4, 190, 129, 4,
- /* 570 */ 96, 33, 34, 64, 65, 198, 133, 68, 69, 70,
- /* 580 */ 71, 72, 73, 74, 75, 143, 77, 78, 79, 80,
- /* 590 */ 81, 82, 83, 84, 85, 86, 87, 33, 34, 55,
- /* 600 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 610 */ 72, 73, 74, 75, 164, 77, 78, 79, 80, 81,
- /* 620 */ 82, 83, 84, 85, 86, 87, 62, 63, 64, 65,
- /* 630 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- /* 640 */ 4, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- /* 650 */ 86, 87, 33, 34, 110, 77, 78, 79, 80, 81,
- /* 660 */ 82, 83, 84, 85, 86, 87, 177, 177, 106, 107,
- /* 670 */ 50, 106, 182, 108, 54, 104, 186, 187, 116, 190,
- /* 680 */ 190, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- /* 690 */ 71, 72, 73, 74, 75, 12, 77, 78, 79, 80,
- /* 700 */ 81, 82, 83, 84, 85, 86, 87, 62, 63, 64,
- /* 710 */ 65, 98, 23, 68, 69, 70, 71, 72, 73, 74,
- /* 720 */ 75, 96, 77, 78, 79, 80, 81, 82, 83, 84,
- /* 730 */ 85, 86, 87, 113, 89, 188, 100, 101, 191, 192,
- /* 740 */ 193, 97, 106, 107, 55, 62, 63, 64, 65, 104,
- /* 750 */ 98, 68, 69, 70, 71, 72, 73, 74, 75, 30,
- /* 760 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- /* 770 */ 87, 96, 89, 38, 4, 97, 177, 4, 89, 4,
- /* 780 */ 23, 161, 104, 104, 4, 170, 171, 172, 173, 190,
- /* 790 */ 194, 195, 196, 64, 195, 196, 151, 62, 63, 64,
- /* 800 */ 65, 122, 4, 68, 69, 70, 71, 72, 73, 74,
- /* 810 */ 75, 179, 77, 78, 79, 80, 81, 82, 83, 84,
- /* 820 */ 85, 86, 87, 4, 89, 55, 124, 125, 126, 62,
- /* 830 */ 63, 64, 65, 4, 15, 68, 69, 70, 71, 72,
- /* 840 */ 73, 74, 75, 177, 77, 78, 79, 80, 81, 82,
- /* 850 */ 83, 84, 85, 86, 87, 97, 190, 261, 83, 260,
- /* 860 */ 261, 42, 104, 4, 9, 98, 96, 97, 169, 119,
- /* 870 */ 120, 101, 0, 174, 55, 20, 106, 107, 59, 106,
- /* 880 */ 107, 106, 107, 64, 185, 97, 106, 107, 118, 257,
- /* 890 */ 185, 118, 104, 118, 96, 33, 34, 25, 118, 101,
- /* 900 */ 81, 82, 97, 133, 106, 107, 4, 88, 138, 139,
- /* 910 */ 4, 214, 4, 216, 4, 96, 118, 218, 219, 146,
- /* 920 */ 101, 96, 103, 218, 219, 106, 107, 152, 66, 67,
- /* 930 */ 111, 133, 124, 125, 126, 106, 107, 118, 119, 120,
- /* 940 */ 121, 177, 144, 145, 245, 246, 177, 248, 185, 185,
- /* 950 */ 245, 246, 104, 248, 190, 186, 187, 138, 139, 190,
- /* 960 */ 101, 89, 198, 199, 97, 106, 107, 97, 81, 82,
- /* 970 */ 271, 152, 267, 154, 155, 156, 185, 118, 62, 63,
- /* 980 */ 64, 65, 219, 219, 68, 69, 70, 71, 72, 73,
- /* 990 */ 74, 75, 97, 77, 78, 79, 80, 81, 82, 83,
- /* 1000 */ 84, 85, 86, 87, 158, 146, 119, 120, 106, 107,
- /* 1010 */ 219, 101, 106, 107, 106, 251, 106, 107, 272, 273,
- /* 1020 */ 62, 63, 64, 65, 118, 117, 68, 69, 70, 71,
- /* 1030 */ 72, 73, 74, 75, 97, 77, 78, 79, 80, 81,
- /* 1040 */ 82, 83, 84, 85, 86, 87, 144, 62, 63, 64,
- /* 1050 */ 65, 4, 146, 68, 69, 70, 71, 72, 73, 74,
- /* 1060 */ 75, 177, 77, 78, 79, 80, 81, 82, 83, 84,
- /* 1070 */ 85, 86, 87, 163, 190, 159, 191, 192, 193, 195,
- /* 1080 */ 196, 97, 97, 62, 63, 64, 65, 97, 104, 68,
- /* 1090 */ 69, 70, 71, 72, 73, 74, 75, 104, 77, 78,
- /* 1100 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 185,
- /* 1110 */ 172, 173, 13, 62, 63, 64, 65, 159, 97, 68,
- /* 1120 */ 69, 70, 71, 72, 73, 74, 75, 177, 77, 78,
- /* 1130 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 97,
- /* 1140 */ 190, 185, 104, 219, 260, 261, 104, 97, 97, 62,
- /* 1150 */ 63, 64, 65, 106, 107, 68, 69, 70, 71, 72,
- /* 1160 */ 73, 74, 75, 116, 77, 78, 79, 80, 81, 82,
- /* 1170 */ 83, 84, 85, 86, 87, 219, 4, 138, 139, 62,
- /* 1180 */ 63, 64, 65, 25, 97, 68, 69, 70, 71, 72,
- /* 1190 */ 73, 74, 75, 243, 77, 78, 79, 80, 81, 82,
- /* 1200 */ 83, 84, 85, 86, 87, 185, 13, 185, 197, 96,
- /* 1210 */ 13, 62, 63, 64, 65, 98, 205, 68, 69, 70,
- /* 1220 */ 71, 72, 73, 74, 75, 97, 77, 78, 79, 80,
- /* 1230 */ 81, 82, 83, 84, 85, 86, 87, 55, 89, 219,
- /* 1240 */ 4, 219, 62, 63, 64, 65, 30, 89, 68, 69,
- /* 1250 */ 70, 71, 72, 73, 74, 75, 144, 77, 78, 79,
- /* 1260 */ 80, 81, 82, 83, 84, 85, 86, 87, 99, 89,
- /* 1270 */ 99, 89, 104, 101, 62, 63, 64, 65, 106, 107,
- /* 1280 */ 68, 69, 70, 71, 72, 73, 74, 75, 191, 77,
- /* 1290 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- /* 1300 */ 4, 62, 63, 64, 65, 4, 83, 68, 69, 70,
- /* 1310 */ 71, 72, 73, 74, 75, 177, 77, 78, 79, 80,
- /* 1320 */ 81, 82, 83, 84, 85, 86, 87, 4, 190, 4,
- /* 1330 */ 96, 191, 235, 201, 162, 201, 198, 199, 15, 63,
- /* 1340 */ 64, 65, 106, 107, 68, 69, 70, 71, 72, 73,
- /* 1350 */ 74, 75, 4, 77, 78, 79, 80, 81, 82, 83,
- /* 1360 */ 84, 85, 86, 87, 177, 42, 177, 97, 177, 4,
- /* 1370 */ 232, 233, 177, 186, 187, 235, 97, 190, 177, 190,
- /* 1380 */ 185, 190, 59, 104, 252, 190, 252, 64, 152, 251,
- /* 1390 */ 97, 190, 135, 198, 199, 177, 209, 104, 211, 198,
- /* 1400 */ 199, 212, 106, 4, 81, 82, 96, 106, 190, 177,
- /* 1410 */ 4, 88, 191, 117, 219, 97, 198, 199, 117, 96,
- /* 1420 */ 97, 15, 190, 177, 101, 100, 103, 232, 233, 106,
- /* 1430 */ 107, 106, 107, 232, 111, 4, 190, 177, 4, 97,
- /* 1440 */ 4, 118, 119, 120, 121, 17, 251, 258, 42, 101,
- /* 1450 */ 190, 97, 251, 4, 106, 107, 235, 97, 198, 199,
- /* 1460 */ 177, 38, 244, 4, 104, 59, 101, 276, 96, 251,
- /* 1470 */ 64, 106, 107, 190, 4, 152, 4, 154, 155, 156,
- /* 1480 */ 132, 198, 199, 118, 6, 4, 191, 81, 82, 243,
- /* 1490 */ 38, 96, 96, 4, 88, 97, 96, 177, 38, 100,
- /* 1500 */ 101, 181, 96, 97, 15, 106, 107, 101, 276, 103,
- /* 1510 */ 190, 251, 106, 107, 254, 232, 4, 111, 4, 129,
- /* 1520 */ 4, 96, 115, 177, 118, 119, 120, 121, 64, 4,
- /* 1530 */ 235, 42, 101, 103, 251, 101, 190, 106, 107, 98,
- /* 1540 */ 106, 107, 106, 107, 198, 199, 4, 252, 59, 118,
- /* 1550 */ 101, 177, 118, 64, 4, 106, 107, 12, 152, 4,
- /* 1560 */ 154, 155, 156, 4, 190, 106, 107, 118, 98, 123,
- /* 1570 */ 81, 82, 128, 101, 142, 4, 106, 88, 106, 107,
- /* 1580 */ 71, 177, 101, 89, 4, 96, 15, 106, 107, 139,
- /* 1590 */ 101, 132, 103, 157, 190, 106, 107, 251, 71, 177,
- /* 1600 */ 111, 4, 198, 199, 153, 133, 89, 118, 119, 120,
- /* 1610 */ 121, 141, 190, 42, 22, 101, 91, 101, 106, 107,
- /* 1620 */ 106, 107, 106, 107, 177, 177, 4, 146, 181, 47,
- /* 1630 */ 59, 106, 107, 91, 118, 64, 4, 190, 190, 127,
- /* 1640 */ 39, 152, 104, 154, 155, 156, 39, 158, 106, 107,
- /* 1650 */ 91, 177, 81, 82, 161, 251, 106, 107, 4, 88,
- /* 1660 */ 212, 106, 107, 177, 190, 106, 107, 96, 97, 15,
- /* 1670 */ 123, 96, 101, 118, 103, 177, 190, 106, 107, 165,
- /* 1680 */ 177, 96, 111, 95, 198, 199, 106, 107, 190, 118,
- /* 1690 */ 119, 120, 121, 190, 4, 177, 42, 143, 103, 97,
- /* 1700 */ 97, 198, 199, 106, 107, 95, 258, 177, 190, 177,
- /* 1710 */ 236, 237, 93, 59, 164, 37, 198, 199, 64, 36,
- /* 1720 */ 190, 141, 190, 152, 189, 154, 155, 156, 106, 107,
- /* 1730 */ 198, 199, 252, 4, 238, 81, 82, 251, 106, 107,
- /* 1740 */ 4, 204, 88, 146, 204, 177, 177, 4, 273, 177,
- /* 1750 */ 96, 15, 275, 176, 251, 101, 90, 103, 190, 190,
- /* 1760 */ 106, 107, 190, 177, 177, 111, 198, 199, 146, 251,
- /* 1770 */ 198, 199, 118, 119, 120, 121, 190, 190, 42, 4,
- /* 1780 */ 275, 176, 4, 251, 152, 198, 199, 176, 49, 177,
- /* 1790 */ 7, 177, 176, 181, 11, 59, 106, 107, 177, 104,
- /* 1800 */ 64, 4, 190, 177, 190, 4, 152, 181, 154, 155,
- /* 1810 */ 156, 190, 198, 199, 4, 32, 190, 81, 82, 251,
- /* 1820 */ 178, 177, 4, 251, 88, 181, 178, 177, 183, 100,
- /* 1830 */ 60, 181, 96, 15, 190, 106, 107, 101, 251, 103,
- /* 1840 */ 190, 4, 106, 107, 180, 184, 177, 111, 221, 106,
- /* 1850 */ 107, 56, 162, 138, 118, 119, 120, 121, 177, 190,
- /* 1860 */ 42, 118, 177, 177, 243, 251, 181, 198, 199, 151,
- /* 1870 */ 177, 190, 148, 177, 181, 190, 190, 59, 227, 198,
- /* 1880 */ 199, 106, 107, 190, 106, 107, 190, 228, 152, 177,
- /* 1890 */ 154, 155, 156, 118, 198, 199, 118, 229, 177, 81,
- /* 1900 */ 82, 4, 190, 106, 107, 177, 88, 106, 107, 177,
- /* 1910 */ 100, 190, 230, 149, 96, 118, 106, 107, 190, 101,
- /* 1920 */ 251, 103, 190, 237, 106, 107, 198, 199, 177, 111,
- /* 1930 */ 198, 199, 251, 177, 133, 177, 118, 119, 120, 121,
- /* 1940 */ 177, 190, 4, 106, 107, 177, 190, 251, 190, 198,
- /* 1950 */ 199, 4, 147, 190, 198, 199, 198, 199, 190, 4,
- /* 1960 */ 87, 198, 199, 177, 177, 231, 198, 199, 4, 177,
- /* 1970 */ 152, 150, 154, 155, 156, 252, 190, 190, 4, 251,
- /* 1980 */ 177, 177, 190, 251, 198, 199, 177, 203, 177, 152,
- /* 1990 */ 198, 199, 181, 190, 190, 64, 259, 96, 87, 190,
- /* 2000 */ 177, 190, 251, 106, 107, 177, 158, 251, 255, 251,
- /* 2010 */ 177, 177, 177, 190, 251, 118, 177, 177, 190, 251,
- /* 2020 */ 177, 198, 199, 190, 190, 190, 241, 177, 203, 190,
- /* 2030 */ 190, 198, 199, 190, 177, 177, 177, 251, 198, 199,
- /* 2040 */ 190, 198, 199, 251, 106, 107, 177, 190, 190, 190,
- /* 2050 */ 99, 177, 99, 106, 107, 198, 199, 198, 199, 190,
- /* 2060 */ 241, 106, 107, 177, 190, 118, 177, 198, 199, 223,
- /* 2070 */ 106, 107, 198, 199, 251, 4, 190, 177, 200, 190,
- /* 2080 */ 106, 107, 118, 177, 251, 4, 123, 198, 199, 4,
- /* 2090 */ 190, 251, 118, 200, 251, 208, 190, 139, 198, 199,
- /* 2100 */ 177, 177, 177, 165, 198, 199, 177, 31, 251, 200,
- /* 2110 */ 251, 122, 202, 190, 190, 190, 177, 177, 163, 190,
- /* 2120 */ 251, 198, 199, 198, 199, 251, 177, 198, 199, 190,
- /* 2130 */ 190, 177, 200, 177, 208, 200, 177, 198, 199, 190,
- /* 2140 */ 251, 200, 200, 200, 190, 177, 190, 198, 199, 190,
- /* 2150 */ 177, 251, 198, 199, 198, 199, 177, 251, 190, 241,
- /* 2160 */ 177, 99, 177, 190, 203, 203, 198, 199, 180, 190,
- /* 2170 */ 177, 198, 199, 190, 251, 190, 251, 106, 107, 203,
- /* 2180 */ 251, 100, 177, 190, 180, 177, 99, 106, 107, 177,
- /* 2190 */ 251, 106, 107, 177, 99, 190, 177, 264, 190, 27,
- /* 2200 */ 251, 241, 190, 158, 99, 251, 190, 251, 227, 190,
- /* 2210 */ 265, 215, 62, 99, 99, 250, 96, 215, 180, 251,
- /* 2220 */ 99, 241, 227, 152, 251, 241, 180, 99, 217, 60,
- /* 2230 */ 99, 217, 99, 99, 217, 217, 99, 152, 241, 99,
- /* 2240 */ 268, 18, 241, 268, 99, 99, 99, 241, 270, 16,
- /* 2250 */ 224, 226, 261, 261, 201, 256, 201, 242, 206, 210,
- /* 2260 */ 240, 202, 227, 242, 242, 175, 224, 239, 191, 191,
- /* 2270 */ 191, 191, 262, 222, 216, 207, 263, 253, 211, 207,
- /* 2280 */ 207, 274, 198, 55, 198,
+ /* 70 */ 74, 75, 104, 77, 78, 79, 80, 81, 82, 83,
+ /* 80 */ 84, 85, 86, 87, 88, 4, 185, 177, 4, 66,
+ /* 90 */ 67, 4, 96, 4, 97, 93, 15, 101, 261, 103,
+ /* 100 */ 190, 104, 106, 107, 105, 106, 107, 111, 109, 64,
+ /* 110 */ 142, 112, 113, 114, 118, 119, 120, 121, 5, 218,
+ /* 120 */ 219, 96, 4, 42, 83, 84, 85, 86, 87, 130,
+ /* 130 */ 106, 107, 87, 34, 138, 139, 51, 191, 53, 26,
+ /* 140 */ 59, 28, 118, 86, 87, 64, 245, 246, 152, 248,
+ /* 150 */ 154, 155, 123, 157, 109, 110, 111, 112, 113, 114,
+ /* 160 */ 115, 48, 81, 82, 83, 81, 82, 266, 267, 88,
+ /* 170 */ 89, 4, 143, 4, 129, 61, 152, 96, 97, 185,
+ /* 180 */ 95, 235, 101, 96, 103, 104, 276, 106, 107, 252,
+ /* 190 */ 106, 107, 111, 106, 110, 106, 107, 4, 252, 118,
+ /* 200 */ 119, 120, 121, 119, 120, 4, 269, 123, 177, 125,
+ /* 210 */ 96, 97, 218, 219, 4, 134, 15, 136, 137, 101,
+ /* 220 */ 0, 190, 123, 142, 106, 107, 195, 196, 147, 148,
+ /* 230 */ 149, 150, 151, 152, 97, 154, 155, 99, 157, 245,
+ /* 240 */ 246, 152, 248, 42, 4, 25, 161, 77, 78, 79,
+ /* 250 */ 80, 81, 82, 83, 84, 85, 86, 87, 205, 206,
+ /* 260 */ 59, 267, 19, 104, 106, 64, 213, 24, 101, 111,
+ /* 270 */ 101, 19, 29, 106, 107, 106, 107, 119, 120, 121,
+ /* 280 */ 162, 29, 81, 82, 117, 118, 23, 118, 61, 88,
+ /* 290 */ 89, 260, 261, 134, 101, 136, 137, 96, 97, 106,
+ /* 300 */ 107, 225, 101, 4, 103, 104, 96, 106, 107, 89,
+ /* 310 */ 234, 101, 111, 146, 45, 146, 106, 107, 55, 118,
+ /* 320 */ 119, 120, 121, 96, 97, 23, 177, 97, 118, 177,
+ /* 330 */ 99, 104, 33, 34, 104, 134, 96, 136, 137, 190,
+ /* 340 */ 99, 101, 190, 133, 195, 196, 106, 107, 147, 148,
+ /* 350 */ 149, 150, 89, 152, 135, 154, 155, 164, 157, 140,
+ /* 360 */ 4, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 370 */ 71, 72, 73, 74, 75, 4, 77, 78, 79, 80,
+ /* 380 */ 81, 82, 83, 84, 85, 86, 87, 4, 50, 83,
+ /* 390 */ 4, 177, 54, 124, 125, 126, 182, 98, 15, 247,
+ /* 400 */ 186, 187, 177, 177, 190, 106, 99, 138, 139, 260,
+ /* 410 */ 261, 62, 63, 64, 65, 190, 190, 68, 69, 70,
+ /* 420 */ 71, 72, 73, 74, 75, 42, 77, 78, 79, 80,
+ /* 430 */ 81, 82, 83, 84, 85, 86, 87, 4, 89, 83,
+ /* 440 */ 141, 135, 59, 119, 120, 59, 140, 64, 177, 220,
+ /* 450 */ 221, 113, 223, 104, 109, 9, 7, 112, 113, 114,
+ /* 460 */ 11, 190, 106, 107, 81, 82, 20, 81, 82, 198,
+ /* 470 */ 199, 88, 89, 102, 118, 130, 4, 106, 107, 96,
+ /* 480 */ 97, 32, 96, 258, 101, 104, 103, 104, 107, 106,
+ /* 490 */ 107, 96, 106, 98, 111, 4, 111, 111, 58, 161,
+ /* 500 */ 151, 118, 119, 120, 121, 119, 120, 121, 152, 194,
+ /* 510 */ 195, 196, 172, 173, 33, 34, 97, 134, 96, 136,
+ /* 520 */ 137, 40, 251, 104, 253, 144, 145, 51, 177, 53,
+ /* 530 */ 147, 98, 149, 150, 104, 152, 185, 154, 155, 106,
+ /* 540 */ 157, 190, 104, 62, 63, 64, 65, 66, 67, 68,
+ /* 550 */ 69, 70, 71, 72, 73, 74, 75, 25, 77, 78,
+ /* 560 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 9,
+ /* 570 */ 219, 95, 100, 101, 141, 4, 261, 4, 106, 107,
+ /* 580 */ 20, 151, 4, 97, 4, 104, 97, 236, 237, 4,
+ /* 590 */ 104, 100, 101, 33, 34, 64, 65, 106, 107, 68,
+ /* 600 */ 69, 70, 71, 72, 73, 74, 75, 167, 77, 78,
+ /* 610 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 33,
+ /* 620 */ 34, 89, 62, 63, 64, 65, 66, 67, 68, 69,
+ /* 630 */ 70, 71, 72, 73, 74, 75, 96, 77, 78, 79,
+ /* 640 */ 80, 81, 82, 83, 84, 85, 86, 87, 62, 63,
+ /* 650 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ /* 660 */ 74, 75, 4, 77, 78, 79, 80, 81, 82, 83,
+ /* 670 */ 84, 85, 86, 87, 33, 34, 91, 106, 107, 106,
+ /* 680 */ 107, 101, 272, 273, 106, 107, 106, 107, 179, 116,
+ /* 690 */ 188, 106, 107, 191, 192, 193, 97, 158, 127, 160,
+ /* 700 */ 55, 43, 97, 62, 63, 64, 65, 66, 67, 68,
+ /* 710 */ 69, 70, 71, 72, 73, 74, 75, 12, 77, 78,
+ /* 720 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 62,
+ /* 730 */ 63, 64, 65, 97, 156, 68, 69, 70, 71, 72,
+ /* 740 */ 73, 74, 75, 163, 77, 78, 79, 80, 81, 82,
+ /* 750 */ 83, 84, 85, 86, 87, 110, 89, 97, 100, 170,
+ /* 760 */ 171, 172, 173, 61, 106, 107, 257, 62, 63, 64,
+ /* 770 */ 65, 104, 61, 68, 69, 70, 71, 72, 73, 74,
+ /* 780 */ 75, 96, 77, 78, 79, 80, 81, 82, 83, 84,
+ /* 790 */ 85, 86, 87, 97, 89, 38, 4, 111, 96, 97,
+ /* 800 */ 104, 4, 124, 125, 126, 191, 104, 96, 97, 197,
+ /* 810 */ 177, 4, 81, 82, 181, 129, 4, 205, 151, 62,
+ /* 820 */ 63, 64, 65, 190, 4, 68, 69, 70, 71, 72,
+ /* 830 */ 73, 74, 75, 97, 77, 78, 79, 80, 81, 82,
+ /* 840 */ 83, 84, 85, 86, 87, 4, 89, 55, 4, 235,
+ /* 850 */ 119, 120, 62, 63, 64, 65, 15, 104, 68, 69,
+ /* 860 */ 70, 71, 72, 73, 74, 75, 201, 77, 78, 79,
+ /* 870 */ 80, 81, 82, 83, 84, 85, 86, 87, 190, 104,
+ /* 880 */ 4, 138, 139, 42, 71, 4, 198, 98, 96, 97,
+ /* 890 */ 169, 220, 221, 101, 223, 174, 55, 122, 106, 107,
+ /* 900 */ 59, 97, 177, 106, 107, 64, 185, 100, 104, 96,
+ /* 910 */ 118, 186, 187, 106, 107, 190, 96, 252, 106, 107,
+ /* 920 */ 249, 101, 81, 82, 96, 133, 106, 107, 97, 88,
+ /* 930 */ 138, 139, 4, 177, 209, 5, 211, 96, 118, 218,
+ /* 940 */ 219, 177, 101, 146, 103, 101, 190, 106, 107, 159,
+ /* 950 */ 106, 107, 111, 133, 190, 185, 26, 30, 28, 118,
+ /* 960 */ 119, 120, 121, 177, 144, 145, 245, 246, 177, 248,
+ /* 970 */ 191, 55, 91, 177, 162, 45, 190, 101, 48, 138,
+ /* 980 */ 139, 190, 106, 107, 198, 199, 190, 106, 107, 219,
+ /* 990 */ 146, 64, 271, 152, 118, 154, 155, 97, 157, 98,
+ /* 1000 */ 62, 63, 64, 65, 104, 89, 68, 69, 70, 71,
+ /* 1010 */ 72, 73, 74, 75, 235, 77, 78, 79, 80, 81,
+ /* 1020 */ 82, 83, 84, 85, 86, 87, 4, 236, 237, 4,
+ /* 1030 */ 244, 191, 192, 193, 106, 107, 98, 251, 34, 243,
+ /* 1040 */ 276, 97, 62, 63, 64, 65, 118, 201, 68, 69,
+ /* 1050 */ 70, 71, 72, 73, 74, 75, 96, 77, 78, 79,
+ /* 1060 */ 80, 81, 82, 83, 84, 85, 86, 87, 64, 62,
+ /* 1070 */ 63, 64, 65, 13, 146, 68, 69, 70, 71, 72,
+ /* 1080 */ 73, 74, 75, 177, 77, 78, 79, 80, 81, 82,
+ /* 1090 */ 83, 84, 85, 86, 87, 104, 190, 13, 252, 62,
+ /* 1100 */ 63, 64, 65, 104, 97, 68, 69, 70, 71, 72,
+ /* 1110 */ 73, 74, 75, 91, 77, 78, 79, 80, 81, 82,
+ /* 1120 */ 83, 84, 85, 86, 87, 96, 13, 123, 106, 107,
+ /* 1130 */ 185, 106, 107, 129, 97, 62, 63, 64, 65, 159,
+ /* 1140 */ 30, 68, 69, 70, 71, 72, 73, 74, 75, 243,
+ /* 1150 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ /* 1160 */ 87, 185, 4, 97, 219, 62, 63, 64, 65, 144,
+ /* 1170 */ 97, 68, 69, 70, 71, 72, 73, 74, 75, 177,
+ /* 1180 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ /* 1190 */ 87, 97, 190, 185, 144, 219, 99, 62, 63, 64,
+ /* 1200 */ 65, 98, 83, 68, 69, 70, 71, 72, 73, 74,
+ /* 1210 */ 75, 99, 77, 78, 79, 80, 81, 82, 83, 84,
+ /* 1220 */ 85, 86, 87, 185, 89, 97, 4, 219, 62, 63,
+ /* 1230 */ 64, 65, 104, 104, 68, 69, 70, 71, 72, 73,
+ /* 1240 */ 74, 75, 96, 77, 78, 79, 80, 81, 82, 83,
+ /* 1250 */ 84, 85, 86, 87, 4, 89, 97, 219, 4, 101,
+ /* 1260 */ 62, 63, 64, 65, 106, 107, 68, 69, 70, 71,
+ /* 1270 */ 72, 73, 74, 75, 4, 77, 78, 79, 80, 81,
+ /* 1280 */ 82, 83, 84, 85, 86, 87, 4, 62, 63, 64,
+ /* 1290 */ 65, 133, 4, 68, 69, 70, 71, 72, 73, 74,
+ /* 1300 */ 75, 177, 77, 78, 79, 80, 81, 82, 83, 84,
+ /* 1310 */ 85, 86, 87, 4, 190, 97, 185, 135, 158, 96,
+ /* 1320 */ 17, 191, 104, 101, 15, 63, 64, 65, 106, 107,
+ /* 1330 */ 68, 69, 70, 71, 72, 73, 74, 75, 38, 77,
+ /* 1340 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ /* 1350 */ 219, 42, 4, 214, 132, 216, 106, 107, 177, 96,
+ /* 1360 */ 106, 107, 177, 4, 177, 235, 185, 243, 59, 6,
+ /* 1370 */ 185, 190, 118, 64, 97, 190, 106, 190, 108, 198,
+ /* 1380 */ 199, 104, 4, 198, 199, 198, 199, 133, 106, 101,
+ /* 1390 */ 81, 82, 97, 97, 106, 107, 4, 88, 177, 117,
+ /* 1400 */ 219, 97, 152, 97, 219, 96, 97, 15, 104, 97,
+ /* 1410 */ 101, 190, 103, 232, 233, 106, 107, 232, 177, 232,
+ /* 1420 */ 111, 214, 177, 216, 4, 96, 177, 118, 119, 120,
+ /* 1430 */ 121, 190, 251, 4, 42, 190, 251, 14, 251, 190,
+ /* 1440 */ 4, 97, 38, 198, 199, 96, 177, 198, 199, 177,
+ /* 1450 */ 97, 59, 96, 165, 106, 107, 64, 38, 35, 190,
+ /* 1460 */ 4, 152, 190, 154, 155, 106, 157, 198, 199, 46,
+ /* 1470 */ 198, 199, 4, 81, 82, 96, 117, 232, 233, 4,
+ /* 1480 */ 88, 232, 233, 115, 106, 107, 4, 129, 96, 97,
+ /* 1490 */ 15, 64, 144, 101, 177, 103, 251, 103, 106, 107,
+ /* 1500 */ 251, 232, 12, 111, 4, 177, 4, 190, 98, 177,
+ /* 1510 */ 118, 119, 120, 121, 186, 187, 244, 42, 190, 141,
+ /* 1520 */ 251, 4, 190, 251, 123, 142, 106, 107, 177, 71,
+ /* 1530 */ 71, 128, 139, 153, 59, 106, 107, 101, 118, 64,
+ /* 1540 */ 4, 190, 106, 107, 152, 116, 154, 155, 4, 157,
+ /* 1550 */ 89, 128, 177, 89, 118, 22, 81, 82, 47, 91,
+ /* 1560 */ 39, 4, 106, 88, 177, 190, 146, 177, 181, 237,
+ /* 1570 */ 104, 96, 15, 117, 106, 107, 101, 190, 103, 177,
+ /* 1580 */ 190, 106, 107, 101, 177, 177, 111, 4, 106, 107,
+ /* 1590 */ 39, 177, 190, 118, 119, 120, 121, 190, 190, 42,
+ /* 1600 */ 118, 101, 212, 101, 190, 161, 106, 107, 106, 107,
+ /* 1610 */ 123, 103, 198, 199, 95, 177, 59, 4, 118, 181,
+ /* 1620 */ 118, 64, 4, 106, 107, 96, 143, 152, 190, 154,
+ /* 1630 */ 155, 96, 157, 158, 177, 118, 97, 97, 81, 82,
+ /* 1640 */ 95, 93, 106, 107, 4, 88, 177, 190, 258, 177,
+ /* 1650 */ 106, 107, 37, 96, 97, 15, 36, 252, 101, 190,
+ /* 1660 */ 103, 273, 190, 106, 107, 251, 177, 189, 111, 212,
+ /* 1670 */ 198, 199, 177, 4, 204, 118, 119, 120, 121, 190,
+ /* 1680 */ 4, 177, 42, 238, 204, 190, 4, 198, 199, 106,
+ /* 1690 */ 107, 275, 177, 177, 190, 177, 152, 181, 176, 59,
+ /* 1700 */ 164, 118, 198, 199, 64, 190, 190, 275, 190, 152,
+ /* 1710 */ 176, 154, 155, 4, 157, 258, 198, 199, 100, 106,
+ /* 1720 */ 107, 81, 82, 251, 106, 107, 4, 90, 88, 177,
+ /* 1730 */ 176, 118, 177, 4, 178, 177, 96, 15, 49, 177,
+ /* 1740 */ 251, 101, 190, 103, 176, 190, 106, 107, 190, 177,
+ /* 1750 */ 177, 111, 190, 198, 199, 251, 198, 199, 118, 119,
+ /* 1760 */ 120, 121, 190, 190, 42, 177, 177, 177, 60, 251,
+ /* 1770 */ 181, 198, 199, 178, 212, 106, 107, 177, 190, 190,
+ /* 1780 */ 190, 59, 106, 107, 212, 180, 64, 183, 106, 107,
+ /* 1790 */ 190, 104, 152, 184, 154, 155, 64, 157, 198, 199,
+ /* 1800 */ 118, 132, 56, 81, 82, 87, 251, 254, 4, 251,
+ /* 1810 */ 88, 252, 221, 177, 158, 106, 107, 181, 96, 15,
+ /* 1820 */ 258, 177, 146, 101, 251, 103, 190, 118, 106, 107,
+ /* 1830 */ 258, 177, 177, 111, 190, 106, 107, 177, 138, 227,
+ /* 1840 */ 118, 119, 120, 121, 190, 190, 42, 118, 177, 151,
+ /* 1850 */ 190, 251, 181, 198, 199, 8, 228, 10, 177, 12,
+ /* 1860 */ 177, 190, 181, 59, 4, 177, 149, 148, 21, 181,
+ /* 1870 */ 23, 190, 229, 190, 152, 230, 154, 155, 190, 157,
+ /* 1880 */ 177, 198, 199, 231, 181, 81, 82, 203, 41, 150,
+ /* 1890 */ 4, 44, 88, 190, 147, 48, 49, 96, 259, 52,
+ /* 1900 */ 96, 87, 55, 177, 57, 101, 251, 103, 203, 241,
+ /* 1910 */ 106, 107, 4, 177, 177, 111, 190, 177, 99, 177,
+ /* 1920 */ 223, 139, 118, 119, 120, 121, 190, 190, 200, 177,
+ /* 1930 */ 190, 177, 190, 177, 251, 198, 199, 241, 99, 92,
+ /* 1940 */ 4, 94, 190, 123, 190, 200, 190, 177, 200, 177,
+ /* 1950 */ 198, 199, 198, 199, 198, 199, 152, 208, 154, 155,
+ /* 1960 */ 190, 157, 190, 31, 177, 202, 106, 107, 198, 199,
+ /* 1970 */ 198, 199, 4, 122, 4, 200, 177, 190, 131, 203,
+ /* 1980 */ 200, 208, 177, 200, 200, 198, 199, 177, 251, 190,
+ /* 1990 */ 200, 203, 106, 107, 241, 190, 99, 198, 199, 177,
+ /* 2000 */ 190, 180, 99, 251, 118, 251, 177, 251, 198, 199,
+ /* 2010 */ 203, 177, 190, 166, 106, 107, 4, 180, 177, 190,
+ /* 2020 */ 241, 251, 264, 251, 190, 165, 118, 198, 199, 99,
+ /* 2030 */ 4, 190, 198, 199, 27, 177, 177, 158, 251, 198,
+ /* 2040 */ 199, 177, 106, 107, 99, 227, 177, 177, 190, 190,
+ /* 2050 */ 251, 177, 177, 215, 190, 62, 198, 199, 177, 190,
+ /* 2060 */ 190, 251, 198, 199, 190, 190, 177, 198, 199, 177,
+ /* 2070 */ 96, 190, 198, 199, 106, 107, 106, 107, 4, 190,
+ /* 2080 */ 251, 4, 190, 177, 99, 251, 118, 198, 199, 177,
+ /* 2090 */ 198, 199, 251, 177, 177, 265, 190, 4, 99, 163,
+ /* 2100 */ 177, 4, 190, 133, 198, 199, 190, 190, 4, 251,
+ /* 2110 */ 198, 199, 100, 190, 177, 251, 250, 177, 106, 107,
+ /* 2120 */ 251, 198, 199, 4, 177, 251, 215, 190, 177, 177,
+ /* 2130 */ 190, 177, 106, 107, 177, 198, 199, 190, 198, 199,
+ /* 2140 */ 251, 190, 190, 251, 190, 198, 199, 190, 177, 198,
+ /* 2150 */ 199, 241, 198, 199, 177, 198, 199, 251, 180, 99,
+ /* 2160 */ 227, 190, 180, 251, 177, 241, 99, 190, 60, 198,
+ /* 2170 */ 199, 99, 217, 217, 251, 198, 199, 190, 152, 99,
+ /* 2180 */ 106, 107, 217, 106, 107, 198, 199, 99, 251, 217,
+ /* 2190 */ 99, 251, 118, 100, 241, 99, 177, 268, 251, 106,
+ /* 2200 */ 107, 18, 251, 106, 107, 251, 268, 241, 251, 190,
+ /* 2210 */ 106, 107, 99, 99, 241, 99, 270, 198, 199, 16,
+ /* 2220 */ 224, 226, 251, 261, 105, 106, 107, 206, 251, 152,
+ /* 2230 */ 255, 201, 240, 242, 201, 210, 202, 261, 251, 242,
+ /* 2240 */ 242, 227, 224, 175, 191, 191, 191, 191, 262, 152,
+ /* 2250 */ 256, 263, 216, 222, 239, 207, 207, 207, 274, 198,
+ /* 2260 */ 198, 55, 211, 277, 277, 277, 277, 277, 277, 277,
+ /* 2270 */ 251,
};
-#define YY_SHIFT_USE_DFLT (-81)
+#define YY_SHIFT_USE_DFLT (-110)
#define YY_SHIFT_COUNT (435)
-#define YY_SHIFT_MIN (-80)
-#define YY_SHIFT_MAX (2233)
+#define YY_SHIFT_MIN (-109)
+#define YY_SHIFT_MAX (2206)
static const short yy_shift_ofst[] = {
- /* 0 */ 1158, -4, 201, 1182, 819, 1571, 1571, 689, 361, 1489,
- /* 10 */ 1654, 1654, 1654, 770, 364, 364, 157, 81, 179, 1406,
- /* 20 */ 1323, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- /* 30 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- /* 40 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- /* 50 */ 1654, 1654, 1654, 1654, 1654, 1654, 1736, 1654, 1818, 370,
- /* 60 */ 798, 181, 370, 1837, 1837, 1837, 1837, 887, 887, 565,
- /* 70 */ 277, 4, 1516, 1514, 1481, 1472, 1449, 1434, 1431, 1365,
- /* 80 */ 1348, 448, 1399, 2071, 2071, 2085, 439, 2071, 2081, 1837,
- /* 90 */ 565, 1039, 538, 538, 735, 84, 44, 171, 859, 775,
- /* 100 */ 906, 773, 910, 636, 1172, 5, 450, 5, 443, 413,
- /* 110 */ 185, 1729, 1974, 1955, 1938, 1622, 1801, 1964, 1810, 1797,
- /* 120 */ 1690, 1947, 1632, 1897, 1778, 1555, 1550, 1459, 1325, 1775,
- /* 130 */ 1047, 1512, 1743, 902, 140, 1470, 1470, 1597, 1580, 1470,
- /* 140 */ 1236, 780, 1436, 349, 562, 216, 620, 1559, 1542, 1525,
- /* 150 */ 90, 829, 829, 829, 872, 544, 2228, 2228, 2228, 2228,
- /* 160 */ 2228, -81, -81, 459, 619, 619, 619, 619, 619, 619,
- /* 170 */ 619, 619, 619, 645, 327, 683, 1180, 1149, 1117, 1087,
- /* 180 */ 1051, 1021, 985, 958, 916, 767, 1239, 1212, 1276, 509,
- /* 190 */ 509, -60, -38, -38, -38, -38, 578, -80, 314, 87,
- /* 200 */ 87, 41, 155, 75, 58, 58, 58, -6, 186, 862,
- /* 210 */ -47, 808, 1783, 1301, 1296, 206, 908, 424, 400, 25,
- /* 220 */ 729, 729, 679, 1360, -2, 855, 729, 442, 346, 855,
- /* 230 */ 750, 750, 187, -9, 169, 2233, 2147, 2146, 2145, 2223,
- /* 240 */ 2223, 2140, 2137, 2169, 2134, 2169, 2133, 2169, 2131, 2169,
- /* 250 */ 2128, 1770, 1718, 2121, 1770, 2150, 2120, 2115, 2114, 2150,
- /* 260 */ 1718, 2105, 2045, 2172, 2095, 1770, 2087, 1901, 1770, 2062,
- /* 270 */ 1901, 1963, 1963, 1963, 1963, 2076, 1901, 1963, 1989, 1963,
- /* 280 */ 2076, 1963, 1963, 1958, 1953, 1951, 1848, 1901, 1911, 1901,
- /* 290 */ 1931, 1873, 1821, 1805, 1764, 1724, 1718, 1715, 1795, 1695,
- /* 300 */ 1770, 1739, 1739, 1666, 1666, 1666, 1666, -81, -81, -81,
- /* 310 */ -81, -81, -81, -81, -81, -81, -81, 564, 79, 158,
- /* 320 */ 45, 702, 243, -49, 398, 1293, 1279, 1042, 984, 788,
- /* 330 */ 2, 471, -20, 758, 678, 344, 144, -44, 1683, 1678,
- /* 340 */ 1619, 1610, 1603, 1602, 1595, 1585, 1554, 1588, 1575, 1547,
- /* 350 */ 1493, 1607, 1538, 1601, 1582, 1592, 1517, 1494, 1450, 1451,
- /* 360 */ 1527, 1509, 1444, 1432, 1545, 1446, 1441, 1430, 1464, 1390,
- /* 370 */ 1407, 1425, 1460, 1400, 1396, 1398, 1395, 1452, 1478, 1372,
- /* 380 */ 1423, 1428, 1354, 1342, 1318, 1168, 1257, 1310, 1270, 1234,
- /* 390 */ 1168, 1223, 1171, 1169, 1112, 1128, 1050, 1216, 1197, 1113,
- /* 400 */ 993, 1193, 1038, 1099, 993, 990, 937, 846, 895, 870,
- /* 410 */ 848, 867, 825, 757, 805, 675, 652, 571, 644, 625,
- /* 420 */ 613, 571, 438, 474, 421, 399, 406, 355, 362, 231,
- /* 430 */ 225, 166, 143, 63, -37, -61,
+ /* 0 */ 532, -4, 1847, 841, 916, 1557, 1557, 263, 383, 1475,
+ /* 10 */ 1722, 1640, 1640, 792, 84, 84, -1, 81, 201, 1392,
+ /* 20 */ 1309, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
+ /* 30 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
+ /* 40 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
+ /* 50 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1804, 2119,
+ /* 60 */ 820, 269, 2119, 2026, 2026, 2026, 2026, 731, 731, 1270,
+ /* 70 */ 299, 210, 1502, 1288, 844, 1158, 1500, 1482, 1436, 876,
+ /* 80 */ 1222, 658, 491, 2077, 2077, 2097, 1004, 2077, 2093, 2026,
+ /* 90 */ 1270, 743, 560, 560, 757, 386, 45, 167, 169, 356,
+ /* 100 */ 1420, 928, 580, 472, 118, 930, 193, 930, 240, 1254,
+ /* 110 */ 24, 2012, 1968, 1936, 1860, 1676, 1970, 2074, 1618, 1908,
+ /* 120 */ 812, 1886, 1544, 1729, 1709, 1682, 1536, 1669, 807, 1613,
+ /* 130 */ 1429, 571, 1583, 1517, 1348, 1025, 433, 433, 797, 1378,
+ /* 140 */ 433, 1250, 578, 89, 573, 371, 338, 1468, 1022, 881,
+ /* 150 */ 585, 2104, 2104, 2104, 220, 645, 2206, 2206, 2206, 2206,
+ /* 160 */ 2206, -110, -110, 481, 641, 641, 641, 641, 641, 641,
+ /* 170 */ 641, 641, 641, 667, 349, 705, 1166, 1135, 1103, 1073,
+ /* 180 */ 1037, 1007, 980, 938, 790, 1225, 1198, 1262, 531, 531,
+ /* 190 */ -60, -38, -38, -38, -38, 170, -77, 345, 158, 158,
+ /* 200 */ 41, 702, 227, 1423, 1423, 1423, 381, 159, 113, 23,
+ /* 210 */ 678, 449, 1456, 1359, 87, 1282, 306, 243, 430, 927,
+ /* 220 */ 927, 775, 1304, 99, 446, 927, 29, 446, 324, 324,
+ /* 230 */ -32, 219, 539, 57, 2203, 2116, 2114, 2113, 2183, 2183,
+ /* 240 */ 2096, 2091, 2108, 2088, 2108, 2080, 2108, 2072, 2108, 2067,
+ /* 250 */ 1708, 1698, 2060, 1708, 1993, 1974, 1999, 1985, 1993, 1698,
+ /* 260 */ 1945, 1879, 2007, 1930, 1708, 1903, 1801, 1708, 1897, 1801,
+ /* 270 */ 1820, 1820, 1820, 1820, 1932, 1801, 1820, 1851, 1820, 1932,
+ /* 280 */ 1820, 1820, 1839, 1782, 1819, 1801, 1814, 1801, 1739, 1747,
+ /* 290 */ 1717, 1719, 1698, 1700, 1656, 1732, 1718, 1746, 1687, 1708,
+ /* 300 */ 1689, 1689, 1637, 1637, 1637, 1637, -110, -110, -110, -110,
+ /* 310 */ -110, -110, -110, -110, -110, -110, 586, 85, 711, 114,
+ /* 320 */ -72, 476, 440, 813, 1277, 1218, 1128, 900, 804, -109,
+ /* 330 */ 252, 686, 696, 486, 419, 230, -3, 395, 1620, 1615,
+ /* 340 */ 1548, 1545, 1540, 1539, 1508, 1535, 1483, 1519, 1529, 1487,
+ /* 350 */ 1444, 1551, 1466, 1521, 1511, 1533, 1464, 1461, 1393, 1380,
+ /* 360 */ 1459, 1458, 1403, 1383, 1490, 1401, 1410, 1394, 1427, 1358,
+ /* 370 */ 1368, 1379, 1419, 1356, 1349, 1353, 1329, 1404, 1363, 1263,
+ /* 380 */ 1300, 1303, 1344, 1312, 1306, 1296, 1160, 1295, 1129, 1182,
+ /* 390 */ 1223, 999, 1159, 1146, 1129, 1119, 1112, 1097, 1050, 1094,
+ /* 400 */ 1066, 1110, 1113, 1029, 999, 1084, 991, 1060, 944, 960,
+ /* 410 */ 901, 753, 831, 828, 789, 753, 736, 685, 660, 636,
+ /* 420 */ 540, 605, 599, 489, 438, 422, 302, 385, 307, 241,
+ /* 430 */ 231, 138, 25, 137, 2, -39,
};
-#define YY_REDUCE_USE_DFLT (-100)
-#define YY_REDUCE_COUNT (316)
-#define YY_REDUCE_MIN (-99)
-#define YY_REDUCE_MAX (2090)
+#define YY_REDUCE_USE_DFLT (-164)
+#define YY_REDUCE_COUNT (315)
+#define YY_REDUCE_MIN (-163)
+#define YY_REDUCE_MAX (2068)
static const short yy_reduce_ofst[] = {
- /* 0 */ 615, 1195, 699, -99, 764, 1138, 189, 705, 1283, 1260,
- /* 10 */ 1218, 1201, 261, 196, 884, 599, 1187, 1973, 1968, 1956,
- /* 20 */ 1954, 1949, 1939, 1929, 1925, 1923, 1906, 1900, 1889, 1874,
- /* 30 */ 1869, 1859, 1857, 1843, 1840, 1833, 1823, 1792, 1786, 1768,
- /* 40 */ 1763, 1758, 1756, 1751, 1732, 1728, 1696, 1681, 1669, 1614,
- /* 50 */ 1587, 1572, 1568, 1532, 1518, 1503, 1486, 1404, 1346, 490,
- /* 60 */ 1474, 214, 769, 1448, 1189, 124, 67, 596, 175, 547,
- /* 70 */ 1295, 1686, 1811, 1693, 1685, 1650, 1644, 1626, 1612, 1447,
- /* 80 */ 1320, 1232, 203, 1621, 1246, 131, 347, 950, 1191, 195,
- /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2019, 2016, 1983,
- /* 100 */ 1803, 1803, 2012, 2008, 2005, 697, 1993, 11, 1803, 1985,
- /* 110 */ 1983, 1979, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1959,
- /* 120 */ 1803, 1803, 1940, 1803, 1803, 1924, 1803, 1803, 1803, 1886,
- /* 130 */ 1858, 1850, 1839, 1835, 1834, 1221, 1140, 1828, 1809, 1097,
- /* 140 */ 1804, 1803, 1787, 1721, 1712, 1586, 632, 1569, 1530, 1498,
- /* 150 */ 1422, 1374, 666, 489, 938, 1022, 1020, 956, 924, 791,
- /* 160 */ 763, 746, 205, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
- /* 170 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
- /* 180 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
- /* 190 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 2067, 2086,
- /* 200 */ 2084, 1480, 2007, 2007, 2073, 2072, 2068, 2028, 2058, 2024,
- /* 210 */ 2051, 2013, 2010, 2080, 2079, 2078, 2077, 2042, 2090, 2035,
- /* 220 */ 2022, 2021, 2059, 2049, 2052, 2055, 2015, 2020, 1999, 2053,
- /* 230 */ 1992, 1991, 1480, 2025, 2026, 1978, 1918, 2006, 2001, 1975,
- /* 240 */ 1972, 1997, 1918, 2018, 1918, 2017, 1918, 2014, 1918, 2011,
- /* 250 */ 1984, 2046, 1995, 1980, 2038, 2002, 1965, 1918, 1918, 1996,
- /* 260 */ 1981, 1918, 1945, 1933, 1960, 2004, 1918, 1976, 1988, 1918,
- /* 270 */ 1962, 1943, 1942, 1941, 1935, 1926, 1961, 1932, 1910, 1909,
- /* 280 */ 1887, 1893, 1878, 1846, 1819, 1785, 1753, 1825, 1737, 1784,
- /* 290 */ 1723, 1480, 1734, 1682, 1668, 1659, 1651, 1627, 1661, 1645,
- /* 300 */ 1664, 1648, 1642, 1616, 1611, 1605, 1577, 1505, 1477, 1475,
- /* 310 */ 1540, 1537, 1496, 1480, 1480, 1480, 1535,
+ /* 0 */ 589, 1181, 721, 1185, -99, 1249, 1245, -6, 1269, 271,
+ /* 10 */ 1272, 1187, 786, 351, 149, 31, 725, 2019, 1987, 1977,
+ /* 20 */ 1971, 1957, 1954, 1951, 1947, 1940, 1937, 1923, 1912, 1906,
+ /* 30 */ 1892, 1889, 1874, 1869, 1864, 1858, 1841, 1834, 1829, 1810,
+ /* 40 */ 1799, 1787, 1772, 1770, 1756, 1754, 1752, 1737, 1683, 1655,
+ /* 50 */ 1600, 1573, 1558, 1555, 1518, 1504, 1489, 1472, 1414, 214,
+ /* 60 */ 791, 671, 1328, 1572, 1562, 1457, 1390, 315, -163, 502,
+ /* 70 */ -54, 1332, 1703, 1688, 1681, 1671, 1636, 1589, 1516, 1438,
+ /* 80 */ 1387, 764, 633, 1124, 906, 152, 53, 796, -90, 225,
+ /* 90 */ 840, 229, 846, 665, -63, 688, 612, 1952, 1917, 1822,
+ /* 100 */ 1590, 1590, 1916, 1881, 1875, 1207, 1870, 1139, 1859, 1590,
+ /* 110 */ 1822, 1805, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1742,
+ /* 120 */ 1590, 1590, 1740, 1590, 1590, 1736, 1590, 1590, 1590, 1726,
+ /* 130 */ 1660, 1654, 1644, 1590, 1588, 1552, 1130, 779, 1515, 1495,
+ /* 140 */ 614, 1469, 1408, 1407, 1402, 1375, 509, 1351, 1317, 1241,
+ /* 150 */ 1221, 1002, 756, 226, 340, 1131, 1038, 1008, 976, 945,
+ /* 160 */ 770, 410, 76, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
+ /* 170 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
+ /* 180 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
+ /* 190 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 2051, 2062, 2061,
+ /* 200 */ 1405, 1984, 1984, 2050, 2049, 2048, 2015, 2031, 2036, 1994,
+ /* 210 */ 1988, 1986, 2056, 2055, 2054, 2053, 2018, 2068, 2014, 1998,
+ /* 220 */ 1997, 2034, 2025, 2021, 2033, 1991, 1992, 2030, 1976, 1962,
+ /* 230 */ 1995, 1996, 1975, 1405, 1946, 1753, 1973, 1966, 1938, 1929,
+ /* 240 */ 1953, 1753, 1972, 1753, 1965, 1753, 1956, 1753, 1955, 1924,
+ /* 250 */ 1982, 1933, 1910, 1978, 1911, 1866, 1753, 1753, 1838, 1818,
+ /* 260 */ 1753, 1830, 1758, 1779, 1837, 1753, 1807, 1821, 1753, 1788,
+ /* 270 */ 1790, 1784, 1783, 1780, 1773, 1776, 1775, 1763, 1748, 1749,
+ /* 280 */ 1745, 1728, 1696, 1697, 1668, 1705, 1639, 1684, 1652, 1645,
+ /* 290 */ 1643, 1628, 1612, 1591, 1553, 1559, 1405, 1609, 1604, 1605,
+ /* 300 */ 1595, 1556, 1568, 1554, 1534, 1522, 1432, 1416, 1388, 1480,
+ /* 310 */ 1470, 1445, 1405, 1405, 1405, 1478,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 730, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027,
- /* 10 */ 1027, 1027, 1027, 901, 1149, 1149, 1149, 1027, 1027, 1027,
- /* 20 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 30 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 40 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 50 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1016, 1149,
+ /* 0 */ 730, 1038, 1143, 1026, 1143, 1026, 1026, 1143, 1026, 1026,
+ /* 10 */ 1026, 1026, 1026, 901, 1149, 1149, 1149, 1026, 1026, 1026,
+ /* 20 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 30 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 40 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 50 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 978, 1149,
/* 60 */ 895, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 775,
/* 70 */ 891, 901, 1149, 1149, 1149, 1149, 1149, 963, 950, 941,
/* 80 */ 1149, 1149, 1149, 973, 973, 956, 843, 973, 1149, 1149,
- /* 90 */ 1149, 1149, 929, 929, 1028, 1149, 767, 1113, 1118, 1014,
- /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 902, 1149,
- /* 110 */ 1014, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 90 */ 1149, 1149, 929, 929, 1028, 1149, 767, 1113, 1118, 976,
+ /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 902,
+ /* 110 */ 976, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
/* 120 */ 1149, 964, 957, 951, 942, 1149, 1149, 1149, 1149, 1149,
- /* 130 */ 1149, 1149, 1149, 1149, 1149, 891, 891, 1149, 1149, 891,
- /* 140 */ 1149, 1149, 1149, 1015, 1149, 1149, 764, 1149, 1149, 1149,
+ /* 130 */ 1149, 1149, 1149, 1149, 1149, 1149, 891, 891, 1149, 1149,
+ /* 140 */ 891, 1149, 1149, 977, 1149, 1149, 764, 1149, 1149, 1149,
/* 150 */ 736, 1059, 1149, 1149, 730, 1143, 1143, 1143, 1143, 1143,
- /* 160 */ 1143, 1136, 881, 936, 907, 946, 934, 938, 1039, 1032,
- /* 170 */ 1033, 1031, 937, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
- /* 180 */ 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 989, 1001,
- /* 190 */ 988, 996, 1005, 1000, 997, 991, 990, 992, 1149, 1149,
- /* 200 */ 1149, 993, 1149, 1149, 1149, 1149, 1149, 894, 1149, 1149,
- /* 210 */ 865, 1149, 1087, 1149, 1149, 777, 1149, 879, 739, 945,
- /* 220 */ 919, 919, 810, 834, 799, 929, 919, 909, 1034, 929,
- /* 230 */ 1149, 1149, 994, 892, 879, 1127, 910, 910, 910, 1112,
- /* 240 */ 1112, 910, 910, 856, 910, 856, 910, 856, 910, 856,
- /* 250 */ 910, 761, 945, 910, 761, 847, 969, 910, 910, 847,
- /* 260 */ 945, 910, 1094, 1092, 910, 761, 910, 1047, 761, 910,
- /* 270 */ 1047, 845, 845, 845, 845, 826, 1047, 845, 810, 845,
- /* 280 */ 826, 845, 845, 1149, 910, 910, 1149, 1047, 1053, 1047,
- /* 290 */ 1028, 995, 935, 923, 933, 930, 945, 1149, 758, 829,
- /* 300 */ 761, 747, 747, 735, 735, 735, 735, 1140, 1140, 1136,
- /* 310 */ 812, 812, 897, 1004, 1003, 1002, 786, 1040, 1149, 1149,
- /* 320 */ 1149, 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149,
+ /* 160 */ 1143, 1136, 881, 936, 1032, 1033, 907, 946, 1039, 934,
+ /* 170 */ 938, 937, 1031, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
+ /* 180 */ 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1001, 1013, 1000,
+ /* 190 */ 1008, 1009, 1012, 1003, 1017, 1002, 1004, 1149, 1149, 1149,
+ /* 200 */ 1005, 1149, 1149, 1149, 1149, 1149, 894, 865, 1149, 1149,
+ /* 210 */ 1149, 1087, 1149, 1149, 777, 1149, 879, 739, 945, 919,
+ /* 220 */ 919, 810, 834, 799, 929, 919, 909, 929, 1149, 1149,
+ /* 230 */ 892, 879, 1034, 1006, 1127, 910, 910, 910, 1112, 1112,
+ /* 240 */ 910, 910, 856, 910, 856, 910, 856, 910, 856, 910,
+ /* 250 */ 761, 945, 910, 761, 847, 969, 910, 910, 847, 945,
+ /* 260 */ 910, 1094, 1092, 910, 761, 910, 1047, 761, 910, 1047,
+ /* 270 */ 845, 845, 845, 845, 826, 1047, 845, 810, 845, 826,
+ /* 280 */ 845, 845, 910, 1149, 910, 1047, 1053, 1047, 935, 923,
+ /* 290 */ 933, 930, 945, 1149, 1149, 1028, 1007, 758, 829, 761,
+ /* 300 */ 747, 747, 735, 735, 735, 735, 1140, 1140, 1136, 812,
+ /* 310 */ 812, 897, 1016, 1015, 1014, 786, 1040, 1149, 1149, 1149,
+ /* 320 */ 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, 1149,
/* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 731,
/* 340 */ 1149, 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149,
/* 350 */ 1149, 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149,
/* 360 */ 1149, 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149,
/* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
- /* 380 */ 1149, 1149, 1149, 1149, 1149, 868, 870, 1149, 1149, 1149,
- /* 390 */ 869, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
- /* 400 */ 931, 1149, 924, 1149, 1037, 1149, 1018, 1026, 1149, 1149,
- /* 410 */ 1149, 1149, 1149, 1017, 1149, 1149, 1149, 1145, 1149, 1149,
- /* 420 */ 1149, 1144, 1149, 1149, 1149, 1149, 1149, 1029, 981, 1149,
- /* 430 */ 980, 979, 770, 1149, 745, 1149, 727, 732, 1129, 1126,
+ /* 380 */ 1149, 1149, 1149, 1149, 1149, 980, 1027, 1149, 868, 870,
+ /* 390 */ 1149, 1037, 1149, 1149, 869, 1149, 1149, 1149, 1149, 1149,
+ /* 400 */ 1149, 1149, 1149, 1149, 931, 1149, 924, 1149, 1149, 1149,
+ /* 410 */ 1149, 1145, 1149, 1149, 1149, 1144, 1149, 1149, 1149, 1149,
+ /* 420 */ 1149, 1149, 1149, 1149, 1149, 1149, 979, 1029, 993, 1149,
+ /* 430 */ 992, 991, 770, 1149, 745, 1149, 727, 732, 1129, 1126,
/* 440 */ 1128, 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115,
/* 450 */ 1114, 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070,
/* 460 */ 1069, 1068, 1064, 1062, 1066, 1060, 960, 948, 939, 863,
@@ -854,16 +852,16 @@ static const YYACTIONTYPE yy_default[] = {
/* 560 */ 817, 816, 823, 822, 821, 820, 819, 815, 818, 814,
/* 570 */ 813, 805, 798, 797, 811, 796, 828, 827, 824, 795,
/* 580 */ 851, 850, 849, 846, 794, 793, 792, 791, 790, 789,
- /* 590 */ 987, 986, 1007, 978, 866, 873, 872, 871, 875, 876,
- /* 600 */ 886, 884, 883, 882, 918, 917, 916, 915, 914, 913,
- /* 610 */ 906, 904, 900, 899, 905, 903, 921, 922, 920, 898,
- /* 620 */ 890, 888, 889, 887, 975, 972, 974, 971, 908, 896,
- /* 630 */ 893, 880, 926, 925, 1030, 1019, 1009, 1020, 911, 1008,
- /* 640 */ 1006, 1029, 1026, 1021, 1103, 1025, 1013, 1012, 1011, 1148,
- /* 650 */ 1146, 1147, 1050, 1052, 1055, 1054, 1051, 928, 927, 1049,
- /* 660 */ 1048, 1010, 985, 782, 780, 781, 1075, 1074, 1077, 1076,
- /* 670 */ 1073, 784, 783, 779, 778, 999, 998, 983, 1022, 1023,
- /* 680 */ 982, 1024, 984, 771, 874, 867, 977, 976, 809, 808,
+ /* 590 */ 999, 998, 1030, 1021, 982, 981, 1020, 1018, 1029, 1019,
+ /* 600 */ 990, 866, 873, 872, 871, 875, 876, 886, 884, 883,
+ /* 610 */ 882, 918, 917, 916, 915, 914, 913, 906, 904, 900,
+ /* 620 */ 899, 911, 905, 903, 921, 922, 920, 898, 890, 888,
+ /* 630 */ 889, 887, 975, 972, 974, 971, 908, 896, 893, 880,
+ /* 640 */ 926, 925, 1027, 1148, 1146, 1147, 1050, 1052, 1055, 1054,
+ /* 650 */ 1051, 928, 927, 1049, 1048, 1022, 997, 782, 780, 781,
+ /* 660 */ 1075, 1074, 1077, 1076, 1073, 784, 783, 779, 778, 995,
+ /* 670 */ 874, 867, 989, 988, 1103, 1024, 1025, 987, 983, 1023,
+ /* 680 */ 1011, 1010, 996, 986, 771, 984, 994, 985, 809, 808,
/* 690 */ 807, 806, 878, 877, 788, 802, 787, 785, 765, 760,
/* 700 */ 759, 754, 752, 749, 751, 748, 753, 750, 746, 744,
/* 710 */ 743, 742, 741, 740, 774, 773, 772, 770, 738, 737,
@@ -1130,8 +1128,8 @@ static const char *const yyTokenName[] = {
"DISTINCT", "ID_ALIAS", "FROM", "USING",
"JOIN", "ID_JOIN_OPTS", "ID_IDX", "ORDER",
"GROUP", "HAVING", "LIMIT", "WHERE",
- "ID_COL", "INTO", "VARIABLE", "CASE",
- "ID_FN", "ID_ERR_MSG", "WHEN", "THEN",
+ "ID_COL", "INTO", "CASE", "ID_FN",
+ "ID_ERR_MSG", "VARIABLE", "WHEN", "THEN",
"ELSE", "INDEX", "ID_IDX_NEW", "ID_PRAGMA",
"ID_TRIG_NEW", "ID_TRIG", "ALTER", "ADD",
"error", "cmd", "input", "cmdlist",
@@ -1155,8 +1153,8 @@ static const char *const yyTokenName[] = {
"joinconstr_opt", "dbnm", "indexed_opt", "inscollist",
"sortlist", "delete_stmt", "update_stmt", "setlist",
"insert_stmt", "insert_cmd", "inscollist_opt", "exprx",
- "not_opt", "likeop", "case_operand", "case_exprlist",
- "case_else", "uniqueflag", "idxlist_single", "collate",
+ "not_opt", "case_operand", "case_exprlist", "case_else",
+ "likeop", "uniqueflag", "idxlist_single", "collate",
"nmnum", "number", "trigger_time", "trigger_event",
"foreach_clause", "when_clause", "trigger_cmd_list", "trigger_cmd",
"database_kw_opt", "key_opt", "kwcolumn_opt", "create_vtab",
@@ -1420,58 +1418,58 @@ static const char *const yyRuleName[] = {
/* 248 */ "inscollist ::=",
/* 249 */ "inscollist ::= inscollist COMMA ID_COL",
/* 250 */ "inscollist ::= ID_COL",
- /* 251 */ "exprx ::= term",
- /* 252 */ "exprx ::= CTIME_KW",
- /* 253 */ "exprx ::= LP expr RP",
- /* 254 */ "exprx ::= id",
- /* 255 */ "exprx ::= JOIN_KW",
- /* 256 */ "exprx ::= nm DOT nm",
- /* 257 */ "exprx ::= nm DOT nm DOT nm",
- /* 258 */ "exprx ::= VARIABLE",
- /* 259 */ "exprx ::= expr COLLATE ids",
- /* 260 */ "exprx ::= CAST LP expr AS typetoken RP",
- /* 261 */ "exprx ::= ID LP distinct exprlist RP",
- /* 262 */ "exprx ::= ID LP STAR RP",
- /* 263 */ "exprx ::= expr AND expr",
- /* 264 */ "exprx ::= expr OR expr",
- /* 265 */ "exprx ::= expr LT|GT|GE|LE expr",
- /* 266 */ "exprx ::= expr EQ|NE expr",
- /* 267 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
- /* 268 */ "exprx ::= expr PLUS|MINUS expr",
- /* 269 */ "exprx ::= expr STAR|SLASH|REM expr",
- /* 270 */ "exprx ::= expr CONCAT expr",
- /* 271 */ "exprx ::= expr not_opt likeop expr",
- /* 272 */ "exprx ::= expr not_opt likeop expr ESCAPE expr",
- /* 273 */ "exprx ::= expr ISNULL|NOTNULL",
- /* 274 */ "exprx ::= expr NOT NULL",
- /* 275 */ "exprx ::= expr IS not_opt expr",
- /* 276 */ "exprx ::= NOT expr",
- /* 277 */ "exprx ::= BITNOT expr",
- /* 278 */ "exprx ::= MINUS expr",
- /* 279 */ "exprx ::= PLUS expr",
- /* 280 */ "exprx ::= expr not_opt BETWEEN expr AND expr",
- /* 281 */ "exprx ::= expr not_opt IN LP exprlist RP",
- /* 282 */ "exprx ::= LP select RP",
- /* 283 */ "exprx ::= expr not_opt IN LP select RP",
- /* 284 */ "exprx ::= expr not_opt IN nm dbnm",
- /* 285 */ "exprx ::= EXISTS LP select RP",
- /* 286 */ "exprx ::= CASE case_operand case_exprlist case_else END",
- /* 287 */ "exprx ::= RAISE LP IGNORE RP",
- /* 288 */ "exprx ::= RAISE LP raisetype COMMA nm RP",
- /* 289 */ "exprx ::= nm DOT",
- /* 290 */ "exprx ::= nm DOT nm DOT",
- /* 291 */ "exprx ::= expr not_opt BETWEEN expr AND",
- /* 292 */ "exprx ::= CASE case_operand case_exprlist case_else",
- /* 293 */ "exprx ::= expr not_opt IN LP exprlist",
- /* 294 */ "exprx ::= expr not_opt IN ID_DB",
- /* 295 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
- /* 296 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
- /* 297 */ "exprx ::= nm DOT ID_TAB|ID_COL",
- /* 298 */ "exprx ::= nm DOT nm DOT ID_COL",
- /* 299 */ "exprx ::= expr COLLATE ID_COLLATE",
- /* 300 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
- /* 301 */ "expr ::= exprx",
- /* 302 */ "expr ::=",
+ /* 251 */ "exprx ::= nm DOT",
+ /* 252 */ "exprx ::= nm DOT nm DOT",
+ /* 253 */ "exprx ::= expr not_opt BETWEEN expr AND",
+ /* 254 */ "exprx ::= CASE case_operand case_exprlist case_else",
+ /* 255 */ "exprx ::= expr not_opt IN LP exprlist",
+ /* 256 */ "exprx ::= expr not_opt IN ID_DB",
+ /* 257 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
+ /* 258 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
+ /* 259 */ "exprx ::= nm DOT ID_TAB|ID_COL",
+ /* 260 */ "exprx ::= nm DOT nm DOT ID_COL",
+ /* 261 */ "exprx ::= expr COLLATE ID_COLLATE",
+ /* 262 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
+ /* 263 */ "exprx ::= term",
+ /* 264 */ "exprx ::= CTIME_KW",
+ /* 265 */ "exprx ::= LP nexprlist RP",
+ /* 266 */ "exprx ::= id",
+ /* 267 */ "exprx ::= JOIN_KW",
+ /* 268 */ "exprx ::= nm DOT nm",
+ /* 269 */ "exprx ::= nm DOT nm DOT nm",
+ /* 270 */ "exprx ::= VARIABLE",
+ /* 271 */ "exprx ::= expr COLLATE ids",
+ /* 272 */ "exprx ::= CAST LP expr AS typetoken RP",
+ /* 273 */ "exprx ::= ID LP distinct exprlist RP",
+ /* 274 */ "exprx ::= ID LP STAR RP",
+ /* 275 */ "exprx ::= expr AND expr",
+ /* 276 */ "exprx ::= expr OR expr",
+ /* 277 */ "exprx ::= expr LT|GT|GE|LE expr",
+ /* 278 */ "exprx ::= expr EQ|NE expr",
+ /* 279 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
+ /* 280 */ "exprx ::= expr PLUS|MINUS expr",
+ /* 281 */ "exprx ::= expr STAR|SLASH|REM expr",
+ /* 282 */ "exprx ::= expr CONCAT expr",
+ /* 283 */ "exprx ::= expr not_opt likeop expr",
+ /* 284 */ "exprx ::= expr not_opt likeop expr ESCAPE expr",
+ /* 285 */ "exprx ::= expr ISNULL|NOTNULL",
+ /* 286 */ "exprx ::= expr NOT NULL",
+ /* 287 */ "exprx ::= expr IS not_opt expr",
+ /* 288 */ "exprx ::= NOT expr",
+ /* 289 */ "exprx ::= BITNOT expr",
+ /* 290 */ "exprx ::= MINUS expr",
+ /* 291 */ "exprx ::= PLUS expr",
+ /* 292 */ "exprx ::= expr not_opt BETWEEN expr AND expr",
+ /* 293 */ "exprx ::= expr not_opt IN LP exprlist RP",
+ /* 294 */ "exprx ::= LP select RP",
+ /* 295 */ "exprx ::= expr not_opt IN LP select RP",
+ /* 296 */ "exprx ::= expr not_opt IN nm dbnm",
+ /* 297 */ "exprx ::= EXISTS LP select RP",
+ /* 298 */ "exprx ::= CASE case_operand case_exprlist case_else END",
+ /* 299 */ "exprx ::= RAISE LP IGNORE RP",
+ /* 300 */ "exprx ::= RAISE LP raisetype COMMA nm RP",
+ /* 301 */ "expr ::=",
+ /* 302 */ "expr ::= exprx",
/* 303 */ "not_opt ::=",
/* 304 */ "not_opt ::= NOT",
/* 305 */ "likeop ::= LIKE_KW|MATCH",
@@ -1788,8 +1786,8 @@ delete (yypminor->yy4);
case 227: /* where_opt */
case 229: /* having_opt */
case 251: /* exprx */
- case 254: /* case_operand */
- case 256: /* case_else */
+ case 253: /* case_operand */
+ case 255: /* case_else */
{
delete (yypminor->yy490);
}
@@ -1879,7 +1877,7 @@ delete (yypminor->yy373);
case 228: /* groupby_opt */
case 232: /* nexprlist */
case 233: /* exprlist */
- case 255: /* case_exprlist */
+ case 254: /* case_exprlist */
{
delete (yypminor->yy13);
}
@@ -1942,7 +1940,7 @@ delete (yypminor->yy381);
delete (yypminor->yy250);
}
break;
- case 253: /* likeop */
+ case 256: /* likeop */
{
delete (yypminor->yy374);
}
@@ -2477,6 +2475,18 @@ static const struct {
{ 243, 0 },
{ 243, 3 },
{ 243, 1 },
+ { 251, 2 },
+ { 251, 4 },
+ { 251, 5 },
+ { 251, 4 },
+ { 251, 5 },
+ { 251, 4 },
+ { 251, 6 },
+ { 251, 1 },
+ { 251, 3 },
+ { 251, 5 },
+ { 251, 3 },
+ { 251, 6 },
{ 251, 1 },
{ 251, 1 },
{ 251, 3 },
@@ -2515,29 +2525,17 @@ static const struct {
{ 251, 5 },
{ 251, 4 },
{ 251, 6 },
- { 251, 2 },
- { 251, 4 },
- { 251, 5 },
- { 251, 4 },
- { 251, 5 },
- { 251, 4 },
- { 251, 6 },
- { 251, 1 },
- { 251, 3 },
- { 251, 5 },
- { 251, 3 },
- { 251, 6 },
- { 199, 1 },
{ 199, 0 },
+ { 199, 1 },
{ 252, 0 },
{ 252, 1 },
+ { 256, 1 },
+ { 254, 5 },
+ { 254, 4 },
+ { 255, 2 },
+ { 255, 0 },
{ 253, 1 },
- { 255, 5 },
- { 255, 4 },
- { 256, 2 },
- { 256, 0 },
- { 254, 1 },
- { 254, 0 },
+ { 253, 0 },
{ 233, 1 },
{ 233, 0 },
{ 232, 3 },
@@ -3382,7 +3380,7 @@ static void yy_reduce(
case 179: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==179);
case 180: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==180);
case 181: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==181);
- case 297: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==297);
+ case 259: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==259);
case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==318);
case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==319);
case 332: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==332);
@@ -3818,7 +3816,7 @@ static void yy_reduce(
break;
case 209: /* having_opt ::= HAVING expr */
case 221: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==221);
- case 301: /* expr ::= exprx */ yytestcase(yyruleno==301);
+ case 302: /* expr ::= exprx */ yytestcase(yyruleno==302);
case 308: /* case_else ::= ELSE expr */ yytestcase(yyruleno==308);
case 310: /* case_operand ::= exprx */ yytestcase(yyruleno==310);
case 370: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==370);
@@ -4112,7 +4110,76 @@ static void yy_reduce(
{ yy_destructor(yypParser,243,&yymsp[-2].minor);
}
break;
- case 251: /* exprx ::= term */
+ case 251: /* exprx ::= nm DOT */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ yygotominor.yy490->initId(*(yymsp[-1].minor.yy211), QString::null, QString::null);
+ delete yymsp[-1].minor.yy211;
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.>");
+ }
+ break;
+ case 252: /* exprx ::= nm DOT nm DOT */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ yygotominor.yy490->initId(*(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy211), QString::null);
+ delete yymsp[-3].minor.yy211;
+ delete yymsp[-1].minor.yy211;
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.nm.>");
+ }
+ break;
+ case 253: /* exprx ::= expr not_opt BETWEEN expr AND */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ delete yymsp[-3].minor.yy237;
+ delete yymsp[-4].minor.yy490;
+ delete yymsp[-1].minor.yy490;
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt BETWEEN expr AND>");
+ }
+ break;
+ case 254: /* exprx ::= CASE case_operand case_exprlist case_else */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ delete yymsp[-1].minor.yy13;
+ delete yymsp[-2].minor.yy490;
+ delete yymsp[0].minor.yy490;
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: CASE operand exprlist else>");
+ }
+ break;
+ case 255: /* exprx ::= expr not_opt IN LP exprlist */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ delete yymsp[-3].minor.yy237;
+ delete yymsp[0].minor.yy13;
+ delete yymsp[-4].minor.yy490;
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt IN LP exprlist>");
+ }
+ break;
+ case 256: /* exprx ::= expr not_opt IN ID_DB */
+{ yy_destructor(yypParser,199,&yymsp[-3].minor);
+}
+ break;
+ case 257: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
+ case 258: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==258);
+{ yy_destructor(yypParser,199,&yymsp[-5].minor);
+ yy_destructor(yypParser,177,&yymsp[-2].minor);
+}
+ break;
+ case 260: /* exprx ::= nm DOT nm DOT ID_COL */
+{ yy_destructor(yypParser,177,&yymsp[-4].minor);
+ yy_destructor(yypParser,177,&yymsp[-2].minor);
+}
+ break;
+ case 261: /* exprx ::= expr COLLATE ID_COLLATE */
+ case 262: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==262);
+{ yy_destructor(yypParser,199,&yymsp[-2].minor);
+}
+ break;
+ case 263: /* exprx ::= term */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initLiteral(*(yymsp[0].minor.yy21));
@@ -4120,21 +4187,22 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 252: /* exprx ::= CTIME_KW */
+ case 264: /* exprx ::= CTIME_KW */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initCTime(yymsp[0].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 253: /* exprx ::= LP expr RP */
+ case 265: /* exprx ::= LP nexprlist RP */
{
yygotominor.yy490 = new SqliteExpr();
- yygotominor.yy490->initSubExpr(yymsp[-1].minor.yy490);
+ yygotominor.yy490->initRowValue(*(yymsp[-1].minor.yy13));
+ delete yymsp[-1].minor.yy13;
objectForTokens = yygotominor.yy490;
}
break;
- case 254: /* exprx ::= id */
+ case 266: /* exprx ::= id */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initId(*(yymsp[0].minor.yy211));
@@ -4142,14 +4210,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 255: /* exprx ::= JOIN_KW */
+ case 267: /* exprx ::= JOIN_KW */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initId(yymsp[0].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 256: /* exprx ::= nm DOT nm */
+ case 268: /* exprx ::= nm DOT nm */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initId(*(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy211));
@@ -4158,7 +4226,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 257: /* exprx ::= nm DOT nm DOT nm */
+ case 269: /* exprx ::= nm DOT nm DOT nm */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initId(*(yymsp[-4].minor.yy211), *(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy211));
@@ -4168,14 +4236,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 258: /* exprx ::= VARIABLE */
+ case 270: /* exprx ::= VARIABLE */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initBindParam(yymsp[0].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 259: /* exprx ::= expr COLLATE ids */
+ case 271: /* exprx ::= expr COLLATE ids */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initCollate(yymsp[-2].minor.yy490, *(yymsp[0].minor.yy211));
@@ -4183,14 +4251,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 260: /* exprx ::= CAST LP expr AS typetoken RP */
+ case 272: /* exprx ::= CAST LP expr AS typetoken RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initCast(yymsp[-3].minor.yy490, yymsp[-1].minor.yy299);
objectForTokens = yygotominor.yy490;
}
break;
- case 261: /* exprx ::= ID LP distinct exprlist RP */
+ case 273: /* exprx ::= ID LP distinct exprlist RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initFunction(yymsp[-4].minor.yy0->value, *(yymsp[-2].minor.yy376), *(yymsp[-1].minor.yy13));
@@ -4199,28 +4267,28 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 262: /* exprx ::= ID LP STAR RP */
+ case 274: /* exprx ::= ID LP STAR RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initFunction(yymsp[-3].minor.yy0->value, true);
objectForTokens = yygotominor.yy490;
}
break;
- case 263: /* exprx ::= expr AND expr */
- case 264: /* exprx ::= expr OR expr */ yytestcase(yyruleno==264);
- case 265: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==265);
- case 266: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==266);
- case 267: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==267);
- case 268: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==268);
- case 269: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==269);
- case 270: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==270);
+ case 275: /* exprx ::= expr AND expr */
+ case 276: /* exprx ::= expr OR expr */ yytestcase(yyruleno==276);
+ case 277: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==277);
+ case 278: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==278);
+ case 279: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==279);
+ case 280: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==280);
+ case 281: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==281);
+ case 282: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==282);
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initBinOp(yymsp[-2].minor.yy490, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy490);
objectForTokens = yygotominor.yy490;
}
break;
- case 271: /* exprx ::= expr not_opt likeop expr */
+ case 283: /* exprx ::= expr not_opt likeop expr */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initLike(yymsp[-3].minor.yy490, *(yymsp[-2].minor.yy237), *(yymsp[-1].minor.yy374), yymsp[0].minor.yy490);
@@ -4229,7 +4297,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 272: /* exprx ::= expr not_opt likeop expr ESCAPE expr */
+ case 284: /* exprx ::= expr not_opt likeop expr ESCAPE expr */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initLike(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), *(yymsp[-3].minor.yy374), yymsp[-2].minor.yy490, yymsp[0].minor.yy490);
@@ -4238,21 +4306,21 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 273: /* exprx ::= expr ISNULL|NOTNULL */
+ case 285: /* exprx ::= expr ISNULL|NOTNULL */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initNull(yymsp[-1].minor.yy490, yymsp[0].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 274: /* exprx ::= expr NOT NULL */
+ case 286: /* exprx ::= expr NOT NULL */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initNull(yymsp[-2].minor.yy490, "NOT NULL");
objectForTokens = yygotominor.yy490;
}
break;
- case 275: /* exprx ::= expr IS not_opt expr */
+ case 287: /* exprx ::= expr IS not_opt expr */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initIs(yymsp[-3].minor.yy490, *(yymsp[-1].minor.yy237), yymsp[0].minor.yy490);
@@ -4260,21 +4328,21 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 276: /* exprx ::= NOT expr */
+ case 288: /* exprx ::= NOT expr */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initUnaryOp(yymsp[0].minor.yy490, yymsp[-1].minor.yy0->value);
}
break;
- case 277: /* exprx ::= BITNOT expr */
- case 279: /* exprx ::= PLUS expr */ yytestcase(yyruleno==279);
+ case 289: /* exprx ::= BITNOT expr */
+ case 291: /* exprx ::= PLUS expr */ yytestcase(yyruleno==291);
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initUnaryOp(yymsp[0].minor.yy490, yymsp[-1].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 278: /* exprx ::= MINUS expr */
+ case 290: /* exprx ::= MINUS expr */
{
yygotominor.yy490 = new SqliteExpr();
if (yymsp[0].minor.yy490->mode == SqliteExpr::Mode::LITERAL_VALUE &&
@@ -4291,7 +4359,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 280: /* exprx ::= expr not_opt BETWEEN expr AND expr */
+ case 292: /* exprx ::= expr not_opt BETWEEN expr AND expr */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initBetween(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), yymsp[-2].minor.yy490, yymsp[0].minor.yy490);
@@ -4299,7 +4367,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 281: /* exprx ::= expr not_opt IN LP exprlist RP */
+ case 293: /* exprx ::= expr not_opt IN LP exprlist RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initIn(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), *(yymsp[-1].minor.yy13));
@@ -4308,14 +4376,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 282: /* exprx ::= LP select RP */
+ case 294: /* exprx ::= LP select RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initSubSelect(yymsp[-1].minor.yy123);
objectForTokens = yygotominor.yy490;
}
break;
- case 283: /* exprx ::= expr not_opt IN LP select RP */
+ case 295: /* exprx ::= expr not_opt IN LP select RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initIn(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), yymsp[-1].minor.yy123);
@@ -4323,7 +4391,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 284: /* exprx ::= expr not_opt IN nm dbnm */
+ case 296: /* exprx ::= expr not_opt IN nm dbnm */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initIn(yymsp[-4].minor.yy490, *(yymsp[-3].minor.yy237), *(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211));
@@ -4332,14 +4400,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 285: /* exprx ::= EXISTS LP select RP */
+ case 297: /* exprx ::= EXISTS LP select RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initExists(yymsp[-1].minor.yy123);
objectForTokens = yygotominor.yy490;
}
break;
- case 286: /* exprx ::= CASE case_operand case_exprlist case_else END */
+ case 298: /* exprx ::= CASE case_operand case_exprlist case_else END */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initCase(yymsp[-3].minor.yy490, *(yymsp[-2].minor.yy13), yymsp[-1].minor.yy490);
@@ -4347,14 +4415,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 287: /* exprx ::= RAISE LP IGNORE RP */
+ case 299: /* exprx ::= RAISE LP IGNORE RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initRaise(yymsp[-1].minor.yy0->value);
objectForTokens = yygotominor.yy490;
}
break;
- case 288: /* exprx ::= RAISE LP raisetype COMMA nm RP */
+ case 300: /* exprx ::= RAISE LP raisetype COMMA nm RP */
{
yygotominor.yy490 = new SqliteExpr();
yygotominor.yy490->initRaise(yymsp[-3].minor.yy0->value, *(yymsp[-1].minor.yy211));
@@ -4362,80 +4430,11 @@ static void yy_reduce(
objectForTokens = yygotominor.yy490;
}
break;
- case 289: /* exprx ::= nm DOT */
+ case 301: /* expr ::= */
{
yygotominor.yy490 = new SqliteExpr();
- yygotominor.yy490->initId(*(yymsp[-1].minor.yy211), QString::null, QString::null);
- delete yymsp[-1].minor.yy211;
objectForTokens = yygotominor.yy490;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
- break;
- case 290: /* exprx ::= nm DOT nm DOT */
-{
- yygotominor.yy490 = new SqliteExpr();
- yygotominor.yy490->initId(*(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy211), QString::null);
- delete yymsp[-3].minor.yy211;
- delete yymsp[-1].minor.yy211;
- objectForTokens = yygotominor.yy490;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
- break;
- case 291: /* exprx ::= expr not_opt BETWEEN expr AND */
-{
- yygotominor.yy490 = new SqliteExpr();
- delete yymsp[-3].minor.yy237;
- delete yymsp[-4].minor.yy490;
- delete yymsp[-1].minor.yy490;
- objectForTokens = yygotominor.yy490;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
- break;
- case 292: /* exprx ::= CASE case_operand case_exprlist case_else */
-{
- yygotominor.yy490 = new SqliteExpr();
- delete yymsp[-1].minor.yy13;
- delete yymsp[-2].minor.yy490;
- delete yymsp[0].minor.yy490;
- objectForTokens = yygotominor.yy490;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
- break;
- case 293: /* exprx ::= expr not_opt IN LP exprlist */
-{
- yygotominor.yy490 = new SqliteExpr();
- delete yymsp[-3].minor.yy237;
- delete yymsp[0].minor.yy13;
- delete yymsp[-4].minor.yy490;
- objectForTokens = yygotominor.yy490;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
- break;
- case 294: /* exprx ::= expr not_opt IN ID_DB */
-{ yy_destructor(yypParser,199,&yymsp[-3].minor);
-}
- break;
- case 295: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
- case 296: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==296);
-{ yy_destructor(yypParser,199,&yymsp[-5].minor);
- yy_destructor(yypParser,177,&yymsp[-2].minor);
-}
- break;
- case 298: /* exprx ::= nm DOT nm DOT ID_COL */
-{ yy_destructor(yypParser,177,&yymsp[-4].minor);
- yy_destructor(yypParser,177,&yymsp[-2].minor);
-}
- break;
- case 299: /* exprx ::= expr COLLATE ID_COLLATE */
- case 300: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==300);
-{ yy_destructor(yypParser,199,&yymsp[-2].minor);
-}
- break;
- case 302: /* expr ::= */
-{
- yygotominor.yy490 = new SqliteExpr();
- objectForTokens = yygotominor.yy490;
- parserContext->minorErrorAfterLastToken("Syntax error");
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
}
break;
case 305: /* likeop ::= LIKE_KW|MATCH */
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
index d18c81c..92a40ca 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
@@ -151,10 +151,10 @@
#define TK3_WHERE 151
#define TK3_ID_COL 152
#define TK3_INTO 153
-#define TK3_VARIABLE 154
-#define TK3_CASE 155
-#define TK3_ID_FN 156
-#define TK3_ID_ERR_MSG 157
+#define TK3_CASE 154
+#define TK3_ID_FN 155
+#define TK3_ID_ERR_MSG 156
+#define TK3_VARIABLE 157
#define TK3_WHEN 158
#define TK3_THEN 159
#define TK3_ELSE 160
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
index 932e965..0dc9154 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
@@ -1455,6 +1455,70 @@ inscollist ::= ID_COL. {}
%type exprx {SqliteExpr*}
%destructor exprx {delete $$;}
+
+exprx(X) ::= nm(N1) DOT. {
+ X = new SqliteExpr();
+ X->initId(*(N1), QString::null, QString::null);
+ delete N1;
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.>");
+ }
+exprx(X) ::= nm(N1) DOT nm(N2) DOT. {
+ X = new SqliteExpr();
+ X->initId(*(N1), *(N2), QString::null);
+ delete N1;
+ delete N2;
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.nm.>");
+ }
+exprx(X) ::= expr(E1) not_opt(N) BETWEEN
+ expr(E2) AND. {
+ X = new SqliteExpr();
+ delete N;
+ delete E1;
+ delete E2;
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt BETWEEN expr AND>");
+ }
+exprx(X) ::= CASE case_operand(O)
+ case_exprlist(L)
+ case_else(E). {
+ X = new SqliteExpr();
+ delete L;
+ delete O;
+ delete E;
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: CASE operand exprlist else>");
+ }
+exprx(X) ::= expr(E) not_opt(N) IN LP
+ exprlist(L). [IN] {
+ X = new SqliteExpr();
+ delete N;
+ delete L;
+ delete E;
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt IN LP exprlist>");
+ }
+/*
+This introduces premature reduce for LP-expr and causes bug #2755
+exprx(X) ::= LP expr(E). {
+ X = new SqliteExpr();
+ X->initSubExpr(E);
+ objectForTokens = X;
+ parserContext->minorErrorBeforeNextToken("Syntax error <exprx: LP expr>");
+ }
+*/
+exprx ::= expr not_opt IN ID_DB. [IN] {}
+exprx ::= expr not_opt IN nm DOT
+ ID_TAB. [IN] {}
+exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN. {}
+exprx ::= nm DOT ID_TAB|ID_COL. {}
+exprx ::= nm DOT nm DOT ID_COL. {}
+exprx ::= expr COLLATE ID_COLLATE. {}
+exprx ::= RAISE LP raisetype COMMA
+ ID_ERR_MSG RP. {}
+
+
exprx(X) ::= term(T). {
X = new SqliteExpr();
X->initLiteral(*(T));
@@ -1466,11 +1530,19 @@ exprx(X) ::= CTIME_KW(K). {
X->initCTime(K->value);
objectForTokens = X;
}
+exprx(X) ::= LP nexprlist(L) RP. {
+ X = new SqliteExpr();
+ X->initRowValue(*(L));
+ delete L;
+ objectForTokens = X;
+ }
+/*
exprx(X) ::= LP expr(E) RP. {
X = new SqliteExpr();
X->initSubExpr(E);
objectForTokens = X;
}
+*/
exprx(X) ::= id(N). {
X = new SqliteExpr();
X->initId(*(N));
@@ -1697,77 +1769,15 @@ exprx(X) ::= RAISE LP raisetype(R) COMMA
delete N;
objectForTokens = X;
}
-exprx(X) ::= nm(N1) DOT. {
- X = new SqliteExpr();
- X->initId(*(N1), QString::null, QString::null);
- delete N1;
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-exprx(X) ::= nm(N1) DOT nm(N2) DOT. {
- X = new SqliteExpr();
- X->initId(*(N1), *(N2), QString::null);
- delete N1;
- delete N2;
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-exprx(X) ::= expr(E1) not_opt(N) BETWEEN
- expr(E2) AND. {
- X = new SqliteExpr();
- delete N;
- delete E1;
- delete E2;
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-exprx(X) ::= CASE case_operand(O)
- case_exprlist(L)
- case_else(E). {
- X = new SqliteExpr();
- delete L;
- delete O;
- delete E;
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-exprx(X) ::= expr(E) not_opt(N) IN LP
- exprlist(L). [IN] {
- X = new SqliteExpr();
- delete N;
- delete L;
- delete E;
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-/*
-This introduces premature reduce for LP-expr and causes bug #2755
-exprx(X) ::= LP expr(E). {
- X = new SqliteExpr();
- X->initSubExpr(E);
- objectForTokens = X;
- parserContext->minorErrorBeforeNextToken("Syntax error");
- }
-*/
-
-exprx ::= expr not_opt IN ID_DB. [IN] {}
-exprx ::= expr not_opt IN nm DOT
- ID_TAB. [IN] {}
-exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN. {}
-exprx ::= nm DOT ID_TAB|ID_COL. {}
-exprx ::= nm DOT nm DOT ID_COL. {}
-exprx ::= expr COLLATE ID_COLLATE. {}
-exprx ::= RAISE LP raisetype COMMA
- ID_ERR_MSG RP. {}
%type expr {SqliteExpr*}
%destructor expr {delete $$;}
-expr(X) ::= exprx(E). {X = E;}
expr(X) ::= . {
X = new SqliteExpr();
objectForTokens = X;
- parserContext->minorErrorAfterLastToken("Syntax error");
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
}
+expr(X) ::= exprx(E). {X = E;}
%type not_opt {bool*}
%destructor not_opt {delete $$;}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
index a97b765..a0a0e3a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
@@ -72,7 +72,7 @@ StatementTokenBuilder& StatementTokenBuilder::withComment(const QString& value)
return with(Token::COMMENT, value);
}
-StatementTokenBuilder& StatementTokenBuilder::withFloat(double value)
+StatementTokenBuilder& StatementTokenBuilder::withFloat(const QVariant& value)
{
return with(Token::FLOAT, doubleToString(value));
}
@@ -163,7 +163,7 @@ StatementTokenBuilder& StatementTokenBuilder::withLiteralValue(const QVariant& v
value.toDouble(&ok);
if (ok)
{
- withFloat(value.toDouble());
+ withFloat(value);
return *this;
}
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h
index 3d748ad..14856e7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h
@@ -131,7 +131,7 @@ class StatementTokenBuilder
* @param value Value for the token.
* @return Reference to the builder for the further building.
*/
- StatementTokenBuilder& withFloat(double value);
+ StatementTokenBuilder& withFloat(const QVariant &value);
/**
* @brief Add integer numer token.
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
index f2102c3..5396edd 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
@@ -490,6 +490,16 @@ TokenList TokenList::filter(Token::Type type) const
return filtered;
}
+TokenList TokenList::filterOut(Token::Type type) const
+{
+ TokenList filtered;
+ foreach (TokenPtr token, *this)
+ if (token->type != type)
+ filtered << token;
+
+ return filtered;
+}
+
TokenList TokenList::filterWhiteSpaces(bool includeComments) const
{
TokenList filtered;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.h b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
index aecc7ec..aeb505c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
@@ -626,6 +626,7 @@ class API_EXPORT TokenList : public QList<TokenPtr>
* @return List of tokens from this list matching given \p type.
*/
TokenList filter(Token::Type type) const;
+ TokenList filterOut(Token::Type type) const;
/**
* @brief Creates list of tokens from this list, letting through only tokens that are not a whitespace.
diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginsqlite3.cpp b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginsqlite3.cpp
index 0f16098..7228752 100644
--- a/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginsqlite3.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginsqlite3.cpp
@@ -38,7 +38,7 @@ QList<DbPluginOption> DbPluginSqlite3::getOptionsList() const
QString DbPluginSqlite3::generateDbName(const QVariant& baseValue)
{
QFileInfo file(baseValue.toString());
- return file.baseName();
+ return file.completeBaseName();
}
bool DbPluginSqlite3::checkIfDbServedByPlugin(Db* db) const
diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.cpp b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.cpp
new file mode 100644
index 0000000..b890c26
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.cpp
@@ -0,0 +1,33 @@
+#include "dbpluginstdfilebase.h"
+#include "common/unused.h"
+#include "db/sqlquery.h"
+#include <QFileInfo>
+
+Db *DbPluginStdFileBase::getInstance(const QString &name, const QString &path, const QHash<QString, QVariant> &options, QString *errorMessage)
+{
+ UNUSED(errorMessage);
+
+ Db* db = newInstance(name, path, options);
+
+ if (!db->openForProbing())
+ {
+ delete db;
+ return nullptr;
+ }
+
+ SqlQueryPtr results = db->exec("SELECT * FROM sqlite_master");
+ if (results->isError())
+ {
+ delete db;
+ return nullptr;
+ }
+
+ db->closeQuiet();
+ return db;
+}
+
+QString DbPluginStdFileBase::generateDbName(const QVariant &baseValue)
+{
+ QFileInfo file(baseValue.toString());
+ return file.completeBaseName();
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.h b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.h
new file mode 100644
index 0000000..6ea1c47
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/plugins/dbpluginstdfilebase.h
@@ -0,0 +1,16 @@
+#ifndef DBPLUGINSTDFILEBASE_H
+#define DBPLUGINSTDFILEBASE_H
+
+#include "dbplugin.h"
+
+class API_EXPORT DbPluginStdFileBase : public DbPlugin
+{
+ public:
+ Db *getInstance(const QString &name, const QString &path, const QHash<QString, QVariant> &options, QString *errorMessage);
+ QString generateDbName(const QVariant &baseValue);
+
+ protected:
+ virtual Db *newInstance(const QString &name, const QString &path, const QHash<QString, QVariant> &options) = 0;
+};
+
+#endif // DBPLUGINSTDFILEBASE_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/uiconfiguredplugin.h b/SQLiteStudio3/coreSQLiteStudio/plugins/uiconfiguredplugin.h
index c9af8e0..1426117 100644
--- a/SQLiteStudio3/coreSQLiteStudio/plugins/uiconfiguredplugin.h
+++ b/SQLiteStudio3/coreSQLiteStudio/plugins/uiconfiguredplugin.h
@@ -39,7 +39,7 @@ class API_EXPORT UiConfiguredPlugin
*
* This is called just after the config dialog was open and all its contents are already initialized.
* This is a good moment to connect to plugin's CfgMain configuration object to listen for changes,
- * so all uncommited (yet) configuration changes can be reflected by this plugin.
+ * so all uncommitted (yet) configuration changes can be reflected by this plugin.
*/
virtual void configDialogOpen() = 0;
diff --git a/SQLiteStudio3/coreSQLiteStudio/querygenerator.cpp b/SQLiteStudio3/coreSQLiteStudio/querygenerator.cpp
index 4e2d9b6..c10e8f7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/querygenerator.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/querygenerator.cpp
@@ -87,7 +87,10 @@ QString QueryGenerator::generateUpdateOfTable(Db* db, const QString& database, c
// If no values were given, we simply use column names as values everywhere
if (values.isEmpty())
- return tplWithWhere.arg(target, commonColumnStr, commonColumnStr);
+ {
+ QString conditionStr = commonUpdateCols.join(" AND ");
+ return tplWithWhere.arg(target, commonColumnStr, conditionStr);
+ }
// If values were given, then they will be used in WHERE clause
QStringList valueCols = values.keys();
@@ -126,7 +129,7 @@ QString QueryGenerator::generateDeleteFromTable(Db* db, const QString& database,
conditionCols << conditionColTpl.arg(wrapObjIfNeeded(col, dialect), wrapString(col));
// Put it to comma spearated string
- QString conditionStr = conditionCols.join(", ");
+ QString conditionStr = conditionCols.join(" AND ");
return tplWithWhere.arg(target, conditionStr);
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.cpp b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.cpp
index 0044c3e..48fe541 100644
--- a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.cpp
@@ -1,5 +1,6 @@
#include "schemaresolver.h"
#include "db/db.h"
+#include "db/sqlresultsrow.h"
#include "parser/parsererror.h"
#include "parser/ast/sqlitecreatetable.h"
#include "parser/ast/sqlitecreateindex.h"
@@ -303,6 +304,67 @@ QString SchemaResolver::getObjectDdl(const QString &database, const QString &nam
return cache.object(key, true)->toString();
// Get the DDL
+ QString resStr = getObjectDdlWithSimpleName(dbName, lowerName, targetTable, type);
+ if (resStr.isNull())
+ resStr = getObjectDdlWithDifficultName(dbName, lowerName, targetTable, type);
+
+ // If the DDL doesn't have semicolon at the end (usually the case), add it.
+ if (!resStr.trimmed().endsWith(";"))
+ resStr += ";";
+
+ if (useCache)
+ cache.insert(key, new QVariant(resStr));
+
+ // Return the DDL
+ return resStr;
+}
+
+QString SchemaResolver::getObjectDdlWithDifficultName(const QString &dbName, const QString &lowerName, QString targetTable, SchemaResolver::ObjectType type)
+{
+ //
+ // Slower, but works with Russian names, etc, because "string lower" is done only at Qt level, not at SQLite level.
+ //
+ QString typeStr = objectTypeToString(type);
+ SqlQueryPtr queryResults;
+ if (type != ANY)
+ {
+ queryResults = db->exec(QString(
+ "SELECT name, sql FROM %1.%4 WHERE type = '%3';").arg(dbName, typeStr, targetTable),
+ dbFlags
+ );
+
+ }
+ else
+ {
+ queryResults = db->exec(QString(
+ "SELECT name, sql FROM %1.%3;").arg(dbName, targetTable),
+ dbFlags
+ );
+ }
+
+ // Validate query results
+ if (queryResults->isError())
+ {
+ qDebug() << "Could not get object's DDL:" << dbName << "." << lowerName << ", details:" << queryResults->getErrorText();
+ return QString::null;
+ }
+
+ // The DDL string
+ SqlResultsRowPtr row;
+ while (queryResults->hasNext())
+ {
+ row = queryResults->next();
+ if (row->value("name").toString().toLower() != lowerName)
+ continue;
+
+ return row->value("sql").toString();
+ }
+ return QString();
+}
+
+QString SchemaResolver::getObjectDdlWithSimpleName(const QString &dbName, const QString &lowerName, QString targetTable, SchemaResolver::ObjectType type)
+{
+ QString typeStr = objectTypeToString(type);
QVariant results;
SqlQueryPtr queryResults;
if (type != ANY)
@@ -324,23 +386,13 @@ QString SchemaResolver::getObjectDdl(const QString &database, const QString &nam
// Validate query results
if (queryResults->isError())
{
- qDebug() << "Could not get object's DDL:" << dbName << "." << name << ", details:" << queryResults->getErrorText();
+ qDebug() << "Could not get object's DDL:" << dbName << "." << lowerName << ", details:" << queryResults->getErrorText();
return QString::null;
}
// The DDL string
results = queryResults->getSingleCell();
- QString resStr = results.toString();
-
- // If the DDL doesn't have semicolon at the end (usually the case), add it.
- if (!resStr.trimmed().endsWith(";"))
- resStr += ";";
-
- if (useCache)
- cache.insert(key, new QVariant(resStr));
-
- // Return the DDL
- return resStr;
+ return results.toString();
}
QStringList SchemaResolver::getColumnsFromDdlUsingPragma(const QString& ddl)
diff --git a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h
index 336b0f2..676d0f5 100644
--- a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h
+++ b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h
@@ -200,6 +200,8 @@ class API_EXPORT SchemaResolver
bool isFilteredOut(const QString& value, const QString& type);
void filterSystemIndexes(QStringList& indexes);
QList<SqliteCreateTriggerPtr> getParsedTriggersForTableOrView(const QString& database, const QString& tableOrView, bool includeContentReferences, bool table);
+ QString getObjectDdlWithDifficultName(const QString& dbName, const QString& lowerName, QString targetTable, ObjectType type);
+ QString getObjectDdlWithSimpleName(const QString& dbName, const QString& lowerName, QString targetTable, ObjectType type);
template <class T>
StrHash<QSharedPointer<T>> getAllParsedObjectsForType(const QString& database, const QString& type);
diff --git a/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp b/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
index 02489ee..1b7e33d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
@@ -250,17 +250,36 @@ void SelectResolver::markGroupedColumns()
void SelectResolver::fixColumnNames()
{
QSet<QString> existingDisplayNames;
+ QSet<QString> existingAliasNames;
QString originalName;
+ QString originalAlias;
+ QString alias;
int i;
QMutableListIterator<Column> it(currentCoreResults);
while (it.hasNext())
{
+ // Display name
originalName = it.next().displayName;
for (i = 1; existingDisplayNames.contains(it.value().displayName); i++)
it.value().displayName = originalName + ":" + QString::number(i);
existingDisplayNames << it.value().displayName;
+
+ // Alias
+ // Handled both alias duplicates and name duplicates.
+ // If name is duplicated, also create alias for it.
+ // This is important, because in case of duplicated name/alias, the result column is actually
+ // made unique with sequenced number - not only for display, but also for data origin.
+ alias = it.value().alias.isNull() ? it.value().column : it.value().alias;
+ originalAlias = alias;
+ for (i = 1; existingAliasNames.contains(alias); i++)
+ alias = originalAlias + ":" + QString::number(i);
+
+ if (alias != originalAlias)
+ it.value().alias = alias;
+
+ existingAliasNames << alias;
}
}
@@ -630,7 +649,7 @@ QStringList SelectResolver::getTableColumns(const QString &database, const QStri
Table dbTable;
dbTable.database = database;
dbTable.table = table;
- dbTable.alias = alias;
+ dbTable.tableAlias = alias;
if (tableColumnsCache.contains(dbTable))
return tableColumnsCache.value(dbTable);
@@ -650,7 +669,8 @@ void SelectResolver::applySubSelectAlias(QList<SelectResolver::Column>& columns,
{
while (it.hasNext())
{
- it.next().tableAlias = alias;
+ it.next().pushTableAlias();
+ it.value().tableAlias = alias;
it.value().flags &= ~FROM_ANONYMOUS_SELECT; // remove anonymous flag
}
}
@@ -695,44 +715,64 @@ bool SelectResolver::parseOriginalQuery()
return true;
}
+SelectResolver::Table::Table()
+{
+}
+
+SelectResolver::Table::Table(const SelectResolver::Table &other) :
+ database(other.database), originalDatabase(other.originalDatabase), table(other.table),
+ tableAlias(other.tableAlias), oldTableAliases(other.oldTableAliases), flags(other.flags)
+{
+}
+
int SelectResolver::Table::operator ==(const SelectResolver::Table &other)
{
- return table == other.table && database == other.database && alias == other.alias;
+ return ::operator==(*this, other);
+}
+
+void SelectResolver::Table::pushTableAlias()
+{
+ if (!tableAlias.isNull())
+ oldTableAliases += tableAlias;
}
int operator==(const SelectResolver::Table& t1, const SelectResolver::Table& t2)
{
- return t1.table == t2.table && t1.database == t2.database && t1.alias == t2.alias;
+ return t1.table.compare(t2.table, Qt::CaseInsensitive) == 0 &&
+ t1.database.compare(t2.database, Qt::CaseInsensitive) == 0 &&
+ t1.tableAlias.compare(t2.tableAlias, Qt::CaseInsensitive) == 0 &&
+ t1.oldTableAliases.size() == t2.oldTableAliases.size() &&
+ t1.oldTableAliases.join(",").compare(t2.oldTableAliases.join(","), Qt::CaseInsensitive) == 0;
}
uint qHash(const SelectResolver::Table& table)
{
- return qHash(table.database + "." + table.table + "." + table.alias);
+ return qHash(table.database.toLower() + "." + table.table.toLower() + "/" + table.tableAlias.toLower() + "/" +
+ table.oldTableAliases.join(","));
}
int SelectResolver::Column::operator ==(const SelectResolver::Column &other)
{
- return table == other.table && database == other.database && column == other.column && tableAlias == other.tableAlias;
+ return ::operator==(*this, other);
}
SelectResolver::Table SelectResolver::Column::getTable() const
{
- Table resTable;
- resTable.table = table;
- resTable.database = database;
- resTable.originalDatabase = originalDatabase;
- resTable.alias = tableAlias;
- resTable.flags = flags;
- return resTable;
+ return Table(*this);
}
int operator ==(const SelectResolver::Column &c1, const SelectResolver::Column &c2)
{
- return c1.table == c2.table && c1.database == c2.database && c1.column == c2.column && c1.tableAlias == c2.tableAlias;
+ return c1.column.compare(c2.column, Qt::CaseInsensitive) == 0 &&
+ c1.table.compare(c2.table, Qt::CaseInsensitive) == 0 &&
+ c1.database.compare(c2.database, Qt::CaseInsensitive) == 0 &&
+ c1.tableAlias.compare(c2.tableAlias, Qt::CaseInsensitive) == 0 &&
+ c1.oldTableAliases.size() == c2.oldTableAliases.size() &&
+ c1.oldTableAliases.join(",").compare(c2.oldTableAliases.join(","), Qt::CaseInsensitive) == 0;
}
-
uint qHash(const SelectResolver::Column &column)
{
- return qHash(column.database + "." + column.table + "." + column.column + "/" + column.tableAlias);
+ return qHash(column.database.toLower() + "." + column.table.toLower() + "." + column.column.toLower() + "/" +
+ column.tableAlias.toLower() + "/" + column.oldTableAliases.join(","));
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/selectresolver.h b/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
index 1edfcb9..7640fc6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
+++ b/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
@@ -8,6 +8,7 @@
#include <QString>
#include <QHash>
#include <QStringList>
+#include <QStack>
class Db;
class SchemaResolver;
@@ -64,6 +65,9 @@ class API_EXPORT SelectResolver
*/
struct API_EXPORT Table
{
+ Table();
+ Table(const Table& other);
+
/**
* @brief Database name.
*
@@ -72,16 +76,18 @@ class API_EXPORT SelectResolver
QString database;
QString originalDatabase;
QString table;
- QString alias;
+ QString tableAlias;
+ QStringList oldTableAliases;
int flags = 0;
int operator==(const Table& other);
+ void pushTableAlias();
};
/**
* @brief Result column resolved by the resolver.
*/
- struct API_EXPORT Column
+ struct API_EXPORT Column : public Table
{
enum Type
{
@@ -92,22 +98,12 @@ class API_EXPORT SelectResolver
Type type;
/**
- * @brief Database name.
- *
- * Either sqlite name, like "main", or "temp", or an attach name.
- */
- QString database;
- QString originalDatabase;
- QString table;
-
- /**
* @brief Column name or expression.
*
* If a column is of OTHER type, then column member contains detokenized column expression.
*/
QString column;
QString alias;
- QString tableAlias;
QString displayName;
bool aliasDefinedInSubQuery = false;
int flags = 0;
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/config.cpp b/SQLiteStudio3/coreSQLiteStudio/services/config.cpp
index 1fef317..60a80d5 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/config.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/config.cpp
@@ -3,7 +3,18 @@
CFG_DEFINE(Core)
static const QString DB_FILE_NAME = QStringLiteral("settings3");
+static QString MASTER_CONFIG_FILE = QString();
Config::~Config()
{
}
+
+void Config::setMasterConfigFile(const QString &path)
+{
+ MASTER_CONFIG_FILE = path;
+}
+
+QString Config::getMasterConfigFile()
+{
+ return MASTER_CONFIG_FILE;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/config.h b/SQLiteStudio3/coreSQLiteStudio/services/config.h
index c7bebf3..1e4c410 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/config.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/config.h
@@ -14,7 +14,7 @@
#include <QSharedPointer>
#include <QDateTime>
-const int SQLITESTUDIO_CONFIG_VERSION = 1;
+const int SQLITESTUDIO_CONFIG_VERSION = 2;
CFG_CATEGORIES(Core,
CFG_CATEGORY(General,
@@ -104,6 +104,9 @@ class API_EXPORT Config : public QObject
typedef QSharedPointer<ReportHistoryEntry> ReportHistoryEntryPtr;
+ static void setMasterConfigFile(const QString& path);
+ static QString getMasterConfigFile();
+
virtual void init() = 0;
virtual void cleanUp() = 0;
virtual const QString& getConfigDir() const = 0;
@@ -166,7 +169,7 @@ class API_EXPORT Config : public QObject
signals:
void massSaveBegins();
- void massSaveCommited();
+ void massSaveCommitted();
void sqlHistoryRefreshNeeded();
void ddlHistoryRefreshNeeded();
void reportsHistoryRefreshNeeded();
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
index 5aed863..cf8b115 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
@@ -28,6 +28,8 @@ void ConfigImpl::init()
{
initDbFile();
initTables();
+ updateConfigDb();
+ mergeMasterConfig();
sqlite3Version = db->exec("SELECT sqlite_version()")->getSingleCell().toString();
@@ -72,7 +74,7 @@ void ConfigImpl::commitMassSave()
return;
db->exec("COMMIT;");
- emit massSaveCommited();
+ emit massSaveCommitted();
massSaving = false;
}
@@ -791,6 +793,73 @@ void ConfigImpl::asyncClearReportHistory()
emit reportsHistoryRefreshNeeded();
}
+void ConfigImpl::mergeMasterConfig()
+{
+ QString masterConfigFile = Config::getMasterConfigFile();
+ if (masterConfigFile.isEmpty())
+ return;
+
+ qInfo() << "Updating settings from master configuration file: " << masterConfigFile;
+
+ Db* masterDb = new DbSqlite3("SQLiteStudio master settings", masterConfigFile, {{DB_PURE_INIT, true}});
+ if (!masterDb->open())
+ {
+ safe_delete(masterDb);
+ qWarning() << "Could not open master config database:" << masterConfigFile;
+ return;
+ }
+
+ SqlQueryPtr results = masterDb->exec("SELECT [group], key, value FROM settings");
+ if (results->isError())
+ {
+ qWarning() << "Could not query master config database:" << masterConfigFile << ", error details:" << results->getErrorText();
+ safe_delete(masterDb);
+ return;
+ }
+
+ static_qstring(insertSql, "INSERT OR IGNORE INTO settings ([group], key, value) VALUES (?, ?, ?)");
+ db->begin();
+ SqlResultsRowPtr row;
+ while (results->hasNext())
+ {
+ row = results->next();
+ if (row->value("group") == "General" && row->value("key") == "Session")
+ continue; // Don't copy session
+
+ db->exec(insertSql, row->valueList());
+ }
+ db->commit();
+
+ masterDb->close();
+ safe_delete(masterDb);
+}
+
+void ConfigImpl::updateConfigDb()
+{
+ SqlQueryPtr result = db->exec("SELECT version FROM version LIMIT 1");
+ int dbVersion = result->getSingleCell().toInt();
+ if (dbVersion >= SQLITESTUDIO_CONFIG_VERSION)
+ return;
+
+ db->begin();
+ switch (dbVersion)
+ {
+ case 1:
+ {
+ // 1->2
+ db->exec("UPDATE settings SET [key] = 'DataUncommittedError' WHERE [key] = 'DataUncommitedError'");
+ db->exec("UPDATE settings SET [key] = 'DataUncommitted' WHERE [key] = 'DataUncommited'");
+ }
+ // Add cases here for next versions,
+ // without a "break" instruction,
+ // in order to update from certain
+ // version to latest at once.
+ }
+
+ db->exec("UPDATE version SET version = ?", {SQLITESTUDIO_CONFIG_VERSION});
+ db->commit();
+}
+
void ConfigImpl::refreshSqlHistory()
{
if (sqlHistoryModel)
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
index bd31f0b..08bcec7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
@@ -111,6 +111,9 @@ class API_EXPORT ConfigImpl : public Config
void asyncDeleteReport(int id);
void asyncClearReportHistory();
+ void mergeMasterConfig();
+ void updateConfigDb();
+
static Config* instance;
static qint64 sqlHistoryId;
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp
index da732bd..826b34b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp
@@ -9,12 +9,14 @@
#include "services/dbmanager.h"
#include "db/queryexecutor.h"
#include "db/sqlquery.h"
+#include "services/importmanager.h"
#include <QVariantList>
#include <QHash>
#include <QDebug>
#include <QRegularExpression>
#include <QFile>
#include <QUrl>
+#include <plugins/importplugin.h>
FunctionManagerImpl::FunctionManagerImpl()
{
@@ -269,6 +271,10 @@ void FunctionManagerImpl::initNativeFunctions()
registerNativeFunction("sha3_256", {"data"}, FunctionManagerImpl::nativeSha3_256);
registerNativeFunction("sha3_384", {"data"}, FunctionManagerImpl::nativeSha3_384);
registerNativeFunction("sha3_512", {"data"}, FunctionManagerImpl::nativeSha3_512);
+ registerNativeFunction("import", {"file", "format", "table", "charset", "options"}, FunctionManagerImpl::nativeImport);
+ registerNativeFunction("import_formats", {}, FunctionManagerImpl::nativeImportFormats);
+ registerNativeFunction("import_options", {"format"}, FunctionManagerImpl::nativeImportOptions);
+ registerNativeFunction("charsets", {}, FunctionManagerImpl::nativeCharsets);
}
void FunctionManagerImpl::refreshFunctionsByKey()
@@ -654,6 +660,107 @@ QVariant FunctionManagerImpl::nativeSha3_512(const QList<QVariant>& args, Db* db
return nativeCryptographicFunction(args, db, ok, QCryptographicHash::Sha3_512);
}
+QVariant FunctionManagerImpl::nativeImport(const QList<QVariant> &args, Db *db, bool &ok)
+{
+ if (args.size() < 3)
+ {
+ ok = false;
+ return 0;
+ }
+
+ ImportManager::StandardImportConfig stdConfig;
+ stdConfig.inputFileName = args[0].toString();
+ stdConfig.ignoreErrors = true;
+ stdConfig.skipTransaction = true;
+ if (args.size() > 3)
+ stdConfig.codec = args[3].toString();
+
+ if (args.size() > 4)
+ {
+ // Parsing plugin options
+ int idx;
+ QString option;
+ QString value;
+ CfgEntry* cfg;
+ QStringList lines = args[4].toString().split(QRegExp("[\r\n]+"));
+ for (const QString& line : lines)
+ {
+ idx = line.indexOf("=");
+ if (idx == -1)
+ {
+ qDebug() << "Invalid options entry for import() function call:" << line;
+ continue;
+ }
+ option = line.left(idx).trimmed();
+ cfg = CfgMain::getEntryByPath(option);
+ if (!cfg)
+ {
+ qDebug() << "Invalid option name for import() function call:" << option;
+ continue;
+ }
+ value = line.mid(idx + 1);
+ cfg->set(value);
+ }
+ }
+
+ QString format = args[1].toString();
+ QString table = args[2].toString();
+
+ IMPORT_MANAGER->configure(format, stdConfig);
+ IMPORT_MANAGER->importToTable(db, table, false);
+ return 1;
+}
+
+QVariant FunctionManagerImpl::nativeImportFormats(const QList<QVariant> &args, Db *db, bool &ok)
+{
+ UNUSED(args);
+ UNUSED(db);
+ UNUSED(ok);
+ QStringList formats;
+ QList<ImportPlugin*> importPlugins = PLUGINS->getLoadedPlugins<ImportPlugin>();
+ for (ImportPlugin* plugin : importPlugins)
+ formats << plugin->getDataSourceTypeName();
+
+ return formats.join(" ");
+}
+
+QVariant FunctionManagerImpl::nativeImportOptions(const QList<QVariant> &args, Db *db, bool &ok)
+{
+ UNUSED(db);
+ if (args.size() != 1)
+ {
+ qDebug() << "Missing 'type' parameter to import_options() function call.";
+ ok = false;
+ return QVariant();
+ }
+
+ QString type = args[0].toString();
+
+ QList<ImportPlugin*> importPlugins = PLUGINS->getLoadedPlugins<ImportPlugin>();
+ ImportPlugin* thePlugin = findFirst<ImportPlugin>(importPlugins, [type](ImportPlugin* plugin) -> bool {return plugin->getDataSourceTypeName() == type;});
+ if (!thePlugin)
+ {
+ ok = false;
+ qDebug() << "No import plugin handling format (in call to import_options()):" << type;
+ return QVariant();
+ }
+
+ static_qstring(tpl, "%1=%2");
+ QStringList opts;
+ for (CfgEntry* entry : thePlugin->getConfig()->getEntries())
+ opts << tpl.arg(entry->getFullKey(), entry->get().toString());
+
+ return opts.join("\n");
+}
+
+QVariant FunctionManagerImpl::nativeCharsets(const QList<QVariant> &args, Db *db, bool &ok)
+{
+ UNUSED(args);
+ UNUSED(db);
+ UNUSED(ok);
+ return textCodecNames().join(" ");
+}
+
QStringList FunctionManagerImpl::getArgMarkers(int argCount)
{
QStringList argMarkers;
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.h
index d8734e6..0e5e103 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.h
@@ -83,6 +83,10 @@ class API_EXPORT FunctionManagerImpl : public FunctionManager
static QVariant nativeSha3_256(const QList<QVariant>& args, Db* db, bool& ok);
static QVariant nativeSha3_384(const QList<QVariant>& args, Db* db, bool& ok);
static QVariant nativeSha3_512(const QList<QVariant>& args, Db* db, bool& ok);
+ static QVariant nativeImport(const QList<QVariant>& args, Db* db, bool& ok);
+ static QVariant nativeImportFormats(const QList<QVariant>& args, Db* db, bool& ok);
+ static QVariant nativeImportOptions(const QList<QVariant>& args, Db* db, bool& ok);
+ static QVariant nativeCharsets(const QList<QVariant>& args, Db* db, bool& ok);
QList<ScriptFunction*> functions;
QHash<Key,ScriptFunction*> functionsByKey;
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.cpp b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.cpp
index 53803e5..b9aa947 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.cpp
@@ -38,7 +38,7 @@ void ImportManager::configure(const QString& dataSourceType, const ImportManager
importConfig = config;
}
-void ImportManager::importToTable(Db* db, const QString& table)
+void ImportManager::importToTable(Db* db, const QString& table, bool async)
{
this->db = db;
this->table = table;
@@ -71,7 +71,10 @@ void ImportManager::importToTable(Db* db, const QString& table)
connect(worker, SIGNAL(createdTable(Db*,QString)), this, SLOT(handleTableCreated(Db*,QString)));
connect(this, SIGNAL(orderWorkerToInterrupt()), worker, SLOT(interrupt()));
- QThreadPool::globalInstance()->start(worker);
+ if (async)
+ QThreadPool::globalInstance()->start(worker);
+ else
+ worker->run();
}
void ImportManager::interrupt()
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h
index 2401e78..5c6a73e 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h
@@ -38,6 +38,7 @@ class API_EXPORT ImportManager : public PluginServiceBase
QString inputFileName;
bool ignoreErrors = false;
+ bool skipTransaction = false;
};
enum StandardConfigFlag
@@ -54,7 +55,7 @@ class API_EXPORT ImportManager : public PluginServiceBase
ImportPlugin* getPluginForDataSourceType(const QString& dataSourceType) const;
void configure(const QString& dataSourceType, const StandardImportConfig& config);
- void importToTable(Db* db, const QString& table);
+ void importToTable(Db* db, const QString& table, bool async = true);
static bool isAnyPluginAvailable();
diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
index efb5bb4..1e7863b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
@@ -39,7 +39,7 @@
DEFINE_SINGLETON(SQLiteStudio)
-static const int sqlitestudioVersion = 30100;
+static const int sqlitestudioVersion = 30101;
SQLiteStudio::SQLiteStudio()
{
@@ -260,7 +260,7 @@ void SQLiteStudio::init(const QStringList& cmdListArguments, bool guiAvailable)
QThreadPool::globalInstance()->setMaxThreadCount(10);
- Q_INIT_RESOURCE(coresqlitestudio);
+ Q_INIT_RESOURCE(coreSQLiteStudio);
CfgLazyInitializer::init();
@@ -369,7 +369,7 @@ void SQLiteStudio::cleanUp()
safe_delete(env);
NotifyManager::destroy();
}
- Q_CLEANUP_RESOURCE(coresqlitestudio);
+ Q_CLEANUP_RESOURCE(coreSQLiteStudio);
}
void SQLiteStudio::updateCodeFormatter()
diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
index a0f6262..9c14f63 100644
--- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
@@ -620,10 +620,10 @@ bool TableModifier::isTableAliasUsedForColumn(const TokenPtr &token, const StrHa
}
SelectResolver::Table table = resolvedTables.value(token->value, Qt::CaseInsensitive);
- if (table.alias.isNull())
+ if (table.tableAlias.isNull())
return false;
- if (table.alias.compare(token->value), Qt::CaseInsensitive != 0)
+ if (table.tableAlias.compare(token->value), Qt::CaseInsensitive != 0)
return false;
// If the table token is mentioned in FROM clause, it's not a subject for aliased usage, cuase it defines alias, not uses it.
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
index 0c60582..7467fa1 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation>Es wurde keine Datenbank zur Ausführung von Abfragen festgelegt.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation>Die Datenbank ist zur Ausführung von Abfragen nicht geöffnet worden.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation>Fremdschlüssel konnten nicht deaktiviert werden für die Datenbank. Details: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Es kann keine Datenbanktransaktion gestartet werden. Details: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation>Abgebrochen</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Die Datenbanktransaktion kann nicht &apos;committet&apos; werden. Details: %1</translation>
@@ -245,17 +245,17 @@ Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation>Die Zieldatei existiert zwar, konnte aber nicht überschrieben werden.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation>Es konnte kein geeignetes Datenbankplugin gefunden werden, um die Zieldatenbank zu erzeugen.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation>Fehler beim Konvertieren der Datenbank: %1</translation>
</message>
@@ -343,23 +343,23 @@ Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden
<translation>Fehler beim Ermitteln der Spaltenbreite für den Export der Abfrageergebnisse: %1</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation>%1 konnte zum Exportieren nicht korrekt verarbeitet werden. Diese Daten werden nicht exportiert.</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation>Fehler beim Lesen der zu exportierenden Daten aus der Tabelle %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation>Fehler beim Ermitteln der zu exportierenden Daten aus der Tabelle %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation>Fehler beim Ermitteln der Spaltenbreite für den Export aus Tabelle %1: %2</translation>
</message>
@@ -367,44 +367,44 @@ Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation>Falsche Anzahl an Parametern für Funktion &apos;%1&apos;. Erwartet wurden %2, angegeben wurden jedoch %3.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation>Diese Funktion ist in SQLiteStudio nicht verfügbar: %1(%2)</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translatorcomment>Auch hier ist sicherlich eine Überarbeitung nötig, wenn der Kontext der Meldung bekannt ist.</translatorcomment>
<translation>Die Funktion %1(%2) wurde für die Sprache %3 erstellt, jedoch ist das Plugin, welches diese Sprache unterstützt, derzeit nicht geladen.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation>Ungültiges Muster für die regulären Ausdrücke: %1</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation>Datei %1 kann nicht für Lesezugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation>Datei %1 kann nicht für Schreibzugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation>Fehler beim Schreiben in Datei %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation>Nicht unterstützte Skriptsprache: %1</translation>
</message>
@@ -420,7 +420,7 @@ Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation>Die Daten wurden erfolgreich in Tabelle %1 importiert.</translation>
</message>
@@ -438,41 +438,41 @@ Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden
<translation>Es kann keine Transaktion zum Import der Daten gestartet werden: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation>Die Transaktion für die importierten Daten kann nicht &apos;committet&apos; werden: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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>Die Tabelle %1 hat weniger Spalten als die zu importierenden Daten liefern. Überschüssige Spalten werden daher ignoriert.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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>Die Tabelle %1 hat mehr Spalten als die zu importierenden Daten liefern. Einige Tabellenspalten werden deshalb leer bleiben.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation>Die Tabelle, in die importiert werden soll, kann nicht erstellt werden: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation>Fehler beim Import der Daten: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Abgebrochen.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation>Datenzeile %1 konnte nicht importiert werden. Die Zeile wurde ignoriert. Problembeschreibung: %2</translation>
</message>
@@ -839,9 +839,14 @@ Problembeschreibung: %2</translation>
<translation>SQLite %1 unterstützt keine current date&apos; oder &apos;time&apos; Klauseln in Ausdrücken.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation>SQLite %1 unterstützt keine &apos;%2&apos; Klausel Ausdrücken.</translation>
</message>
@@ -859,13 +864,13 @@ Problembeschreibung: %2</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation>Stacküberlauf bei Verarbeitung</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation>Syntaxfehler</translation>
</message>
@@ -920,17 +925,17 @@ Problembeschreibung: %2</translation>
<translation>Der Implementationscode darf nicht leer sein.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation>Die Datenquelle für Spalte %1 kann nicht aufgelöst werden.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translatorcomment>Ich hoffe, dass ich &quot;to initialize&quot; hier richtig mit &quot;erstellt&quot; übersetzt habe.</translatorcomment>
<translation>Die Konfigurationsdatei kann nicht erstellt werden. Alle Änderungen an der Konfiguration sowie die Abfragehistorie sind nach einem Programmneustart verloren. Es wurde versucht die Konfigurationsdatei in folgendem Verzeichnis zu erstellen: %1</translation>
@@ -1034,29 +1039,29 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation>Ausführung abgebrochen.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation>Die Datenbank ist nicht geöffnet.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translatorcomment>Hier muss ggf. noch das &apos;data paging&apos; korrekt übersetzt werden.</translatorcomment>
<translation>Beim Ausführen der count(*) Abfrage ist ein Fehler aufgetreten, daher wird das data paging abgeschaltet. Problemdetails der Datenbank: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation>SQLiteStudio konnte keine Metadaten aus der Abfrage extrahieren. Die Ergebnismenge kann daher nicht editiert werden.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
index 6cab7b8..007c39b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
@@ -243,17 +243,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -341,23 +341,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -365,43 +365,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -417,7 +417,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -435,41 +435,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -833,9 +833,14 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation type="unfinished"></translation>
</message>
@@ -852,13 +857,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -913,17 +918,17 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,28 +1031,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm
index 668a42a..fccc28a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm
Binary files differ
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
index 6f86594..bac1096 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
@@ -7,12 +7,12 @@
<location filename="../db/abstractdb.cpp" line="306"/>
<location filename="../db/abstractdb.cpp" line="323"/>
<source>Cannot execute query on closed database.</source>
- <translation>Impossible d&rsquo;exécuter la requête sur une base de données fermée.</translation>
+ <translation>Impossible d’exécuter la requête sur une base de données fermée.</translation>
</message>
<message>
<location filename="../db/abstractdb.cpp" line="603"/>
<source>Error attaching database %1: %2</source>
- <translation>Erreur base de données attachée %1:%2</translation>
+ <translation>Erreur base de données attachée %1 : %2</translation>
</message>
</context>
<context>
@@ -26,34 +26,40 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
- <translation>La base de données pour exécuter des requêtes n&rsquo;était pas définie.</translation>
+ <translation>La base de données pour exécuter des requêtes n’était pas définie.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
- <translation>La base de données pour exécuter des requêtes n&rsquo;est pas ouverte.</translation>
+ <translation>La base de données pour exécuter des requêtes n’est pas ouverte.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="47"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
+ <source>Could not disable foreign keys in the database. Details: %1</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation>Impossible d&rsquo;initialiser une transaction de la base de données:%1</translation>
+ <translation>Impossible d’initialiser une transaction de la base de données : %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="74"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation>Interruption</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="134"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation>Impossible d&rsquo;enregistrer la transaction de la base de données:%1</translation>
+ <translation>Impossible d’enregistrer la transaction de la base de données : %1</translation>
</message>
</context>
<context>
@@ -76,7 +82,7 @@
<message>
<location filename="../completionhelper.cpp" line="211"/>
<source>New index name</source>
- <translation>Nouveau nom d&rsquo;index</translation>
+ <translation>Nouveau nom d’index</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="214"/>
@@ -116,7 +122,7 @@
<message>
<location filename="../completionhelper.cpp" line="245"/>
<source>Error message</source>
- <translation>Message d&rsquo;erreur</translation>
+ <translation>Message d’erreur</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="289"/>
@@ -126,7 +132,7 @@
<message>
<location filename="../completionhelper.cpp" line="304"/>
<source>Any word</source>
- <translation>N&rsquo;importe quel mot</translation>
+ <translation>N’importe quel mot</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="485"/>
@@ -144,33 +150,33 @@
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="63"/>
<source>Could not add database %1: %2</source>
- <translation>Impossible d&rsquo;ajouter une base de données %1: %2</translation>
+ <translation>Impossible d’ajouter une base de données %1 : %2</translation>
</message>
<message>
<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&rsquo;erreur: %2</translation>
+ <translation>La base de données %1 ne peut ëtre mise à jour à cause de l’erreur : %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="350"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="379"/>
<source>Database file doesn&apos;t exist.</source>
- <translation>Le fichier de la base de données n&rsquo;existe pas.</translation>
+ <translation>Le fichier de la base de données n’existe pas.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="352"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="381"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="604"/>
<source>No supporting plugin loaded.</source>
<translation>Aucun plugin supporté chargé.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="522"/>
<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="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="532"/>
<source>No suitable database driver plugin found.</source>
<translation>Aucun pilote de base de données approprié trouvé.</translation>
</message>
@@ -181,12 +187,12 @@
<location filename="../dbobjectorganizer.cpp" line="380"/>
<location filename="../dbobjectorganizer.cpp" line="412"/>
<source>Error while creating table in target database: %1</source>
- <translation>Erreur lors de la creation de la table de la base de données: %1</translation>
+ <translation>Erreur lors de la creation de la table de la base de données : %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="380"/>
<source>Could not parse table.</source>
- <translation>Impossible d&rsquo;analyser la table.</translation>
+ <translation>Impossible d’analyser la table.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="426"/>
@@ -196,54 +202,61 @@
<message>
<location filename="../dbobjectorganizer.cpp" line="447"/>
<source>Error while copying data for table %1: %2</source>
- <translation>Erreur lors de la copie des données vers la table %1: %2</translation>
+ <translation>Erreur lors de la copie des données vers la table %1 : %2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="466"/>
<location filename="../dbobjectorganizer.cpp" line="473"/>
<location filename="../dbobjectorganizer.cpp" line="496"/>
<source>Error while copying data to table %1: %2</source>
- <translation>Erreur lors de la copie des données de la table %1: %2</translation>
+ <translation>Erreur lors de la copie des données de la table %1 : %2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="535"/>
<source>Error while dropping source view %1: %2
Tables, indexes, triggers and views copied to database %3 will remain.</source>
- <translation>Erreur à la création de la vue %1: %2
+ <translation>Erreur à la création de la vue %1 : %2
Tables, index, déclencheurs et vues copiés de la base de données %3 seront maintenus.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="542"/>
<source>Error while creating view in target database: %1</source>
- <translation>Erreur lors de la création de la vue de la base de données:%1</translation>
+ <translation>Erreur lors de la création de la vue de la base de données : %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="547"/>
<source>Error while creating index in target database: %1</source>
- <translation>Erreur lors de la création de l&rsquo;index de la base de données:%1</translation>
+ <translation>Erreur lors de la création de l’index de la base de données : %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="552"/>
<source>Error while creating trigger in target database: %1</source>
- <translation>Erreur lors de la création du déclencheur de la base de données:%1</translation>
+ <translation>Erreur lors de la création du déclencheur de la base de données : %1</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="773"/>
+ <location filename="../dbobjectorganizer.cpp" line="780"/>
+ <location filename="../dbobjectorganizer.cpp" line="789"/>
+ <source>Could not parse object &apos;%1&apos; in order to move or copy it.</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="923"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation>Le fichier cible existe, mais ne peut être remplacé.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="942"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation>Impossible de trouver le plugin correct pour créer la base de données cible.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1176"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
- <translation>Erreur lors de la conversion de la base de données: %1</translation>
+ <translation>Erreur lors de la conversion de la base de données : %1</translation>
</message>
</context>
<context>
@@ -264,7 +277,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<location filename="../ddlhistorymodel.cpp" line="69"/>
<source>Date of execution</source>
<comment>ddl history header</comment>
- <translation>Date d&rsquo;exécution</translation>
+ <translation>Date d’exécution</translation>
</message>
<message>
<location filename="../ddlhistorymodel.cpp" line="71"/>
@@ -278,22 +291,22 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../services/exportmanager.cpp" line="72"/>
<source>Export plugin %1 doesn&apos;t support exporing query results.</source>
- <translation>Plugin d&rsquo;export %1 ne supporte pas l&rsquo;exportation de la requête.</translation>
+ <translation>Plugin d’export %1 ne supporte pas l’exportation de la requête.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="98"/>
<source>Export plugin %1 doesn&apos;t support exporing tables.</source>
- <translation>Plugin d&rsquo;export %1 ne supporte pas l&rsquo;exportation de la table.</translation>
+ <translation>Plugin d’export %1 ne supporte pas l’exportation de la table.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="122"/>
<source>Export plugin %1 doesn&apos;t support exporing databases.</source>
- <translation>Plugin d&rsquo;export %1 ne supporte pas l&rsquo;exportation de la base de données.</translation>
+ <translation>Plugin d’export %1 ne supporte pas l’exportation de la base de données.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="155"/>
<source>Export format &apos;%1&apos; is not supported. Supported formats are: %2.</source>
- <translation>Format d&rsquo;export «&nbsp;%1&nbsp;» n&rsquo;est pas supporté. Les formats supportés sont: %2.</translation>
+ <translation>Format d’export « %1 » n’est pas supporté. Les formats supportés sont : %2.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="218"/>
@@ -303,7 +316,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../services/exportmanager.cpp" line="222"/>
<source>Export to the file &apos;%1&apos; was successful.</source>
- <translation>Export vers le fichier &rsquo;%1&rsquo; avec succès.</translation>
+ <translation>Export vers le fichier « %1 » avec succès.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="224"/>
@@ -313,85 +326,85 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../services/exportmanager.cpp" line="266"/>
<source>Could not export to file %1. File cannot be open for writting.</source>
- <translation>Impossible d&rsquo;exporter vers le fichier %1. Le fichier ne peut être ouvert en écriture.</translation>
+ <translation>Impossible d’exporter vers le fichier %1. Le fichier ne peut être ouvert en écriture.</translation>
</message>
</context>
<context>
<name>ExportWorker</name>
<message>
- <location filename="../exportworker.cpp" line="121"/>
+ <location filename="../exportworker.cpp" line="122"/>
<source>Error while exporting query results: %1</source>
- <translation>Erreur lors de l&rsquo;exportation des résultats de la requête:%1</translation>
+ <translation>Erreur lors de l’exportation des résultats de la requête : %1</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="201"/>
+ <location filename="../exportworker.cpp" line="202"/>
<source>Error while counting data column width to export from query results: %1</source>
- <translation>Erreur lors de la totalisation des données de colonne issu de la requête: %1</translation>
+ <translation>Erreur lors de la totalisation des données de colonne issu de la requête : %1</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="353"/>
- <location filename="../exportworker.cpp" line="411"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
- <translation>Impossible d&rsquo;analyser %1 afin de l&rsquo;exporter. Celle-ci sera excluse de l&rsquo;exportation.</translation>
+ <translation>Impossible d’analyser %1 afin de l’exporter. Celle-ci sera excluse de l’exportation.</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="612"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
- <translation>Erreur lors de la lecture des données à exporter de la table %1: %2</translation>
+ <translation>Erreur lors de la lecture des données à exporter de la table %1 : %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="620"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
- <translation>Erreur lors du comptage des données à exporter de la table %1: %2</translation>
+ <translation>Erreur lors du comptage des données à exporter de la table %1 : %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="636"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
- <translation>Erreur lors de la totalisation des données à exporter de la table %1: %2</translation>
+ <translation>Erreur lors de la totalisation des données à exporter de la table %1 : %2</translation>
</message>
</context>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
- <translation>Nombre de paramètres invalide de la fonction %1. Attendu %2, obtenu %3.</translation>
+ <translation>Nombre de paramètres invalide de la fonction « %1 ». Attendu %2, obtenu %3.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
- <translation>Fonction inconnue avec SQLiteStudio: %1(%2)</translation>
+ <translation>Fonction inconnue avec SQLiteStudio : %1(%2)</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
- <translation>La fonction %1(%2) est référencée avec le langage %3, mais le plugin supportant ce langage n&rsquo;est actuellement pas chargé.</translation>
+ <translation>La fonction %1(%2) est référencée avec le langage %3, mais le plugin supportant ce langage n’est actuellement pas chargé.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
- <translation>Expression invalide: %1</translation>
+ <translation>Expression invalide : %1</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
- <translation>Impossible d&rsquo;ouvrir en lecture le ficher %1:%2</translation>
+ <translation>Impossible d’ouvrir en lecture le ficher %1 : %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
- <translation>Impossible d&rsquo;ouvrir en écriture le ficher %1:%2</translation>
+ <translation>Impossible d’ouvrir en écriture le ficher %1 : %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
- <translation>Erreur lors de l&rsquo;écriture du fichier %1:%2</translation>
+ <translation>Erreur lors de l’écriture du fichier %1 : %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
- <translation>Langage script non supporté: %1</translation>
+ <translation>Langage script non supporté : %1</translation>
</message>
</context>
<context>
@@ -399,15 +412,15 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/genericexportplugin.cpp" line="20"/>
<source>Could not initialize text codec for exporting. Using default codec: %1</source>
- <translation>Impossible d&rsquo;initialiser le paramètre texte por l&rsquo;export. Utulisation du paramètre par défaut: %1</translation>
+ <translation>Impossible d’initialiser le paramètre texte por l’export. Utulisation du paramètre par défaut : %1</translation>
</message>
</context>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
- <translation>Importation des données de la table «&nbsp;%1&nbsp;» réussie.</translation>
+ <translation>Importation des données de la table « %1 » réussie.</translation>
</message>
</context>
<context>
@@ -415,49 +428,49 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../importworker.cpp" line="24"/>
<source>No columns provided by the import plugin.</source>
- <translation>Aucune colonne fournie par le plugin d&rsquo;importation.</translation>
+ <translation>Aucune colonne fournie par le plugin d’importation.</translation>
</message>
<message>
<location filename="../importworker.cpp" line="30"/>
<source>Could not start transaction in order to import a data: %1</source>
- <translation>Impossible d&rsquo;initialiser la transaction d&rsquo;import de données: %1</translation>
+ <translation>Impossible d’initialiser la transaction d’import de données : %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
- <translation>Impossible d&rsquo;enregistrer la transaction d&rsquo;import de données: %1</translation>
+ <translation>Impossible d’enregistrer la transaction d’import de données : %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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 «&nbsp;%1&nbsp;» a moins de colonnes que de données à importer. Les colonnes supplèmentaires seront ignorées.</translation>
+ <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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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 «&nbsp;%1&nbsp;» a plus de colonnes que de colonnes de données à importer. Certaines colonnes de la table seront vides.</translation>
+ <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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
- <translation>Impossible de créer la table d&rsquo;import: %1</translation>
+ <translation>Impossible de créer la table d’import : %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="163"/>
- <location filename="../importworker.cpp" line="170"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
- <translation>Erreur lors de l&rsquo;import des données: %1</translation>
+ <translation>Erreur lors de l’import des données : %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="170"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Transaction interrompue.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="158"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -472,12 +485,12 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<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&rsquo;ont pa été chargées: %2.</translation>
+ <translation>Chargement impossible du plugin %1, les dépendances n’ont pa été chargées : %2.</translation>
</message>
<message>
<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&rsquo;erreur: %2</translation>
+ <translation>Chargement impossible du plugin %1, Détails de l’erreur : %2</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
@@ -485,16 +498,16 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<translation>Chargement impossible du plugin %1 (erreur à initialisation du plugin).</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
- <translation>min %1</translation>
+ <translation>min : %1</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
- <translation>max %1</translation>
+ <translation>max : %1</translation>
</message>
</context>
<context>
@@ -511,7 +524,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populateconstant.ui" line="20"/>
<source>Constant value:</source>
- <translation>Valeur constante:</translation>
+ <translation>Valeur constante :</translation>
</message>
</context>
<context>
@@ -553,7 +566,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populatedictionary.ui" line="74"/>
<source>Method of using words</source>
- <translation>Méthode d&rsquo;utilisation des mots</translation>
+ <translation>Méthode d’utilisation des mots</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="80"/>
@@ -571,7 +584,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
- <translation>Table «&nbsp;%1&nbsp;» remplie avec succès.</translation>
+ <translation>Table « %1 » remplie avec succès.</translation>
</message>
</context>
<context>
@@ -628,7 +641,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populaterandomtext.ui" line="20"/>
<source>Use characters from common sets:</source>
- <translation>Utilisez des caractères de la table standard:</translation>
+ <translation>Utilisez des caractères de la table standard :</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="36"/>
@@ -668,7 +681,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populaterandomtext.ui" line="103"/>
<source>Includes all above and all others.</source>
- <translation>Inclus ci dessus et tous les autres.</translation>
+ <translation>Inclus ci-dessus et tous les autres.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="106"/>
@@ -678,7 +691,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populaterandomtext.ui" line="119"/>
<source>Use characters from my custom set:</source>
- <translation>Utilisez les catactères de ma table personalisée:</translation>
+ <translation>Utilisez les catactères de ma table personalisée :</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="132"/>
@@ -704,7 +717,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populatescript.ui" line="26"/>
<source>Initialization code (optional)</source>
- <translation>Code d&rsquo;initialisation (optionel)</translation>
+ <translation>Code d’initialisation (optionel)</translation>
</message>
<message>
<location filename="../plugins/populatescript.ui" line="45"/>
@@ -735,12 +748,12 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../plugins/populatesequence.ui" line="33"/>
<source>Start value:</source>
- <translation>Valeur de départ:</translation>
+ <translation>Valeur de départ :</translation>
</message>
<message>
<location filename="../plugins/populatesequence.ui" line="56"/>
<source>Step:</source>
- <translation>Incrément:</translation>
+ <translation>Incrément :</translation>
</message>
</context>
<context>
@@ -748,17 +761,17 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../populateworker.cpp" line="23"/>
<source>Could not start transaction in order to perform table populating. Error details: %1</source>
- <translation>Impossible d&rsquo;initialiser la transaction pour remplir la table.Détails de l&rsquo;erreur %1</translation>
+ <translation>Impossible d’initialiser la transaction pour remplir la table.Détails de l’erreur %1</translation>
</message>
<message>
<location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
- <translation>Erreur lors du remplissage de la table: %1</translation>
+ <translation>Erreur lors du remplissage de la table : %1</translation>
</message>
<message>
<location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
- <translation>Impossible d&rsquo;enregistrer la transaction après le remplissage de la table. Erreur %1</translation>
+ <translation>Impossible d’enregistrer la transaction après le remplissage de la table. Erreur %1</translation>
</message>
</context>
<context>
@@ -767,7 +780,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<location filename="../db/abstractdb2.h" line="199"/>
<location filename="../db/abstractdb3.h" line="356"/>
<source>Could not open database: %1</source>
- <translation>Impossible d&rsquo;ouvrir la base de données: %1</translation>
+ <translation>Impossible d’ouvrir la base de données : %1</translation>
</message>
<message>
<location filename="../db/abstractdb2.h" line="805"/>
@@ -778,7 +791,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<message>
<location filename="../db/abstractdb3.h" line="376"/>
<source>Could not close database: %1</source>
- <translation>Impossible de clore la base de bonnées: %1</translation>
+ <translation>Impossible de clore la base de bonnées : %1</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="137"/>
@@ -789,18 +802,18 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<location filename="../dbversionconverter.cpp" line="253"/>
<location filename="../dbversionconverter.cpp" line="331"/>
<source>SQLite %1 does not support &apos;%2&apos; statement.</source>
- <translation>SQLite %1 ne supporte pas l&rsquo;instruction «&nbsp;%2&nbsp;».</translation>
+ <translation>SQLite %1 ne supporte pas l’instruction « %2 ».</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="201"/>
<source>SQLite %1 does not support &apos;%2&apos; statement, but the regular table can be created instead if you proceed.</source>
- <translation>SQLite %1 ne supporte pas l&rsquo;instruction «&nbsp;%2&nbsp;», mais la table normale peut être créée à la place si vous confirmez.</translation>
+ <translation>SQLite %1 ne supporte pas l’instruction « %2 », mais la table normale peut être créée à la place si vous confirmez.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="424"/>
<source>Could not parse statement: %1
Error details: %2</source>
- <translation>Impossible d&rsquo;analyser l&rsquo;instruction: %1
+ <translation>Impossible d’analyser l’instruction : %1
Détails erreur: %2</translation>
</message>
<message>
@@ -809,29 +822,34 @@ Détails erreur: %2</translation>
<location filename="../dbversionconverter.cpp" line="482"/>
<location filename="../dbversionconverter.cpp" line="515"/>
<source>SQLite %1 does not support the &apos;%2&apos; clause. Cannot convert &apos;%3&apos; statement with that clause.</source>
- <translation>SQLite %1 ne supporte pas la clause «&nbsp;%2&nbsp;». Impossible de convertir l&rsquo;instruction «&nbsp;%3&nbsp;» avec cette clause.</translation>
+ <translation>SQLite %1 ne supporte pas la clause « %2 ». Impossible de convertir l’instruction « %3 » avec cette clause.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="488"/>
<source>SQLite %1 does not support the &apos;%2&apos; clause in the &apos;%3&apos; statement.</source>
- <translation>SQLite %1 ne supporte pas la clause «&nbsp;%2&nbsp;» de l&rsquo;instruction «&nbsp;%3&nbsp;».</translation>
+ <translation>SQLite %1 ne supporte pas la clause « %2 » de l’instruction « %3 ».</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="756"/>
<source>SQLite %1 does not support current date or time clauses in expressions.</source>
- <translation>SQLite %1 ne supporte pas la clause date ou l&rsquo;heure actuelle dans l&rsquo;expression.</translation>
+ <translation>SQLite %1 ne supporte pas la clause date ou l’heure actuelle dans l’expression.</translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
- <translation>SQLite %1 ne supporte pas la clause «&nbsp;%2&nbsp;» dans l&rsquo;expression.</translation>
+ <translation>SQLite %1 ne supporte pas la clause « %2 » dans l’expression.</translation>
</message>
<message>
- <location filename="../impl/dbattacherimpl.cpp" line="109"/>
+ <location filename="../impl/dbattacherimpl.cpp" line="115"/>
<source>Could not attach database %1: %2</source>
- <translation>Impossible d&rsquo;attacher la base de données %1: %2</translation>
+ <translation>Impossible d’attacher la base de données %1 : %2</translation>
</message>
<message>
<location filename="../parser/parsercontext.cpp" line="108"/>
@@ -841,20 +859,20 @@ Détails erreur: %2</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2167"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation>Analyse dépassement pile</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation>Erreur de syntaxe</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.cpp" line="30"/>
<source>Could not open dictionary file %1 for reading.</source>
- <translation>Impossible d&rsquo;ouvrir en lecture le fichier dictionnaire %1.</translation>
+ <translation>Impossible d’ouvrir en lecture le fichier dictionnaire %1.</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.cpp" line="91"/>
@@ -879,39 +897,44 @@ Détails erreur: %2</translation>
<message>
<location filename="../plugins/populatescript.cpp" line="40"/>
<source>Could not find plugin to support scripting language: %1</source>
- <translation>Impossible de trouver le plugin supportant le script: %1</translation>
+ <translation>Impossible de trouver le plugin supportant le script : %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="58"/>
<source>Error while executing populating initial code: %1</source>
- <translation>Erreur à l&rsquo;initialisation du code de remplissage: %1</translation>
+ <translation>Erreur à l’initialisation du code de remplissage : %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="80"/>
<source>Error while executing populating code: %1</source>
- <translation>Erreur à l&rsquo;exécution du code de remplissage: %1</translation>
+ <translation>Erreur à l’exécution du code de remplissage : %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="112"/>
<source>Select implementation language.</source>
- <translation>Sélectionnez l&rsquo;application langage.</translation>
+ <translation>Sélectionnez l’application langage.</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="113"/>
<source>Implementation code cannot be empty.</source>
- <translation>L&rsquo;application de code ne peut être vide.</translation>
+ <translation>L’application de code ne peut être vide.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="317"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
- <translation>Impossible de résoudre la source de données pour la colonnes: %1</translation>
+ <translation>Impossible de résoudre la source de données pour la colonnes : %1</translation>
+ </message>
+ <message>
+ <location filename="../selectresolver.cpp" line="424"/>
+ <source>Could not resolve table for column &apos;%1&apos;.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
- <translation>Impossible d&rsquo;initialiser le fichier de configuration.
+ <translation>Impossible d’initialiser le fichier de configuration.
Aucune modification et les requêtes seront perdues après redémarrage.
- Essayez d&rsquo;initialiser le fichier avec cette localisation: %1.</translation>
+ Essayez d’initialiser le fichier avec cette localisation : %1.</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="291"/>
@@ -956,39 +979,39 @@ Détails erreur: %2</translation>
<translation>Peuplement de la table</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="107"/>
+ <location filename="../tablemodifier.cpp" line="115"/>
<source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source>
- <translation>La table %1 référence la table %2, mais la clé étrangère ne pourra être mise à jour pour la nouvelle table à cause de problèmes lors de l&rsquo;analyse DDL de la table %3.</translation>
+ <translation>La table %1 référence la table %2, mais la clef étrangère ne pourra être mise à jour pour la nouvelle table à cause de problèmes lors de l’analyse DDL de la table %3.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="379"/>
+ <location filename="../tablemodifier.cpp" line="389"/>
<source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source>
- <translation>Toutes les colonnes indéxées par l&rsquo;indexe %1 sont faites. L&rsquo;indexe ne sera pas recréé après la modification de la table.</translation>
+ <translation>Toutes les colonnes indéxées par l’index %1 sont traitées. L’index ne sera pas recréé après la modification de la table.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="418"/>
+ <location filename="../tablemodifier.cpp" line="428"/>
<source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="465"/>
+ <location filename="../tablemodifier.cpp" line="475"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
- <translation>Impossible de mettre à jour le déclencheur%1 selon la modification de la table %2.</translation>
+ <translation>Impossible de mettre à jour le déclencheur %1 selon la modification de la table %2.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="645"/>
- <location filename="../tablemodifier.cpp" line="669"/>
- <location filename="../tablemodifier.cpp" line="688"/>
+ <location filename="../tablemodifier.cpp" line="655"/>
+ <location filename="../tablemodifier.cpp" line="679"/>
+ <location filename="../tablemodifier.cpp" line="698"/>
<source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="433"/>
+ <location filename="../tablemodifier.cpp" line="443"/>
<source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source>
<translation>Toutes les colonnes couvertes par le déclencheur %1 sont faites. Le déclencheur ne sera pas recréé après la modification de la table.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="483"/>
+ <location filename="../tablemodifier.cpp" line="493"/>
<source>Cannot not update view %1 according to table %2 modifications.
The view will remain as it is.</source>
<translation>Impossible de mettre à jour les modifications de la vue %1 issue de la table %2
@@ -996,51 +1019,51 @@ La vue restera telque.</translation>
</message>
<message>
<source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source>
- <translation type="obsolete">Il y a un problème à la mise à jour l&rsquo;instruction %1 avec le déclencheur %2. Une partie de l&rsquo;instruction SELECT référençant la table %3 ne ppermet pas sa modification. La mise à jour manuelle du déclencheur est nécessaire.</translation>
+ <translation type="obsolete">Il y a un problème à la mise à jour l’instruction %1 avec le déclencheur %2. Une partie de l’instruction SELECT référençant la table %3 ne ppermet pas sa modification. La mise à jour manuelle du déclencheur est nécessaire.</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="25"/>
<source>Could not parse DDL of the view to be created. Details: %1</source>
- <translation>Impossible d&rsquo;analyser le DDL de création de vue. Détails: %1</translation>
+ <translation>Impossible d’analyser le DDL de création de vue. Détails : %1</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="34"/>
<source>Parsed query is not CREATE VIEW. It&apos;s: %1</source>
- <translation>L&rsquo;expression CREATE VIEW est fausse. C&rsquo;est: %1</translation>
+ <translation>L’expression CREATE VIEW est fausse. C’est : %1</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="82"/>
<source>SQLiteStudio was unable to resolve columns returned by the new view, therefore it won&apos;t be able to tell which triggers might fail during the recreation process.</source>
- <translation>SQLiteStudio ne peut résoudre les colonnes résultant de la nouvelle vue, d&rsquo;où le déclencheur en cause ne pourra être indiqué pendant le process.</translation>
+ <translation>SQLiteStudio ne peut résoudre les colonnes résultant de la nouvelle vue, d’où le déclencheur en cause ne pourra être indiqué pendant le process.</translation>
</message>
</context>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="133"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation>Exécution interrompue.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="174"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
- <translation>La base de données n&rsquo;est ouverte.</translation>
+ <translation>La base de données n’est ouverte.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="182"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Une seule requête peut être exécutée à la fois.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="548"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
- <translation>Une erreur s&rsquo;est produite à l&rsquo;exécution de la requête count(*), la recherche des données est arrêtée. Erreur de la base de données:%1</translation>
+ <translation>Une erreur s’est produite à l’exécution de la requête count(*), la recherche des données est arrêtée. Erreur de la base de données : %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="459"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
- <translation>SQLiteStudio ne peut extraire des métadonnées d&rsquo;une requête. Les résultats ne peut être affichés.</translation>
+ <translation>SQLiteStudio ne peut extraire des métadonnées d’une requête. Les résultats ne peut être affichés.</translation>
</message>
</context>
<context>
@@ -1053,7 +1076,7 @@ La vue restera telque.</translation>
<message>
<location filename="../plugins/scriptingqtdbproxy.cpp" line="65"/>
<source>Error from %1: %2</source>
- <translation>Erreur de %1: %2</translation>
+ <translation>Erreur de %1 : %2</translation>
</message>
</context>
<context>
@@ -1068,7 +1091,7 @@ La vue restera telque.</translation>
<location filename="../sqlhistorymodel.cpp" line="32"/>
<source>Execution date</source>
<comment>sql history header</comment>
- <translation>Date d&rsquo;exécution</translation>
+ <translation>Date d’exécution</translation>
</message>
<message>
<location filename="../sqlhistorymodel.cpp" line="34"/>
@@ -1094,18 +1117,18 @@ La vue restera telque.</translation>
<message>
<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>Une erreur est apparue lors du contrôle pour la mise à jour : %1.
</translation>
</message>
<message>
<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&rsquo;ignorer le warning.</translation>
+ <translation>Impossible de vérifier la mise à jour, car le serveur a répondu avec un message invalide. Il est possible d’ignorer le warning.</translation>
</message>
<message>
<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>
+ <translation>Erreur lors de la lecture de mise des méta données : %1.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="188"/>
@@ -1120,22 +1143,22 @@ La vue restera telque.</translation>
<message>
<location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
- <translation>Il n&rsquo;y a aucune mise à jour à télécharger. Mise à jour abandonnée.</translation>
+ <translation>Il n’y a aucune mise à jour à télécharger. Mise à jour abandonnée.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
- <translation>Téléchargement: %1</translation>
+ <translation>Téléchargement : %1</translation>
</message>
<message>
<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>
+ <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="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
- <translation>Erreur à l&rsquo;ouverture du fichier «&nbsp;%1&nbsp;» pour l&rsquo;écriture: %2. Mise à jour abandonnée.</translation>
+ <translation>Erreur à l’ouverture du fichier « %1 » pour l’écriture : %2. Mise à jour abandonnée.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="276"/>
@@ -1145,29 +1168,29 @@ La vue restera telque.</translation>
<message>
<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&rsquo;application courante dans %1.</translation>
+ <translation>Impossible de copier le répertoire de l’application courante dans %1.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
- <translation>Impossible de créer le répertoire: %1.</translation>
+ <translation>Impossible de créer le répertoire : %1.</translation>
</message>
<message>
<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>
+ <translation>Impossible de renommer le répertoire %1 en %2. Détails : %3</translation>
</message>
<message>
<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>
+ <translation>Impossible de renommer le répertoire %1 en %2.Détails : %3</translation>
</message>
<message>
<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&rsquo;où l&rsquo;impossibilité de restaurer le répertoire original. SQLiteStudio est maintenant localisé: %3</translation>
+ <translation>Impossible de déplacer le répertoire %1 vers %2 d’où l’impossibilité de restaurer le répertoire original. SQLiteStudio est maintenant localisé : %3</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="365"/>
@@ -1177,17 +1200,17 @@ Details: %3</source>
<message>
<location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
- <translation>Impossible d&rsquo;extraire le composant %1 dans le répertoire %2.</translation>
+ <translation>Impossible d’extraire le composant %1 dans le répertoire %2.</translation>
</message>
<message>
<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&rsquo;élever les autorisations pour lancer la mise à jour en tantque root. Bloqué: %1</translation>
+ <translation>Impossible d’élever les autorisations pour lancer la mise à jour en tantque root. Bloqué : %1</translation>
</message>
<message>
<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>
+ <translation>Impossible de finaliser la mis à jour en tant que root : %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="591"/>
@@ -1195,7 +1218,7 @@ Details: %3</source>
<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>
+ <translation>Impossible de finaliser la mis à jour en tant que admin : %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="591"/>
@@ -1215,17 +1238,17 @@ Details: %3</source>
<message>
<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&rsquo;administrateur.</translation>
+ <translation>Impossible de finaliser la mis à jour en tant qu’administrateur.</translation>
</message>
<message>
<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&rsquo;administrateur. Délai d&rsquo;attente de lancement dépassé.</translation>
+ <translation>Impossible de finaliser la mis à jour en tant qu’administrateur. Délai d’attente de lancement dépassé.</translation>
</message>
<message>
<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&rsquo;administrateur. Délai d&rsquo;attente d&rsquo;opération dépassé.</translation>
+ <translation>Impossible de finaliser la mis à jour en tant qu’administrateur. Délai d’attente d’opération dépassé.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="696"/>
@@ -1240,32 +1263,32 @@ Details: %3</source>
<message>
<location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
- <translation>Installation impossible un paquet n&rsquo;est pas au format tar.zg: %1</translation>
+ <translation>Installation impossible un paquet n’est pas au format tar.zg : %1</translation>
</message>
<message>
<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>
+ <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="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>
+ <translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé : %2</translation>
</message>
<message>
<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>
+ <translation>Installation impossible, un paquet est manquant : %1</translation>
</message>
<message>
<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>
+ <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="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>
+ <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="923"/>
@@ -1282,13 +1305,13 @@ Details: %3</source>
<location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
- <translation>Erreur d&rsquo;exécution de la commande de mise à jour: %1
-Message d&rsquo;erreur: %2</translation>
+ <translation>Erreur d’exécution de la commande de mise à jour : %1
+Message d’erreur : %2</translation>
</message>
<message>
<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>
+ <translation>Erreur lors du téléchargement de la mise à jour : %1. Mise à jour abandonnée.</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts
index 9b031de..beed03d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="it_IT">
+<TS version="2.1" language="it_IT">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
@@ -243,17 +243,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -341,23 +341,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -365,43 +365,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -417,7 +417,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -435,41 +435,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -833,9 +833,14 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation type="unfinished"></translation>
</message>
@@ -852,13 +857,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -913,17 +918,17 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,28 +1031,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm
index 6859097..76565a1 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm
Binary files differ
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
index c3e000c..843aebe 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pl_PL">
+<TS version="2.1" language="pl_PL">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation>Nie zdefiniowano bazy danych do wykonywania zapytań.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation>Baza danych do wykonywania zapytań nie jest otwarta.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation>Nie udało się wyłączyć kluczy obcych w bazie. Szczegóły: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Nie udało się rozpocząć transakcji bazy danych. Szczegóły: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation>Przerwane</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Nie udało się zatwierdzić transakcji bazy danych. Szczegóły: %1</translation>
@@ -244,17 +244,17 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation>Plik docelowy istnieje, ale nie może być nadpisany.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation>Nie znaleziono odpowiedniej wtyczki bazy danych, aby utworzyć docelową bazę danych.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation>Błąd podczas konwersji bazy danych: %1</translation>
</message>
@@ -350,23 +350,23 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<translation>Błąd podczas liczenia szerokości kolumn danych do eksportu wyników zapytania: %1</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation>Nie udało się przeanalizować %1 w celu wyeksportowania. Element ten zostanie pominięty w wynikach eksportu.</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation>Błąd podczas odczytu danych do eksportu z tabeli %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation>Błąd podczas liczenia danych do eksportu z tabeli %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation>Błąd podczas obliczania szerokości kolumn danych do eksportu z tabeli %1: %2</translation>
</message>
@@ -374,43 +374,43 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation>Niepoprawna liczba argumentów do funkcji &apos;%1&apos;. Oczekiwano %2, a jest %3.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation>Nie znaleziono funkcji zarejestrowanej w SQLiteStudio: %1 (%2)</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation>Funkcja %1 (%2) została zarejestrowana dla języka %3, ale wtyczka obsługująca ten język nie jest aktualnie załadowana.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation>Niepoprawne wyrażenie regularne: %1</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation>Nie udało się otworzyć pliku %1 do odczytu: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation>Nie udało się otworzyć pliku %2 do zapisu: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation>Błąd podczas zapisu do pliku %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation>Nieobsługiwany język skryptowy: %1</translation>
</message>
@@ -426,7 +426,7 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation>Pomyślnie zaimportowano dane do tabeli &apos;%1&apos;.</translation>
</message>
@@ -444,41 +444,41 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<translation>Nie udało się wystartować transakcji w celu zaimportowania danych: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation>Nie udało się zatwierdzić transakcji w celu zaimportowania danych: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<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="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation>Błąd podczas importowania danych: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Przerwano.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<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>
@@ -830,9 +830,14 @@ Szczegóły błędu: %2</translation>
<translation>SQLite %1 nie obsługuje aktualnej daty lub klauzul czasowu w wyrażeniach.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation>SQLite %1 nie obsługuje klauzuli wartości wierszowej w wyrażeniach.</translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation>SQLite %1 nie obsługuje klauzuli &apos;%2&apos; w wyrażeniach.</translation>
</message>
@@ -849,13 +854,13 @@ Szczegóły błędu: %2</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation>Przeciążenie stosu analizatora.</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation>Błąd składni</translation>
</message>
@@ -910,17 +915,17 @@ Szczegóły błędu: %2</translation>
<translation>Kod implementacji nie może być pusty.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation>Nie znaleziono źródła danych dla kolumny: %1</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation>Nie można ustalić tabeli lub kolumny &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<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>
@@ -1052,28 +1057,28 @@ Widok pozostanie nienaruszony.</translation>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation>Wykonywanie przerwane.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation>Baza danych nie jest otwarta.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation>Wystąpił błąd podczas wykonywania zapytania count(*), przez co stronicowanie danych będzie wyłączone. Szczegóły błędy z bazy danych: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation>SQLiteStudio nie mogło uzyskać metadanych z zapytania. Nie będzie można edytować wyników zapytania.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm
index c02994c..8d72a0b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm
Binary files differ
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
index 8637f5e..82a5283 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<TS version="2.1" language="pt_BR">
<context>
<name>AbstractDb</name>
<message>
<location filename="../db/abstractdb.cpp" line="306"/>
<location filename="../db/abstractdb.cpp" line="323"/>
<source>Cannot execute query on closed database.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Não é possível executar query em banco de dados fechado.</translation>
</message>
<message>
<location filename="../db/abstractdb.cpp" line="603"/>
<source>Error attaching database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished"> </translation>
</message>
</context>
<context>
@@ -20,46 +20,46 @@
<message>
<location filename="../services/bugreporter.cpp" line="46"/>
<source>Invalid login or password</source>
- <translation type="unfinished"></translation>
+ <translation>login ou senha inválido</translation>
</message>
</context>
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Não foi especificado banco de dados para execução das consultas. </translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>O banco de dados para execução das consultas não foi aberto.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Não foi possível desativar as chaves estrangeiras do banco de dados. Detalhes: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Não foi possível iniciar a transação do banco de dados. Detalhes: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Interrompido</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Não foi possível efetuar commit no banco de dados. Detalhes: %1</translation>
</message>
</context>
<context>
@@ -187,29 +187,29 @@
<location filename="../dbobjectorganizer.cpp" line="380"/>
<location filename="../dbobjectorganizer.cpp" line="412"/>
<source>Error while creating table in target database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Erro ao criar tabela no banco de dados: %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="380"/>
<source>Could not parse table.</source>
- <translation type="unfinished"></translation>
+ <translation>Não foi possível analisar a tabela.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="426"/>
<source>Database %1 could not be attached to database %2, so the data of table %3 will be copied with SQLiteStudio as a mediator. This method can be slow for huge tables, so please be patient.</source>
- <translation type="unfinished"></translation>
+ <translation>Banco de dados %1 não pôde ser ligado ao banco de dados %2, de modo que os dados da tabela %3 vão ser copiados com o SQLiteStudio como um mediador. Este metodo pode ser lento para grande tabelas, por favor seja paciente. </translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="447"/>
<source>Error while copying data for table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Erro ao copiar data para tabela %1:%2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="466"/>
<location filename="../dbobjectorganizer.cpp" line="473"/>
<location filename="../dbobjectorganizer.cpp" line="496"/>
<source>Error while copying data to table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Erro ao copiar data para tabela %1:%2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="535"/>
@@ -243,17 +243,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -341,23 +341,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -365,43 +365,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -417,7 +417,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -435,41 +435,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -833,9 +833,14 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation type="unfinished"></translation>
</message>
@@ -852,13 +857,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -913,17 +918,17 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,28 +1031,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm
index 24f5549..c638942 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm
Binary files differ
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
index 7e8bb9d..4716a1d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<TS version="2.1" language="ru_RU">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation>Не указана база данных для выполнения запросов.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation>Не открыта база данных для выполнения запросов.</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Невозможно отключить внешние ключи в базе данных. Подробности: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Невозможно начать транзакцию. Подробности: %1</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation>Прервано</translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation>Невозможно завершить транзакцию. Подробности: %1</translation>
@@ -239,23 +239,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<location filename="../dbobjectorganizer.cpp" line="780"/>
<location filename="../dbobjectorganizer.cpp" line="789"/>
<source>Could not parse object &apos;%1&apos; in order to move or copy it.</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно проанализировать объект &apos;%1&apos; для его перемещения либо копирования.</translation>
</message>
</context>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation>Целевой файл существует, но не может быть перезаписан.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation>Невозможно найти подходящий модуль для создания целевой базы данных.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation>Ошибка при конвертации базы данных: %1</translation>
</message>
@@ -343,23 +343,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Ошибка при подсчёте ширины столбца данных для экспорта результатов запроса: %1</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation>Невозможно проанализировать структуру %1. Данный объект будет исключён при выполнении экспорта.</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation>Ошибка при считывании данных для экспорта из таблицы %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation>Ошибка при подсчёте количества данных для экспорта из таблицы %1: %2</translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation>Ошибка при подсчёте ширины столбца данных для экспорта из таблицы %1: %2</translation>
</message>
@@ -367,43 +367,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation>Неверное количество аргументов для функции &apos;%1&apos;. Ожидаемое количество: %2, передано: %3.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation>Функция не зарегистрирована в SQLiteStudio: %1(%2)</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation>Функция %1(%2) зарегистрирована для языка %3, однако модуль поддержки этого языка на данный момент не загружен.</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation>Неверный шаблон регулярного выражения: %1</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation>Невозможно открыть файл %1 для чтения: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation>Невозможно открыть файл %1 для записи: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation>Ошибка при записи в файл %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation>Неподдерживаемый скриптовый язык: %1</translation>
</message>
@@ -419,7 +419,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation>Импорт данных в таблицу &apos;%1&apos; выполнен успешно.</translation>
</message>
@@ -437,41 +437,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Невозможно начать транзакцию для импорта данных: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation>Невозможно завершить транзакцию для импортированных данных: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation>Невозможно создать таблицу для импорта: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation>Ошибка при импорте данных: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Прервано.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation>Невозможно импортировать строку данных № %1. Строка пропущена. Подробности проблемы: %2</translation>
</message>
@@ -835,9 +835,14 @@ Error details: %2</source>
<translation>SQLite %1 не поддерживает операторы текущей даты и текущего времени в выражениях.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation>SQLite %1 не поддерживает оператор &apos;%2&apos; в выражениях.</translation>
</message>
@@ -854,13 +859,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation>Переполнение стека анализатора</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation>Синтаксическая ошибка</translation>
</message>
@@ -915,17 +920,17 @@ Error details: %2</source>
<translation>Заполняющий код не может быть пустым.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation>Невозможно определить источник данных для столбца: %1</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно определить таблицу для столбца &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation>Невозможно инициализировать файл конфигурации. Любые изменения конфигурации и история запросов будут утеряны после перезапуска приложения. Попытки инициализации файла предпринимались в следующих местах: %1.</translation>
</message>
@@ -1033,28 +1038,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation>Выполнение прервано.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation>База данных не открыта.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Одновременно может быть выполнен только один запрос.</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation>Возникла ошибка при выполнении запроса count(*), поэтому разбивка данных по страницам отключена. Детали ошибки из базы данных: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation>SQLiteStudio не удалось извлечь метаданные из запроса. Результаты нельзя будет редактировать.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
index 4a617e4..3298d89 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>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
@@ -243,17 +243,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation>Cieľový súbor existuje ale nemôže byť prepísaný.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation>Nieje možné nájsť správny databázový plugin pre vytvorenie cieľovej databázy.</translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation>Vyskytla sa chyba počas konvertovania databázy: %1</translation>
</message>
@@ -341,23 +341,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -365,43 +365,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -417,7 +417,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -435,41 +435,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation>Vyskytla sa chyba počas importu dát: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -833,9 +833,14 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation type="unfinished"></translation>
</message>
@@ -852,13 +857,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation>Chyba syntaxe</translation>
</message>
@@ -913,17 +918,17 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,28 +1031,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation>Vyskytla sa chyba počas vykonávania dotazu count(*), dôsledkom čoho bolo zablokované stránkovanie. Detail chyby: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</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 3410fa0..b9c43f2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="zh_CN">
<context>
<name>AbstractDb</name>
<message>
@@ -26,37 +26,37 @@
<context>
<name>ChainExecutor</name>
<message>
- <location filename="../db/chainexecutor.cpp" line="35"/>
+ <location filename="../db/chainexecutor.cpp" line="37"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="41"/>
+ <location filename="../db/chainexecutor.cpp" line="44"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="50"/>
+ <location filename="../db/chainexecutor.cpp" line="54"/>
<source>Could not disable foreign keys in the database. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="57"/>
+ <location filename="../db/chainexecutor.cpp" line="62"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="84"/>
+ <location filename="../db/chainexecutor.cpp" line="89"/>
<source>Interrupted</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/chainexecutor.cpp" line="145"/>
+ <location filename="../db/chainexecutor.cpp" line="151"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
<translation type="unfinished"></translation>
@@ -243,17 +243,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>DbVersionConverter</name>
<message>
- <location filename="../dbversionconverter.cpp" line="913"/>
+ <location filename="../dbversionconverter.cpp" line="916"/>
<source>Target file exists, but could not be overwritten.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="932"/>
+ <location filename="../dbversionconverter.cpp" line="935"/>
<source>Could not find proper database plugin to create target database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="1166"/>
+ <location filename="../dbversionconverter.cpp" line="1169"/>
<source>Error while converting database: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -341,23 +341,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="354"/>
- <location filename="../exportworker.cpp" line="412"/>
+ <location filename="../exportworker.cpp" line="346"/>
+ <location filename="../exportworker.cpp" line="404"/>
<source>Could not parse %1 in order to export it. It will be excluded from the export output.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="616"/>
+ <location filename="../exportworker.cpp" line="608"/>
<source>Error while reading data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="624"/>
+ <location filename="../exportworker.cpp" line="616"/>
<source>Error while counting data to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../exportworker.cpp" line="640"/>
+ <location filename="../exportworker.cpp" line="632"/>
<source>Error while counting data column width to export from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -365,43 +365,43 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>FunctionManagerImpl</name>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="234"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="353"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="371"/>
<source>Invalid regular expression pattern: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="390"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="423"/>
<source>Could not open file %1 for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="445"/>
<source>Could not open file %1 for writting: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="465"/>
<source>Error while writting to file %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="483"/>
<source>Unsupported scripting language: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -417,7 +417,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>ImportManager</name>
<message>
- <location filename="../services/importmanager.cpp" line="93"/>
+ <location filename="../services/importmanager.cpp" line="96"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -435,41 +435,41 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="48"/>
+ <location filename="../importworker.cpp" line="52"/>
<source>Could not commit transaction for imported data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="94"/>
+ <location filename="../importworker.cpp" line="100"/>
<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="99"/>
+ <location filename="../importworker.cpp" line="105"/>
<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="117"/>
+ <location filename="../importworker.cpp" line="124"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="168"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="180"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="126"/>
- <location filename="../importworker.cpp" line="175"/>
+ <location filename="../importworker.cpp" line="133"/>
+ <location filename="../importworker.cpp" line="187"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="175"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -833,9 +833,14 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="759"/>
+ <source>SQLite %1 does not support row value clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../dbversionconverter.cpp" line="770"/>
- <location filename="../dbversionconverter.cpp" line="781"/>
+ <location filename="../dbversionconverter.cpp" line="773"/>
+ <location filename="../dbversionconverter.cpp" line="784"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
<translation type="unfinished"></translation>
</message>
@@ -852,13 +857,13 @@ Error details: %2</source>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
- <location filename="../parser/sqlite3_parse.cpp" line="2171"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="2169"/>
<source>Parser stack overflow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="4465"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5089"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5088"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -913,17 +918,17 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="333"/>
+ <location filename="../selectresolver.cpp" line="352"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="405"/>
+ <location filename="../selectresolver.cpp" line="424"/>
<source>Could not resolve table for column &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <location filename="../services/impl/configimpl.cpp" line="614"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,28 +1031,28 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="137"/>
+ <location filename="../db/queryexecutor.cpp" line="142"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="178"/>
+ <location filename="../db/queryexecutor.cpp" line="183"/>
<source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="186"/>
+ <location filename="../db/queryexecutor.cpp" line="191"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="275"/>
- <location filename="../db/queryexecutor.cpp" line="560"/>
+ <location filename="../db/queryexecutor.cpp" line="294"/>
+ <location filename="../db/queryexecutor.cpp" line="568"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="471"/>
+ <location filename="../db/queryexecutor.cpp" line="479"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/create_linux_portable.sh b/SQLiteStudio3/create_linux_portable.sh
deleted file mode 100644
index 55d4813..0000000
--- a/SQLiteStudio3/create_linux_portable.sh
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/bin/sh
-
-printUsage() {
- echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist|dist_full]"
-}
-
-if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then
- printUsage
- exit 1
-fi
-
-if [ "$#" -eq 3 ] && [ "$3" != "tgz" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ] && [ "$3" != "dist_full" ]; then
- printUsage
- exit 1
-fi
-
-which chrpath >/dev/null
-if [ "$?" -ne 0 ]; then
- echo "chrpath program missing!"
- exit 1
-fi
-
-qt_paths_bin="${2/qmake/qtpaths}"
-$qt_paths_bin -v >/dev/null 2>&1
-if [ "$?" -ne 0 ]; then
- echo "qtpaths program missing!"
- exit 1
-fi
-
-cd $1
-
-required_modules="libQt5Core.so libQt5Concurrent.so libQt5DBus.so libQt5Gui.so libQt5Network.so libQt5PrintSupport.so libQt5Script.so libQt5Widgets.so libQt5Xml.so \
- libQt5Svg.so"
-required_plugins="platforms/libqxcb.so imageformats/libqgif.so imageformats/libqicns.so imageformats/libqico.so imageformats/libqjpeg.so imageformats/libqmng.so \
- imageformats/libqsvg.so imageformats/libqtga.so imageformats/libqtiff.so iconengines/libqsvgicon.so printsupport/libcupsprintersupport.so platformthemes/libqgtk2.so"
-
-qt_lib_dir=`ldd SQLiteStudio/sqlitestudio | grep libQt5Core | awk '{print $3;}'`
-qt_lib_dir=`dirname $qt_lib_dir`
-qt_plugins_dir=`$qt_paths_bin --plugin-dir`
-
-# Create portable dir to store distribution in
-rm -rf portable
-mkdir portable
-cd portable
-portable=`pwd`
-
-# Copy all output from compilation here
-cp -R $1/SQLiteStudio .
-
-# Make lib directory to move all *.so files (sqlitestudio files and Qt files and dependencies)
-cd SQLiteStudio
-
-# Copy SQLite libs
-cd $portable/SQLiteStudio
-sqlite3_lib=`ldd $1/SQLiteStudio/lib/libcoreSQLiteStudio.so | grep libsqlite | awk '{print $3;}'`
-sqlite2_lib=`ldd plugins/libDbSqlite2.so | grep libsqlite | awk '{print $3;}'`
-cp $sqlite3_lib lib
-cp $sqlite2_lib lib
-strip lib/*libsqlite*
-
-# Copy Qt
-cd $portable/SQLiteStudio/lib
-for module in $required_modules; do
- if [ ! -f $qt_lib_dir/$module ]; then
- echo "Required Qt module doesn't exist: $qt_lib_dir/$module"
- exit 1
- fi
- cp -P $qt_lib_dir/$module* .
-
- for dep_lib in `ldd $qt_lib_dir/$module | grep $qt_lib_dir | awk '{print $3;}'`; do
- cp -Pu $dep_lib* .
- done
-done
-
-for lib in `ls *.so`; do
- chrpath -r \$ORIGIN/lib $lib >/dev/null
-done
-
-# Now copy Qt plugins
-cd $portable/SQLiteStudio
-qt_plugin_dirs=()
-for plugin in $required_plugins; do
- if [ ! -f $qt_plugins_dir/$plugin ]; then
- echo "Required Qt plugin doesn't exist: $qt_plugins_dir/$plugin"
- exit 1
- fi
- parts=(${plugin/\// })
- mkdir ${parts[0]} 2>/dev/null
- cp -P $qt_plugins_dir/$plugin ${parts[0]}
-
- # Update rpath in Qt plugins
- cd ${parts[0]}
- for lib in `ls *.so`; do
- chrpath -r \$ORIGIN/../lib $lib >/dev/null
- done
- cd ..
-done
-
-cd $portable/SQLiteStudio
-chrpath -r \$ORIGIN/lib sqlitestudio >/dev/null
-chrpath -r \$ORIGIN/lib sqlitestudiocli >/dev/null
-
-cd $portable
-VERSION=`SQLiteStudio/sqlitestudiocli -v | awk '{print $2}'`
-
-if [ "$3" == "tgz" ]; then
- tar cf sqlitestudio-$VERSION.tar SQLiteStudio
- xz -z sqlitestudio-$VERSION.tar
-elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]; then
- if [ "$3" == "dist" ] || [ "$3" == "dist_full" ]; then
- # Complete
- echo "Building complete package: sqlitestudio-$VERSION.tar.xz"
- tar cf sqlitestudio-$VERSION.tar SQLiteStudio
- xz -z sqlitestudio-$VERSION.tar
-
- # App
- echo "Building incremental update package: sqlitestudio-$VERSION.tar.gz"
- cp -R SQLiteStudio app
- cd app
- if [ "$3" == "dist" ]; then
- rm -rf plugins
- rm -f lib/libQ*
- rm -rf iconengines
- rm -rf imageformats
- rm -rf platforms
- rm -rf platformthemes
- rm -rf printsupport
- find . -type l -exec rm -f {} \;
- fi
- rm -f lib/libicu*
- rm -f lib/libsqlite.so.0 ;# this is for SQLite 2
- tar cf sqlitestudio-$VERSION.tar *
- gzip -9 sqlitestudio-$VERSION.tar
- mv sqlitestudio-$VERSION.tar.gz ..
- cd ..
- rm -rf app
- fi
-
- # Plugins
- mkdir plugins
- SQLiteStudio/sqlitestudio --list-plugins | while read line
- do
- PLUGIN=`echo $line | awk '{print $1}'`
- PLUGIN_VER=`echo $line | awk '{print $2}'`
- if [ -f SQLiteStudio/plugins/lib$PLUGIN.so ]; then
- echo "Building plugin package: $PLUGIN-$PLUGIN_VER.tar.gz"
- cp SQLiteStudio/plugins/lib$PLUGIN.so plugins/
- tar cf $PLUGIN\-$PLUGIN_VER.tar plugins
- gzip -9 $PLUGIN\-$PLUGIN_VER.tar
- fi
- rm -f plugins/*
- done
- rm -rf plugins
-
- echo "Done."
-fi
diff --git a/SQLiteStudio3/create_macosx_bundle.sh b/SQLiteStudio3/create_macosx_bundle.sh
index 51b563a..f5c595b 100755
--- a/SQLiteStudio3/create_macosx_bundle.sh
+++ b/SQLiteStudio3/create_macosx_bundle.sh
@@ -60,12 +60,27 @@ do
install_name_tool -change libguiSQLiteStudio.1.dylib "@rpath/libguiSQLiteStudio.1.dylib" $PLUGIN_FILE
done
+function replaceInfo() {
+ echo Replacing Info.plist
+ cd $1/SQLiteStudio
+ VERSION=`SQLiteStudio.app/Contents/MacOS/sqlitestudiocli -v | awk '{print $2}'`
+ YEAR=`date '+%Y'`
+
+ cd SQLiteStudio.app/Contents
+ sed "s/%VERSION%/$VERSION/g" Info.plist | sed "s/%YEAR%/$YEAR/g" > Info.plist.new
+ echo "New plist:"
+ cat Info.plist.new
+ mv Info.plist.new Info.plist
+}
+
if [ "$3" == "dmg" ]; then
$qt_deploy_bin SQLiteStudio.app -dmg
+ replaceInfo $1
elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]; then
if [ "$3" == "dist" ] || [ "$3" == "dist_full" ]; then
$qt_deploy_bin SQLiteStudio.app -dmg -executable=SQLiteStudio.app/Contents/MacOS/SQLiteStudio -always-overwrite -verbose=3 2> /tmp/log.txt
+ replaceInfo $1
cd $1/SQLiteStudio
VERSION=`SQLiteStudio.app/Contents/MacOS/sqlitestudiocli -v | awk '{print $2}'`
@@ -88,6 +103,7 @@ elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]
rm -rf app
else
$qt_deploy_bin SQLiteStudio.app
+ replaceInfo $1
fi
# Plugins
@@ -108,5 +124,5 @@ elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]
echo "Done."
else
$qt_deploy_bin SQLiteStudio.app
+ replaceInfo $1
fi
-
diff --git a/SQLiteStudio3/create_win32_portable.bat b/SQLiteStudio3/create_win32_portable.bat
deleted file mode 100644
index 6d48245..0000000
--- a/SQLiteStudio3/create_win32_portable.bat
+++ /dev/null
@@ -1,120 +0,0 @@
-@echo off
-
-set QT_DIR=C:\Qt\5.6\mingw49_32\bin
-set ZIP="c:\Program Files\7-Zip\7z.exe"
-
-set QMAKE=%QT_DIR%\qmake.exe
-set OLDDIR=%CD%
-
-rem Find Qt
-if exist %QMAKE% (
- echo Qt found at %QT_DIR%
-) else (
- echo Cannot find Qt
- GOTO:EOF
-)
-
-rem Find 7zip
-if exist %ZIP% (
- echo 7zip found at %ZIP%
-) else (
- echo Cannot find 7zip
- GOTO:EOF
-)
-
-cd %OLDDIR%
-
-rem Clean up
-echo Cleaning up...
-cd ..\output
-rmdir /s /q portable
-
-rem Create a copy
-echo Creating a portable distribution
-mkdir portable\SQLiteStudio
-xcopy SQLiteStudio portable\SQLiteStudio /s /e /q > nul
-
-rem Remove .a files from app dir
-cd portable\SQLiteStudio
-del /q *.a
-set PORTABLE=%CD%
-
-rem Remove .a files from plugins dir
-cd plugins
-del /q *.a
-rem Copy Qt files
-cd %QT_DIR%
-set QT_LIB_LIST=Qt5Core Qt5Gui Qt5Network Qt5PrintSupport Qt5Script Qt5Svg Qt5Widgets Qt5Xml icudt53 icuin53 icuuc53 libgcc_s_dw2-1 libstdc++-6 libwinpthread-1
-for %%i in (%QT_LIB_LIST%) do (
- copy "%%i.dll" %PORTABLE% > nul
-)
-copy qt.conf %PORTABLE% > nul
-
-mkdir %PORTABLE%\iconengines %PORTABLE%\imageformats %PORTABLE%\platforms %PORTABLE%\printsupport
-cd %QT_DIR%\..\plugins
-
-copy iconengines\qsvgicon.dll %PORTABLE%\iconengines > nul
-copy platforms\qwindows.dll %PORTABLE%\platforms > nul
-copy printsupport\windowsprintersupport.dll %PORTABLE%\printsupport > nul
-for %%i in (qdds qgif qicns qico qjpeg qsvg qtga qtiff qwbmp) do (
- copy imageformats\%%i.dll %PORTABLE%\imageformats > nul
-)
-
-rem Copy app-specific deps
-cd %OLDDIR%\..\..\lib
-copy *.dll %PORTABLE% > nul
-
-call:getAppVersion
-cd %PORTABLE%\..
-%ZIP% a -r sqlitestudio-%APP_VERSION%.zip SQLiteStudio > nul
-
-rem Incremental package
-echo Creating incremental update package
-cd %PORTABLE%\..
-mkdir incremental\SQLiteStudio
-xcopy SQLiteStudio incremental\SQLiteStudio /s /e /q > nul
-cd incremental\SQLiteStudio
-del /q Qt5*.dll
-del /q icu*.dll
-del /q libgcc* libstdc* libwinpthread*
-rmdir /s /q iconengines imageformats platforms printsupport plugins
-
-cd %PORTABLE%\..\incremental
-%ZIP% a -r sqlitestudio-%APP_VERSION%.zip SQLiteStudio > nul
-
-rem Plugin packages
-echo Creating plugin updates
-cd %PORTABLE%\..
-for /f "delims=" %%p in ('SQLiteStudio\SQLiteStudio.exe --list-plugins') do (
- call:preparePlugin %%p
-)
-
-cd %OLDDIR%
-GOTO:EOF
-
-:preparePlugin
- set plugin=%~1
- set plugin_ver=%~2
- if exist SQLiteStudio\plugins\%plugin%.dll (
- echo Creating plugin update: %plugin%
- mkdir plugins\%plugin%\SQLiteStudio\plugins
- copy SQLiteStudio\plugins\%plugin%.dll plugins\%plugin%\SQLiteStudio\plugins > nul
-
- cd plugins\%plugin%
- %ZIP% a -r ..\%plugin%-%plugin_ver%.zip SQLiteStudio > nul
- cd ..\..
- )
-GOTO:EOF
-
-:getAppVersion
- pushd
- cd %PORTABLE%
- for /f "delims=" %%v in ('sqlitestudiocli --version') do (
- call:getAppVersionFromSecondArgument %%v
- )
- popd
-GOTO:EOF
-
-:getAppVersionFromSecondArgument
- set APP_VERSION=%~2
-GOTO:EOF
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
index 7354997..f8390a1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
@@ -393,9 +393,6 @@ void TableForeignKeyPanel::readTables()
resolver.setIgnoreSystemObjects(true);
QStringList tables = resolver.getTables(); // TODO named db attach not supported
- SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(constraint->parentStatement());
- tables.removeOne(createTable->table);
-
tables.sort(Qt::CaseInsensitive);
ui->fkTableCombo->addItems(tables);
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
index be26d9f..4a04736 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
@@ -10,8 +10,8 @@
SqlQueryItem::SqlQueryItem(QObject *parent) :
QObject(parent)
{
- setUncommited(false);
- setCommitingError(false);
+ setUncommitted(false);
+ setCommittingError(false);
setRowId(RowId());
setColumn(nullptr);
}
@@ -36,36 +36,36 @@ void SqlQueryItem::setRowId(const RowId& rowId)
QStandardItem::setData(rowId, DataRole::ROWID);
}
-bool SqlQueryItem::isUncommited() const
+bool SqlQueryItem::isUncommitted() const
{
- return QStandardItem::data(DataRole::UNCOMMITED).toBool();
+ return QStandardItem::data(DataRole::UNCOMMITTED).toBool();
}
-void SqlQueryItem::setUncommited(bool uncommited)
+void SqlQueryItem::setUncommitted(bool uncommitted)
{
- QStandardItem::setData(QVariant(uncommited), DataRole::UNCOMMITED);
- if (!uncommited)
+ QStandardItem::setData(QVariant(uncommitted), DataRole::UNCOMMITTED);
+ if (!uncommitted)
{
setOldValue(QVariant());
- setCommitingError(false);
+ setCommittingError(false);
}
}
void SqlQueryItem::rollback()
{
setValue(getOldValue(), true, true);
- setUncommited(false);
+ setUncommitted(false);
setDeletedRow(false);
}
-bool SqlQueryItem::isCommitingError() const
+bool SqlQueryItem::isCommittingError() const
{
- return QStandardItem::data(DataRole::COMMITING_ERROR).toBool();
+ return QStandardItem::data(DataRole::COMMITTING_ERROR).toBool();
}
-void SqlQueryItem::setCommitingError(bool isError)
+void SqlQueryItem::setCommittingError(bool isError)
{
- QStandardItem::setData(QVariant(isError), DataRole::COMMITING_ERROR);
+ QStandardItem::setData(QVariant(isError), DataRole::COMMITTING_ERROR);
}
bool SqlQueryItem::isNewRow() const
@@ -113,7 +113,7 @@ void SqlQueryItem::setValue(const QVariant &value, bool limited, bool loadedFrom
// It's modified when:
// - original and new value is different (value or NULL status), while it's not loading from DB
- // - this item was already marked as uncommited
+ // - this item was already marked as uncommitted
bool modified = (
(
newValue != origValue ||
@@ -121,7 +121,7 @@ void SqlQueryItem::setValue(const QVariant &value, bool limited, bool loadedFrom
) &&
!loadedFromDb
) ||
- isUncommited();
+ isUncommitted();
if (modified && !getOldValue().isValid())
setOldValue(origValue);
@@ -134,10 +134,10 @@ void SqlQueryItem::setValue(const QVariant &value, bool limited, bool loadedFrom
QStandardItem::setData(newValue, DataRole::VALUE);
setLimitedValue(limited);
- setUncommited(modified);
+ setUncommitted(modified);
// Value for display (in a cell) will always be limited, for performance reasons
- QStandardItem::setData("x", DataRole::VALUE_FOR_DISPLAY); // the same trick as with the DataRole::VALUE
+ setValueForDisplay("x"); // the same trick as with the DataRole::VALUE
if (!limited)
{
int theLimit = SqlQueryModel::getCellDataLengthLimit();
@@ -396,11 +396,15 @@ QVariant SqlQueryItem::data(int role) const
QString SqlQueryItem::loadFullData()
{
SqlQueryModelColumn* col = getColumn();
- if (col->editionForbiddenReason.size() > 0)
- {
- qWarning() << "Tried to load full cell which is not editable. This should be already handled in Editor class when invoking edition action.";
- return tr("This cell is not editable, because: %1").arg(SqlQueryModelColumn::resolveMessage(col->editionForbiddenReason.values().first()));
- }
+
+ // Yes, this function won't be called in case of trying to edit the cell - it's handled in the Editor.
+ // However this function can be called from the FormView, to display full contents of the read-only property.
+ // I'll keep it for some time just in case. To be removed in future.
+// if (col->editionForbiddenReason.size() > 0)
+// {
+// qWarning() << "Tried to load full cell which is not editable. This should be already handled in Editor class when invoking edition action.";
+// return tr("This cell is not editable, because: %1").arg(SqlQueryModelColumn::resolveMessage(col->editionForbiddenReason.values().first()));
+// }
// This should not happen anymore (since WITHOUT ROWID tables should be handled properly now,
// but we will keep this here for a while, just in case.
@@ -422,22 +426,37 @@ QString SqlQueryItem::loadFullData()
Dialect dialect = db->getDialect();
// Query
- RowIdConditionBuilder rowIdBuilder;
- rowIdBuilder.setRowId(getRowId());
- QString query = "SELECT %1 FROM %2 WHERE " + rowIdBuilder.build();
+ QString query;
+ QHash<QString,QVariant> queryArgs;
+ QString column = wrapObjIfNeeded(col->column, dialect);
+ if (col->editionForbiddenReason.size() > 0)
+ {
+ static_qstring(tpl, "SELECT %1 FROM (%2) LIMIT 1 OFFSET %3");
+
+ // The query
+ query = tpl.arg(column, model->getQuery(), QString::number(index().row()));
+ }
+ else
+ {
+ static_qstring(tpl, "SELECT %1 FROM %2 WHERE %3");
- // Column
- query = query.arg(wrapObjIfNeeded(col->column, dialect));
+ // Db and table
+ QString source = wrapObjIfNeeded(col->table, dialect);
+ if (!col->database.isNull())
+ source.prepend(wrapObjIfNeeded(col->database, dialect)+".");
- // Database and table
- QString source = wrapObjIfNeeded(col->table, dialect);
- if (!col->database.isNull())
- source.prepend(wrapObjIfNeeded(col->database, dialect)+".");
+ // ROWID
+ RowIdConditionBuilder rowIdBuilder;
+ rowIdBuilder.setRowId(getRowId());
+ QString rowId = rowIdBuilder.build();
+ queryArgs = rowIdBuilder.getQueryArgs();
- query = query.arg(source);
+ // The query
+ query = tpl.arg(column, source, rowId);
+ }
// Get the data
- SqlQueryPtr results = db->exec(query, rowIdBuilder.getQueryArgs());
+ SqlQueryPtr results = db->exec(query, queryArgs);
if (results->isError())
return results->getErrorText();
@@ -453,6 +472,6 @@ QVariant SqlQueryItem::getFullValue()
QVariant originalValue = getValue();
loadFullData();
QVariant result = getValue();
- setValue(originalValue, true, !isUncommited());
+ setValue(originalValue, true, !isUncommitted());
return result;
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.h
index b2552cd..805d275 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.h
@@ -21,8 +21,8 @@ class GUI_API_EXPORT SqlQueryItem : public QObject, public QStandardItem
VALUE = 1002,
LIMITED_VALUE = 1003,
COLUMN = 1004,
- UNCOMMITED = 1005,
- COMMITING_ERROR = 1006,
+ UNCOMMITTED = 1005,
+ COMMITTING_ERROR = 1006,
NEW_ROW = 1007,
DELETED = 1008,
OLD_VALUE = 1009,
@@ -39,12 +39,12 @@ class GUI_API_EXPORT SqlQueryItem : public QObject, public QStandardItem
RowId getRowId() const;
void setRowId(const RowId& rowId);
- bool isUncommited() const;
- void setUncommited(bool uncommited);
+ bool isUncommitted() const;
+ void setUncommitted(bool uncommitted);
void rollback();
- bool isCommitingError() const;
- void setCommitingError(bool isError);
+ bool isCommittingError() const;
+ void setCommittingError(bool isError);
bool isNewRow() const;
void setNewRow(bool isNew);
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
index 19090ad..74a82ca 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
@@ -17,6 +17,9 @@
#include <QVBoxLayout>
#include <QResizeEvent>
#include <QScrollBar>
+#include <limits>
+
+bool SqlQueryItemDelegate::warnedAboutHugeContents = false;
SqlQueryItemDelegate::SqlQueryItemDelegate(QObject *parent) :
QStyledItemDelegate(parent)
@@ -28,9 +31,9 @@ void SqlQueryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
QStyledItemDelegate::paint(painter, option, index);
SqlQueryItem* item = getItem(index);
- if (item->isUncommited())
+ if (item->isUncommitted())
{
- painter->setPen(item->isCommitingError() ? CFG_UI.Colors.DataUncommitedError.get() : CFG_UI.Colors.DataUncommited.get());
+ painter->setPen(item->isCommittingError() ? CFG_UI.Colors.DataUncommittedError.get() : CFG_UI.Colors.DataUncommitted.get());
painter->setBrush(Qt::NoBrush);
painter->drawRect(option.rect.x(), option.rect.y(), option.rect.width()-1, option.rect.height()-1);
}
@@ -47,21 +50,24 @@ QWidget* SqlQueryItemDelegate::createEditor(QWidget* parent, const QStyleOptionV
if (item->isDeletedRow())
{
- notifyWarn(tr("Cannot edit this cell. Details: %2").arg(tr("The row is marked for deletion.")));
+ notifyWarn(tr("Cannot edit this cell. Details: %1").arg(tr("The row is marked for deletion.")));
return nullptr;
}
if (!item->getColumn()->canEdit())
{
- notifyWarn(tr("Cannot edit this cell. Details: %2").arg(item->getColumn()->getEditionForbiddenReason()));
+ notifyWarn(tr("Cannot edit this cell. Details: %1").arg(item->getColumn()->getEditionForbiddenReason()));
return nullptr;
}
- if (item->isLimitedValue())
- item->loadFullData();
+ if (item->isLimitedValue() && !item->loadFullData().isNull() && model->isStructureOutOfDate())
+ {
+ notifyWarn(tr("Cannot edit this cell. Details: %1").arg(tr("Structure of this table has changed since last data was loaded. Reload the data to proceed.")));
+ return nullptr;
+ }
if (!item->getColumn()->getFkConstraints().isEmpty())
- return getFkEditor(item, parent);
+ return getFkEditor(item, parent, model);
return getEditor(item->getValue().userType(), parent);
}
@@ -71,13 +77,15 @@ QString SqlQueryItemDelegate::displayText(const QVariant& value, const QLocale&
UNUSED(locale);
if (value.type() == QVariant::Double)
- return doubleToString(value.toDouble());
+ return doubleToString(value);
return QStyledItemDelegate::displayText(value, locale);
}
void SqlQueryItemDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
{
+ // No need to check or load full data, it is already preloaded if necessary in createEditor().
+
QComboBox* cb = dynamic_cast<QComboBox*>(editor);
QLineEdit* le = dynamic_cast<QLineEdit*>(editor);
if (cb) {
@@ -129,23 +137,40 @@ void SqlQueryItemDelegate::setModelDataForFk(QComboBox* cb, QAbstractItemModel*
if (cbModel->isExecutionInProgress() || !cbModel->isAllDataLoaded())
return;
+ QString cbText = cb->currentText();
+ if (CFG_UI.General.KeepNullWhenEmptyValue.get() && model->data(index, Qt::EditRole).isNull() && cbText.isEmpty())
+ return;
+
int idx = cb->currentIndex();
if (idx < 0 || idx >= cbModel->rowCount())
{
- model->setData(index, cb->currentText());
+ model->setData(index, cbText, Qt::EditRole);
+ return;
+ }
+
+ QList<SqlQueryItem *> row = cbModel->getRow(idx);
+ if (!row[0])
+ {
+ // This happens when inexisting value is confirmed with "Enter" key,
+ // cause rowCount() is apparently incremented, but items not yet.
+ model->setData(index, cbText, Qt::EditRole);
return;
}
- QVariant comboData = cbModel->getRow(idx)[0]->getValue();
- if (cb->currentText() != comboData.toString())
- comboData = cb->currentText();
+ QVariant comboData = row[0]->getValue();
+ if (cbText != comboData.toString())
+ comboData = cbText;
- model->setData(index, comboData);
+ model->setData(index, comboData, Qt::EditRole);
}
void SqlQueryItemDelegate::setModelDataForLineEdit(QLineEdit* editor, QAbstractItemModel* model, const QModelIndex& index) const
{
QString value = editor->text();
+
+ if (CFG_UI.General.KeepNullWhenEmptyValue.get() && model->data(index, Qt::EditRole).isNull() && value.isEmpty())
+ return;
+
bool ok;
QVariant variant = value.toLongLong(&ok);
if (ok)
@@ -169,11 +194,18 @@ void SqlQueryItemDelegate::setEditorDataForLineEdit(QLineEdit* le, const QModelI
QVariant value = index.data(Qt::EditRole);
if (value.userType() == QVariant::Double)
{
- le->setText(doubleToString(value.toDouble()));
+ le->setText(doubleToString(value));
return;
}
- le->setText(value.toString());
+ QString str = value.toString();
+ if (str.size() > HUGE_CONTENTS_WARNING_LIMIT && !warnedAboutHugeContents)
+ {
+ NOTIFY_MANAGER->warn(tr("Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu)."));
+ warnedAboutHugeContents = true;
+ }
+
+ le->setText(str);
}
SqlQueryItem* SqlQueryItemDelegate::getItem(const QModelIndex &index) const
@@ -186,6 +218,7 @@ QWidget* SqlQueryItemDelegate::getEditor(int type, QWidget* parent) const
{
UNUSED(type);
QLineEdit *editor = new QLineEdit(parent);
+ editor->setMaxLength(std::numeric_limits<int>::max());
editor->setFrame(editor->style()->styleHint(QStyle::SH_ItemView_DrawDelegateFrame, 0, editor));
return editor;
@@ -257,12 +290,15 @@ QString SqlQueryItemDelegate::getSqlForFkEditor(SqlQueryItem* item) const
return sql.arg(selectedCols.join(", "), fkConfitionTables.join(", "), conditionsStr);
}
-qlonglong SqlQueryItemDelegate::getRowCountForFkEditor(Db* db, const QString& query) const
+qlonglong SqlQueryItemDelegate::getRowCountForFkEditor(Db* db, const QString& query, bool* isError) const
{
static_qstring(tpl, "SELECT count(*) FROM (%1)");
QString sql = tpl.arg(query);
SqlQueryPtr result = db->exec(sql);
+ if (isError)
+ *isError = result->isError();
+
return result->getSingleCell().toLongLong();
}
@@ -283,21 +319,35 @@ void SqlQueryItemDelegate::fkDataReady()
// Set selected combo value to initial value from the cell
QComboBox* cb = modelToFkCombo[model];
QVariant value = modelToFkInitialValue[model];
- QModelIndexList idxList = model->findIndexes(SqlQueryItem::DataRole::VALUE, value, 1);
-
- int idx = 0;
- if (idxList.size() > 0)
- idx = idxList.first().row();
+ if (model->rowCount() > 0)
+ {
+ QModelIndex startIdx = model->index(0, 0);
+ QModelIndex endIdx = model->index(model->rowCount() - 1, 0);
+ QModelIndexList idxList = model->findIndexes(startIdx, endIdx, SqlQueryItem::DataRole::VALUE, value, 1);
+
+ if (idxList.size() > 0)
+ cb->setCurrentIndex(idxList.first().row());
+ else
+ cb->setCurrentText(value.toString());
+ }
+ else
+ {
+ cb->setCurrentText(value.toString());
+ }
+}
- cb->setCurrentIndex(idx);
+void SqlQueryItemDelegate::fkDataFailed(const QString &errorText)
+{
+ notifyWarn(tr("Cannot edit this cell. Details: %1").arg(errorText));
}
-QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent) const
+QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent, const SqlQueryModel* model) const
{
QString sql = getSqlForFkEditor(item);
- Db* db = item->getModel()->getDb();
- qlonglong rowCount = getRowCountForFkEditor(db, sql);
+ Db* db = model->getDb();
+ bool countingError = false;
+ qlonglong rowCount = getRowCountForFkEditor(db, sql, &countingError);
if (rowCount > MAX_ROWS_FOR_FK)
{
notifyWarn(tr("Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.")
@@ -306,6 +356,12 @@ QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent)
return getEditor(item->getValue().userType(), parent);
}
+ if (rowCount == 0 && countingError && model->isStructureOutOfDate())
+ {
+ notifyWarn(tr("Cannot edit this cell. Details: %1").arg(tr("Structure of this table has changed since last data was loaded. Reload the data to proceed.")));
+ return nullptr;
+ }
+
QComboBox *cb = new QComboBox(parent);
cb->setEditable(true);
@@ -321,30 +377,31 @@ QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent)
queryView->setMinimumWidth(wd);
});
- SqlQueryModel* model = new SqlQueryModel(queryView);
- model->setView(queryView);
+ SqlQueryModel* queryModel = new SqlQueryModel(queryView);
+ queryModel->setView(queryView);
// Mapping of model to cb, so we can update combo when data arrives.
- modelToFkInitialValue[model] = item->getValue();
- modelToFkCombo[model] = cb;
- connect(cb, &QComboBox::destroyed, [this, model](QObject*)
+ modelToFkInitialValue[queryModel] = item->getValue();
+ modelToFkCombo[queryModel] = cb;
+ connect(cb, &QComboBox::destroyed, [this, queryModel](QObject*)
{
- modelToFkCombo.remove(model);
- modelToFkInitialValue.remove(model);
+ modelToFkCombo.remove(queryModel);
+ modelToFkInitialValue.remove(queryModel);
});
// When execution is done, update combo.
- connect(model, SIGNAL(executionSuccessful()), this, SLOT(fkDataReady()));
+ connect(queryModel, SIGNAL(executionSuccessful()), this, SLOT(fkDataReady()));
+ connect(queryModel, SIGNAL(executionFailed(QString)), this, SLOT(fkDataFailed(QString)));
// Setup combo, model, etc.
- cb->setModel(model);
+ cb->setModel(queryModel);
cb->setView(queryView);
cb->setModelColumn(0);
- model->setHardRowLimit(MAX_ROWS_FOR_FK);
- model->setDb(db);
- model->setQuery(sql);
- model->executeQuery();
+ queryModel->setHardRowLimit(MAX_ROWS_FOR_FK);
+ queryModel->setDb(db);
+ queryModel->setQuery(sql);
+ queryModel->executeQuery();
queryView->verticalHeader()->setVisible(false);
queryView->horizontalHeader()->setVisible(true);
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
index 82d12c3..a35ef9a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
@@ -26,23 +26,26 @@ class GUI_API_EXPORT SqlQueryItemDelegate : public QStyledItemDelegate
private:
SqlQueryItem* getItem(const QModelIndex &index) const;
QWidget* getEditor(int type, QWidget* parent) const;
- QWidget* getFkEditor(SqlQueryItem* item, QWidget* parent) const;
+ QWidget* getFkEditor(SqlQueryItem* item, QWidget* parent, const SqlQueryModel *model) const;
void setEditorDataForLineEdit(QLineEdit* le, const QModelIndex& index) const;
void setEditorDataForFk(QComboBox* cb, const QModelIndex& index) const;
void setModelDataForFk(QComboBox* editor, QAbstractItemModel* model, const QModelIndex& index) const;
void setModelDataForLineEdit(QLineEdit* editor, QAbstractItemModel* model, const QModelIndex& index) const;
QString getSqlForFkEditor(SqlQueryItem* item) const;
- qlonglong getRowCountForFkEditor(Db* db, const QString& query) const;
+ qlonglong getRowCountForFkEditor(Db* db, const QString& query, bool *isError) const;
QSet<QWidget*> editorsWithAsyncExecution;
mutable QHash<SqlQueryModel*, QComboBox*> modelToFkCombo;
mutable QHash<SqlQueryModel*, QVariant> modelToFkInitialValue;
+ static bool warnedAboutHugeContents;
static const qlonglong MAX_ROWS_FOR_FK = 10000L;
static const int CELL_LENGTH_LIMIT = 30;
+ static const int HUGE_CONTENTS_WARNING_LIMIT = 32767; // pow(2, 16) / 2 - 1
private slots:
void fkDataReady();
+ void fkDataFailed(const QString& errorText);
};
#endif // SQLQUERYITEMDELEGATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
index 15cf1bf..009b05a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
@@ -32,6 +32,11 @@ SqlQueryModel::SqlQueryModel(QObject *parent) :
connect(queryExecutor, SIGNAL(executionFinished(SqlQueryPtr)), this, SLOT(handleExecFinished(SqlQueryPtr)));
connect(queryExecutor, SIGNAL(executionFailed(int,QString)), this, SLOT(handleExecFailed(int,QString)));
connect(queryExecutor, SIGNAL(resultsCountingFinished(quint64,quint64,int)), this, SLOT(resultsCountingFinished(quint64,quint64,int)));
+
+ NotifyManager* notifyManager = NotifyManager::getInstance();
+ connect(notifyManager, SIGNAL(objectModified(Db*,QString,QString)), this, SLOT(handlePossibleTableModification(Db*,QString,QString)));
+ connect(notifyManager, SIGNAL(objectRenamed(Db*,QString,QString,QString)), this, SLOT(handlePossibleTableRename(Db*,QString,QString,QString)));
+
setItemPrototype(new SqlQueryItem());
existingModels << this;
}
@@ -97,12 +102,12 @@ void SqlQueryModel::executeQueryInternal()
return;
}
- QList<SqlQueryItem*> uncommitedItems = getUncommitedItems();
- if (uncommitedItems.size() > 0)
+ QList<SqlQueryItem*> uncommittedItems = getUncommittedItems();
+ if (uncommittedItems.size() > 0)
{
- QMessageBox::StandardButton result = QMessageBox::question(nullptr, tr("Uncommited data"),
- tr("There are uncommited data changes. Do you want to proceed anyway? "
- "All uncommited changes will be lost."));
+ QMessageBox::StandardButton result = QMessageBox::question(nullptr, tr("Uncommitted data"),
+ tr("There are uncommitted data changes. Do you want to proceed anyway? "
+ "All uncommitted changes will be lost."));
if (result != QMessageBox::Yes)
{
@@ -110,7 +115,7 @@ void SqlQueryModel::executeQueryInternal()
return;
}
- rollback(uncommitedItems);
+ rollback(uncommittedItems);
}
emit executionStarted();
@@ -219,9 +224,9 @@ QList<SqlQueryItem*> SqlQueryModel::findItems(const QModelIndex& start, const QM
return toItemList(findIndexes(start, end, role, value, hits));
}
-QList<SqlQueryItem*> SqlQueryModel::getUncommitedItems() const
+QList<SqlQueryItem*> SqlQueryModel::getUncommittedItems() const
{
- return findItems(SqlQueryItem::DataRole::UNCOMMITED, true);
+ return findItems(SqlQueryItem::DataRole::UNCOMMITTED, true);
}
QList<QList<SqlQueryItem*> > SqlQueryModel::groupItemsByRows(const QList<SqlQueryItem*>& items)
@@ -253,14 +258,14 @@ QHash<AliasedTable, QList<SqlQueryItem*> > SqlQueryModel::groupItemsByTable(cons
return itemsByTable;
}
-QList<SqlQueryItem*> SqlQueryModel::filterOutCommitedItems(const QList<SqlQueryItem*>& items)
+QList<SqlQueryItem*> SqlQueryModel::filterOutCommittedItems(const QList<SqlQueryItem*>& items)
{
// This method doesn't make use of QMutableListIterator to remove items from passed list,
// because it would require list in argument to drop 'const' keyword and it's already
// there in calling methods, so it's easier to copy list and filter on the fly.
QList<SqlQueryItem*> newList;
foreach (SqlQueryItem* item, items)
- if (item->isUncommited())
+ if (item->isUncommitted())
newList << item;
return newList;
@@ -291,13 +296,13 @@ QList<SqlQueryItem*> SqlQueryModel::toItemList(const QModelIndexList& indexes) c
void SqlQueryModel::commit()
{
- QList<SqlQueryItem*> items = findItems(SqlQueryItem::DataRole::UNCOMMITED, true);
+ QList<SqlQueryItem*> items = findItems(SqlQueryItem::DataRole::UNCOMMITTED, true);
commitInternal(items);
}
void SqlQueryModel::commit(const QList<SqlQueryItem*>& items)
{
- commitInternal(filterOutCommitedItems(items));
+ commitInternal(filterOutCommittedItems(items));
}
bool SqlQueryModel::commitRow(const QList<SqlQueryItem*>& itemsInRow)
@@ -334,13 +339,13 @@ void SqlQueryModel::rollbackRow(const QList<SqlQueryItem*>& itemsInRow)
void SqlQueryModel::rollback()
{
- QList<SqlQueryItem*> items = findItems(SqlQueryItem::DataRole::UNCOMMITED, true);
+ QList<SqlQueryItem*> items = findItems(SqlQueryItem::DataRole::UNCOMMITTED, true);
rollbackInternal(items);
}
void SqlQueryModel::rollback(const QList<SqlQueryItem*>& items)
{
- rollbackInternal(filterOutCommitedItems(items));
+ rollbackInternal(filterOutCommittedItems(items));
}
void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
@@ -364,11 +369,11 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
int numberOfItemsAdded = groupItemsByRows(findItems(SqlQueryItem::DataRole::NEW_ROW, true)).size();
int numberOfItemsDeleted = groupItemsByRows(findItems(SqlQueryItem::DataRole::DELETED, true)).size();
- // Removing "commit error" mark from items that are going to be commited now
+ // Removing "commit error" mark from items that are going to be committed now
for (SqlQueryItem* item : items)
- item->setCommitingError(false);
+ item->setCommittingError(false);
- // Grouping by row and commiting
+ // Grouping by row and committing
QList<QList<SqlQueryItem*>> groupedItems = groupItemsByRows(items);
emit aboutToCommit(groupedItems.size());
@@ -382,11 +387,11 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
ok = false;
break;
}
- emit commitingStepFinished(step++);
+ emit committingStepFinished(step++);
}
- // Getting current uncommited list (after rows deletion it may be different)
- QList<SqlQueryItem*> itemsLeft = findItems(SqlQueryItem::DataRole::UNCOMMITED, true);
+ // Getting current uncommitted list (after rows deletion it may be different)
+ QList<SqlQueryItem*> itemsLeft = findItems(SqlQueryItem::DataRole::UNCOMMITTED, true);
// Getting common elements of initial and current item list, because of a possibility of the selective commit
QMutableListIterator<SqlQueryItem*> it(itemsLeft);
@@ -396,20 +401,20 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
it.remove();
}
- // Commiting to the database
+ // Committing to the database
if (ok)
{
if (!db->commit())
{
ok = false;
- notifyError(tr("An error occurred while commiting the transaction: %1").arg(db->getErrorText()));
+ notifyError(tr("An error occurred while committing the transaction: %1").arg(db->getErrorText()));
}
else
{
- // Commited successfully
+ // Committed successfully
for (SqlQueryItem* item : itemsLeft)
{
- item->setUncommited(false);
+ item->setUncommitted(false);
item->setNewRow(false);
}
@@ -418,7 +423,7 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
for (int row : rowsDeletedSuccessfullyInTheCommit)
removeRow(row - removeOffset++); // deleting row decrements all rows below
- emit commitStatusChanged(getUncommitedItems().size() > 0);
+ emit commitStatusChanged(getUncommittedItems().size() > 0);
}
}
rowsDeletedSuccessfullyInTheCommit.clear();
@@ -450,7 +455,7 @@ void SqlQueryModel::rollbackInternal(const QList<SqlQueryItem*>& items)
foreach (const QList<SqlQueryItem*>& itemsInRow, groupedItems)
rollbackRow(itemsInRow);
- emit commitStatusChanged(getUncommitedItems().size() > 0);
+ emit commitStatusChanged(getUncommittedItems().size() > 0);
}
void SqlQueryModel::reload()
@@ -485,7 +490,7 @@ StrHash<QString> SqlQueryModel::attachDependencyTables()
if (!attachDb)
{
qCritical() << "Could not resolve database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
- << "This may result in errors when commiting some data modifications.";
+ << "This may result in errors when committing some data modifications.";
continue;
}
@@ -493,7 +498,7 @@ StrHash<QString> SqlQueryModel::attachDependencyTables()
if (attachName.isNull())
{
qCritical() << "Could not attach database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
- << "This may result in errors when commiting some data modifications.";
+ << "This may result in errors when committing some data modifications.";
continue;
}
@@ -646,9 +651,9 @@ bool SqlQueryModel::commitEditedRow(const QList<SqlQueryItem*>& itemsInRow)
if (results->isError())
{
for (SqlQueryItem* item : items)
- item->setCommitingError(true);
+ item->setCommittingError(true);
- notifyError(tr("An error occurred while commiting the data: %1").arg(results->getErrorText()));
+ notifyError(tr("An error occurred while committing the data: %1").arg(results->getErrorText()));
return false;
}
@@ -783,7 +788,7 @@ QList<QStandardItem*> SqlQueryModel::loadRow(SqlResultsRowPtr row)
SqlQueryItem* item = nullptr;
RowId rowId;
int colIdx = 0;
- foreach (const QVariant& value, row->valueList().mid(rowIdColumns))
+ foreach (const QVariant& value, row->valueList().mid(0, resultColumnCount))
{
item = new SqlQueryItem();
rowId = getRowIdValue(row, colIdx);
@@ -920,16 +925,27 @@ void SqlQueryModel::readColumns()
{
columns.clear();
tableToRowIdColumn.clear();
+ tablesInUse.clear();
// Reading column mapping for ROWID columns
int totalRowIdCols = 0;
- AliasedTable table;
+ AliasedTable aliasedTable;
+ DbAndTable dbAndTable;
foreach (const QueryExecutor::ResultRowIdColumnPtr& resCol, queryExecutor->getRowIdResultColumns())
{
- table.setDatabase(resCol->dbName);
- table.setTable(resCol->table);
- table.setTableAlias(resCol->tableAlias);
- tableToRowIdColumn[table] = resCol->queryExecutorAliasToColumn;
+ if (resCol->dbName.isEmpty() || resCol->dbName.toLower() == "main" || resCol->dbName.toLower() == "temp")
+ dbAndTable.setDb(db);
+ else if (!resCol->dbName.isEmpty())
+ dbAndTable.setDb(DBLIST->getByName(resCol->dbName));
+
+ dbAndTable.setDatabase(resCol->database);
+ dbAndTable.setTable(resCol->table);
+ tablesInUse << dbAndTable;
+
+ aliasedTable.setDatabase(resCol->dbName);
+ aliasedTable.setTable(resCol->table);
+ aliasedTable.setTableAlias(resCol->tableAlias);
+ tableToRowIdColumn[aliasedTable] = resCol->queryExecutorAliasToColumn;
totalRowIdCols += resCol->queryExecutorAliasToColumn.size();
}
@@ -937,9 +953,12 @@ void SqlQueryModel::readColumns()
readColumnDetails();
// Preparing other usful information about columns
- rowIdColumns = totalRowIdCols;
+ resultColumnCount = queryExecutor->getResultColumns().size();
tablesForColumns = getTablesForColumns();
columnEditionStatus = getColumnEditionEnabledList();
+
+ // We have fresh info about columns
+ structureOutOfDate = false;
}
void SqlQueryModel::readColumnDetails()
@@ -1191,7 +1210,7 @@ void SqlQueryModel::resultsCountingFinished(quint64 rowsAffected, quint64 rowsRe
void SqlQueryModel::itemValueEdited(SqlQueryItem* item)
{
UNUSED(item);
- emit commitStatusChanged(getUncommitedItems().size() > 0);
+ emit commitStatusChanged(getUncommittedItems().size() > 0);
}
void SqlQueryModel::changeSorting(int logicalIndex, Qt::SortOrder order)
@@ -1382,7 +1401,7 @@ void SqlQueryModel::updateSelectiveCommitRollbackActions(const QItemSelection& s
{
foreach (SqlQueryItem* item, selectedItems)
{
- if (item->isUncommited())
+ if (item->isUncommitted())
{
result = true;
break;
@@ -1405,7 +1424,7 @@ void SqlQueryModel::addNewRowInternal(int rowIdx)
item = new SqlQueryItem();
item->setNewRow(true);
- item->setUncommited(true);
+ item->setUncommitted(true);
item->setColumn(columnModel);
items << item;
@@ -1526,6 +1545,21 @@ int SqlQueryModel::getRowsPerPage() const
return rowsPerPage;
}
+int SqlQueryModel::getQueryCountLimitForSmartMode() const
+{
+ return queryExecutor->getQueryCountLimitForSmartMode();
+}
+
+void SqlQueryModel::setQueryCountLimitForSmartMode(int value)
+{
+ queryExecutor->setQueryCountLimitForSmartMode(value);
+}
+
+bool SqlQueryModel::isStructureOutOfDate() const
+{
+ return structureOutOfDate;
+}
+
bool SqlQueryModel::isAllDataLoaded() const
{
return allDataLoaded;
@@ -1596,14 +1630,31 @@ void SqlQueryModel::deleteSelectedRows()
}
item->setDeletedRow(true);
- item->setUncommited(true);
+ item->setUncommitted(true);
}
}
foreach (SqlQueryItem* item, newItemsToDelete)
removeRow(item->index().row());
- emit commitStatusChanged(getUncommitedItems().size() > 0);
+ emit commitStatusChanged(getUncommittedItems().size() > 0);
+}
+
+void SqlQueryModel::handlePossibleTableModification(Db *modDb, const QString &database, const QString &objName)
+{
+ QString dbName = database.toLower() == "main" ? QString() : database;
+ DbAndTable dbAndTable(modDb, dbName, objName);
+ if (tablesInUse.contains(dbAndTable))
+ structureOutOfDate = true;
+}
+
+void SqlQueryModel::handlePossibleTableRename(Db *modDb, const QString &database, const QString &oldName, const QString &newName)
+{
+ UNUSED(newName);
+ QString dbName = database.toLower() == "main" ? QString() : database;
+ DbAndTable dbAndTable(modDb, dbName, oldName);
+ if (tablesInUse.contains(dbAndTable))
+ structureOutOfDate = true;
}
void SqlQueryModel::applySqlFilter(const QString& value)
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
index 6af937b..7a4c282 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
@@ -55,7 +55,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QModelIndexList findIndexes(const QModelIndex &start, const QModelIndex& end, int role, const QVariant &value, int hits = -1) const;
QList<SqlQueryItem*> findItems(int role, const QVariant &value, int hits = -1) const;
QList<SqlQueryItem*> findItems(const QModelIndex &start, const QModelIndex& end, int role, const QVariant &value, int hits = -1) const;
- QList<SqlQueryItem*> getUncommitedItems() const;
+ QList<SqlQueryItem*> getUncommittedItems() const;
QList<SqlQueryItem*> getRow(int row);
int columnCount(const QModelIndex& parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
@@ -140,10 +140,15 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
bool isAllDataLoaded() const;
+ bool isStructureOutOfDate() const;
+
+ int getQueryCountLimitForSmartMode() const;
+ void setQueryCountLimitForSmartMode(int value);
+
protected:
class CommitUpdateQueryBuilder : public RowIdConditionBuilder
{
- public:
+ public:
void clear();
void setDatabase(const QString& database);
@@ -230,13 +235,21 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QList<SqlQueryModelColumnPtr> columns;
/**
+ * @brief tablesInUse
+ * List of tables that are used in currently presented data set.
+ * Database in those tables (if not empty) is a symbolic name, as listed on database list.
+ * If database is empty, then it was not explicitly typed in the query, so it's the local main db.
+ */
+ QList<DbAndTable> tablesInUse;
+
+ /**
* @brief Limit of data length in loaded cells.
*
* Bytes or utf-8 characters.
* Having this set to 10000 gives about 290 MB of memory consumption
* while having 30 columns and 1000 result rows loaded, all with 10000 bytes.
*/
- static const int cellDataLengthLimit = 10000;
+ static const int cellDataLengthLimit = 100;
private:
struct TableDetails
@@ -275,7 +288,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
void storeStep1NumbersFromExecution();
void storeStep2NumbersFromExecution();
void restoreNumbersToQueryExecutor();
- QList<SqlQueryItem*> filterOutCommitedItems(const QList<SqlQueryItem*>& items);
+ QList<SqlQueryItem*> filterOutCommittedItems(const QList<SqlQueryItem*>& items);
void commitInternal(const QList<SqlQueryItem*>& items);
void rollbackInternal(const QList<SqlQueryItem*>& items);
void reloadInternal();
@@ -369,12 +382,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
*/
int hardRowLimit = -1;
- /**
- * @brief rowIdColumns
- * We skip first this number of columns from the results of the SQL query, because those are ROWID columns.
- * The query returns ROWID columns, because this is how QueryExecutor provides this information.
- */
- int rowIdColumns = 0;
+ int resultColumnCount = 0;
/**
* @brief tablesForColumns
@@ -392,6 +400,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
bool allDataLoaded = false;
+ bool structureOutOfDate = false;
+
/**
* @brief Set of existing model objects, updated for each construction and destruction.
*
@@ -425,6 +435,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
void addNewRow();
void addMultipleRows();
void deleteSelectedRows();
+ void handlePossibleTableModification(Db* modDb, const QString& database, const QString& objName);
+ void handlePossibleTableRename(Db* modDb, const QString& database, const QString& oldName, const QString& newName);
signals:
/**
@@ -475,7 +487,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
* @brief commitStatusChanged
* @param commitAvailable Tells if there's anything to commit/rollback or not.
*
- * Emitted after any results cell has been modified and can now be commited or rolled back.
+ * Emitted after any results cell has been modified and can now be committed or rolled back.
* Also emitted after commit and rollback.
*/
void commitStatusChanged(bool commitAvailable);
@@ -484,8 +496,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
* @brief selectiveCommitStatusChanged
* @param commitAvailable Tells if there's anything to commit/rollback or not.
*
- * Emitted when user changes selection in the view, so if the selection includes any uncommited cells,
- * then this signal will be emitted with parameter true, or if there is no uncommited cells,
+ * Emitted when user changes selection in the view, so if the selection includes any uncommitted cells,
+ * then this signal will be emitted with parameter true, or if there is no uncommitted cells,
* then it will be emitted with parameter false.
*/
void selectiveCommitStatusChanged(bool commitAvailable);
@@ -498,7 +510,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
void sortingUpdated(const QueryExecutor::SortList& sortOrder);
void aboutToCommit(int totalSteps);
- void commitingStepFinished(int step);
+ void committingStepFinished(int step);
void commitFinished();
void itemEditionEnded(SqlQueryItem* item);
};
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
index 50a0480..9f58fd2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
@@ -48,7 +48,8 @@ void SqlQueryView::init()
itemDelegate = new SqlQueryItemDelegate();
setItemDelegate(itemDelegate);
setMouseTracking(true);
- setEditTriggers(QAbstractItemView::AnyKeyPressed);
+// setEditTriggers(QAbstractItemView::AnyKeyPressed);
+ setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::EditKeyPressed);
setContextMenuPolicy(Qt::CustomContextMenu);
contextMenu = new QMenu(this);
@@ -114,29 +115,29 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq
// Selected items count
int selCount = selectedItems.size();
- // Uncommited items count
- QList<SqlQueryItem*> uncommitedItems = getModel()->getUncommitedItems();
- int uncommitedCount = uncommitedItems.size();
+ // Uncommitted items count
+ QList<SqlQueryItem*> uncommittedItems = getModel()->getUncommittedItems();
+ int uncommittedCount = uncommittedItems.size();
- // Uncommited & selected items count
- int uncommitedSelCount = 0;
- foreach (SqlQueryItem* item, uncommitedItems)
+ // Uncommitted & selected items count
+ int uncommittedSelCount = 0;
+ foreach (SqlQueryItem* item, uncommittedItems)
if (selectedItems.contains(item))
- uncommitedSelCount++;
+ uncommittedSelCount++;
- if (uncommitedCount > 0)
+ if (uncommittedCount > 0)
contextMenu->addAction(actionMap[COMMIT]);
- if (uncommitedSelCount > 0)
+ if (uncommittedSelCount > 0)
contextMenu->addAction(actionMap[SELECTIVE_COMMIT]);
- if (uncommitedCount > 0)
+ if (uncommittedCount > 0)
contextMenu->addAction(actionMap[ROLLBACK]);
- if (uncommitedSelCount > 0)
+ if (uncommittedSelCount > 0)
contextMenu->addAction(actionMap[SELECTIVE_ROLLBACK]);
- if (uncommitedCount > 0 && selCount > 0)
+ if (uncommittedCount > 0 && selCount > 0)
contextMenu->addSeparator();
if (selCount > 0)
@@ -395,8 +396,11 @@ void SqlQueryView::goToReferencedRow(const QString& table, const QString& column
static_qstring(sqlTpl, "SELECT * FROM %1 WHERE %2 = %3");
+ Dialect dialect = db->getDialect();
+ QString wrappedTable = wrapObjIfNeeded(table, dialect);
+ QString wrappedColumn = wrapObjIfNeeded(column, dialect);
QString valueStr = wrapValueIfNeeded(value.toString());
- EditorWindow* win = MAINWINDOW->openSqlEditor(db, sqlTpl.arg(table, column, valueStr));
+ EditorWindow* win = MAINWINDOW->openSqlEditor(db, sqlTpl.arg(wrappedTable, wrappedColumn, valueStr));
if (!win)
return;
@@ -516,7 +520,7 @@ void SqlQueryView::copy()
{
itemValue = item->getFullValue();
if (itemValue.userType() == QVariant::Double)
- cells << doubleToString(itemValue.toDouble());
+ cells << doubleToString(itemValue);
else
cells << itemValue.toString();
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
index 20c878b..3a9f0b0 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
@@ -2,6 +2,7 @@
#include "common/utils_sql.h"
#include "sqlqueryitem.h"
#include "services/notifymanager.h"
+#include "uiconfig.h"
#include <QDebug>
#include <QApplication>
#include <schemaresolver.h>
@@ -28,6 +29,13 @@ void SqlTableModel::setDatabaseAndTable(const QString& database, const QString&
this->table = table;
setQuery("SELECT * FROM "+getDataSource());
+ QString dbName = database;
+ if (database.toLower() == "main" || database.isEmpty())
+ dbName = QString();
+
+ tablesInUse.clear();
+ tablesInUse << DbAndTable(db, dbName, table);
+
SchemaResolver resolver(db);
isWithOutRowIdTable = resolver.isWithoutRowIdTable(database, table);
}
@@ -37,7 +45,6 @@ SqlQueryModel::Features SqlTableModel::features() const
return INSERT_ROW|DELETE_ROW|FILTERING;
}
-
bool SqlTableModel::commitAddedRow(const QList<SqlQueryItem*>& itemsInRow)
{
QList<SqlQueryModelColumnPtr> modelColumns = getTableColumnModels(table);
@@ -70,9 +77,9 @@ bool SqlTableModel::commitAddedRow(const QList<SqlQueryItem*>& itemsInRow)
if (result->isError())
{
foreach (SqlQueryItem* item, itemsInRow)
- item->setCommitingError(true);
+ item->setCommittingError(true);
- notifyError(tr("Error while commiting new row: %1").arg(result->getErrorText()));
+ notifyError(tr("Error while committing new row: %1").arg(result->getErrorText()));
return false;
}
@@ -135,7 +142,7 @@ bool SqlTableModel::commitDeletedRow(const QList<SqlQueryItem*>& itemsInRow)
}
if (!SqlQueryModel::commitDeletedRow(itemsInRow))
- qCritical() << "Could not delete row from SqlQueryView while commiting row deletion.";
+ qCritical() << "Could not delete row from SqlQueryView while committing row deletion.";
return true;
}
@@ -168,7 +175,7 @@ void SqlTableModel::applyStringFilter(const QString& value)
Dialect dialect = db->getDialect();
QStringList conditions;
foreach (SqlQueryModelColumnPtr column, columns)
- conditions << wrapObjIfNeeded(column->column, dialect)+" LIKE '%"+value+"%'";
+ conditions << wrapObjIfNeeded(column->column, dialect)+" LIKE '%"+escapeString(value)+"%'";
setQuery("SELECT * FROM "+getDataSource()+" WHERE "+conditions.join(" OR "));
executeQuery();
@@ -185,7 +192,7 @@ void SqlTableModel::applyRegExpFilter(const QString& value)
Dialect dialect = db->getDialect();
QStringList conditions;
foreach (SqlQueryModelColumnPtr column, columns)
- conditions << wrapObjIfNeeded(column->column, dialect)+" REGEXP '"+value+"'";
+ conditions << wrapObjIfNeeded(column->column, dialect)+" REGEXP '"+escapeString(value)+"'";
setQuery("SELECT * FROM "+getDataSource()+" WHERE "+conditions.join(" OR "));
executeQuery();
@@ -392,7 +399,10 @@ void SqlTableModel::updateColumnsAndValues(const QList<SqlQueryItem*>& itemsInRo
item = itemsInRow[i++];
if (item->getValue().isNull())
{
- if (modelColumn->isDefault())
+ if (CFG_UI.General.UseDefaultValueForNull.get() && modelColumn->isDefault())
+ continue;
+
+ if (modelColumn->isNotNull()) // value is null, but it's NOT NULL, try using DEFAULT, or fail.
continue;
if (modelColumn->isPk() && modelColumn->isAutoIncr())
diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
index 69ca9cd..6666834 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
@@ -153,7 +153,7 @@ void DataView::initWidgetCover()
widgetCover = new WidgetCover(this);
widgetCover->initWithProgressBarOnly("%v / %m");
connect(model, SIGNAL(aboutToCommit(int)), this, SLOT(coverForGridCommit(int)));
- connect(model, SIGNAL(commitingStepFinished(int)), this, SLOT(updateGridCommitCover(int)));
+ connect(model, SIGNAL(committingStepFinished(int)), this, SLOT(updateGridCommitCover(int)));
connect(model, SIGNAL(commitFinished()), this, SLOT(hideGridCommitCover()));
}
@@ -650,7 +650,7 @@ void DataView::updateFilterIcon()
}
}
-bool DataView::isUncommited() const
+bool DataView::isUncommitted() const
{
return uncommittedGrid || uncommittedForm;
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.h b/SQLiteStudio3/guiSQLiteStudio/dataview.h
index fcab9f2..73ccfe7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dataview.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dataview.h
@@ -78,7 +78,7 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer
SqlQueryView* getGridView() const;
SqlQueryModel* getModel() const;
QToolBar* getToolBar(int toolbar) const;
- bool isUncommited() const;
+ bool isUncommitted() const;
static void staticInit();
static void insertAction(ExtActionPrototype* action, ToolBar toolbar = TOOLBAR_GRID);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
index fbe0a38..018eeb6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
@@ -976,6 +976,13 @@ QString DbTree::getSelectedViewName() const
return view;
}
+QList<DbTreeItem *> DbTree::getSelectedItems(DbTreeItem::Type itemType)
+{
+ return getSelectedItems([itemType](DbTreeItem* item)
+ {
+ return item->getType() == itemType;
+ });
+}
void DbTree::refreshSchema(Db* db)
{
@@ -1498,7 +1505,7 @@ void DbTree::resetAutoincrement()
if (res->isError())
notifyError(tr("An error occurred while trying to reset autoincrement value for table '%1': %2").arg(table, res->getErrorText()));
else
- notifyInfo(tr("Autoincrement value for table '%1' has been reset successfly.").arg(table));
+ notifyInfo(tr("Autoincrement value for table '%1' has been reset successfully.").arg(table));
}
void DbTree::eraseTableData()
@@ -1507,27 +1514,36 @@ void DbTree::eraseTableData()
if (!db || !db->isValid())
return;
- DbTreeItem* item = ui->treeView->currentItem();
- QString table = item->getTable();
- if (table.isNull())
+ QList<DbTreeItem *> items = getSelectedItems(DbTreeItem::Type::TABLE);
+ if (items.isEmpty())
{
qWarning() << "Tried to erase table data, while table wasn't selected in DbTree.";
return;
}
- QMessageBox::StandardButton btn = QMessageBox::question(this, tr("Erase table data"), tr("Are you sure you want to delete all data from table '%1'?")
- .arg(table));
+ QStringList tables;
+ for (DbTreeItem* item : items)
+ tables << item->getTable();
+
+ QMessageBox::StandardButton btn = QMessageBox::question(this, tr("Erase table data"), tr("Are you sure you want to delete all data from table(s): %1?")
+ .arg(tables.join(", ")));
if (btn != QMessageBox::Yes)
return;
- SqlQueryPtr res = db->exec(QString("DELETE FROM %1;").arg(wrapObjIfNeeded(table, db->getDialect())));
- if (res->isError())
+ static_qstring(DELETE_SQL, "DELETE FROM %1;");
+ Dialect dialect = db->getDialect();
+ SqlQueryPtr res;
+ for (const QString& table : tables)
{
- notifyError(tr("An error occurred while trying to delete data from table '%1': %2").arg(table, res->getErrorText()));
- return;
- }
+ res = db->exec(DELETE_SQL.arg(wrapObjIfNeeded(table, dialect)));
+ if (res->isError())
+ {
+ notifyError(tr("An error occurred while trying to delete data from table '%1': %2").arg(table, res->getErrorText()));
+ return;
+ }
- notifyInfo(tr("All data has been deleted for table '%1'.").arg(table));
+ notifyInfo(tr("All data has been deleted for table '%1'.").arg(table));
+ }
}
void DbTree::addColumn(DbTreeItem* item)
@@ -1592,6 +1608,11 @@ void DbTree::currentChanged(const QModelIndex &current, const QModelIndex &previ
void DbTree::deleteSelected(ItemFilterFunc filterFunc)
{
+ deleteItems(getSelectedItems(filterFunc));
+}
+
+QList<DbTreeItem*> DbTree::getSelectedItems(DbTree::ItemFilterFunc filterFunc)
+{
QModelIndexList idxList = ui->treeView->getSelectedIndexes();
QList<DbTreeItem*> items;
DbTreeItem* item;
@@ -1603,10 +1624,10 @@ void DbTree::deleteSelected(ItemFilterFunc filterFunc)
items << item;
}
-
- deleteItems(items);
+ return items;
}
+
void DbTree::deleteItems(const QList<DbTreeItem*>& itemsToDelete)
{
QList<DbTreeItem*> items = itemsToDelete;
@@ -1741,12 +1762,22 @@ void DbTree::generateInsertForTable()
void DbTree::generateUpdateForTable()
{
+ Db* db = getSelectedDb();
+ QString table = getSelectedTableName();
+ QueryGenerator generator;
+ QString sql = generator.generateUpdateOfTable(db, table);
+ MAINWINDOW->openSqlEditor(db, sql);
}
void DbTree::generateDeleteForTable()
{
+ Db* db = getSelectedDb();
+ QString table = getSelectedTableName();
+ QueryGenerator generator;
+ QString sql = generator.generateDeleteFromTable(db, table);
+ MAINWINDOW->openSqlEditor(db, sql);
}
void DbTree::setupDefShortcuts()
@@ -1759,11 +1790,6 @@ void DbTree::setupDefShortcuts()
BIND_SHORTCUTS(DbTree, Action);
}
-void DbTree::closeEvent(QCloseEvent *e)
-{
- e->ignore();
-}
-
int qHash(DbTree::Action action)
{
return static_cast<int>(action);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
index ea415a4..f97e5eb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
@@ -123,7 +123,6 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
protected:
void createActions();
void setupDefShortcuts();
- void closeEvent(QCloseEvent* e);
private:
typedef std::function<bool(DbTreeItem*)> ItemFilterFunc;
@@ -148,6 +147,8 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
QString getSelectedIndexName() const;
QString getSelectedTriggerName() const;
QString getSelectedViewName() const;
+ QList<DbTreeItem*> getSelectedItems(DbTreeItem::Type itemType);
+ QList<DbTreeItem*> getSelectedItems(ItemFilterFunc filterFunc = nullptr);
static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem);
static bool areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* dstItem);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui
index 687415d..780b306 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui
@@ -14,7 +14,7 @@
<bool>false</bool>
</property>
<property name="features">
- <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+ <set>QDockWidget::AllDockWidgetFeatures</set>
</property>
<property name="allowedAreas">
<set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
index c11221d..9fe88c2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
@@ -35,7 +35,7 @@ DbTreeModel::DbTreeModel()
connectDbManagerSignals();
connect(CFG, SIGNAL(massSaveBegins()), this, SLOT(massSaveBegins()));
- connect(CFG, SIGNAL(massSaveCommited()), this, SLOT(massSaveCommited()));
+ connect(CFG, SIGNAL(massSaveCommitted()), this, SLOT(massSaveCommitted()));
connect(CFG_UI.General.ShowSystemObjects, SIGNAL(changed(QVariant)), this, SLOT(markSchemaReloadingRequired()));
dbOrganizer = new DbObjectOrganizer(confirmReferencedTables, resolveNameConflict, confirmConversion, confirmConversionErrors);
@@ -743,7 +743,7 @@ void DbTreeModel::massSaveBegins()
requireSchemaReloading = false;
}
-void DbTreeModel::massSaveCommited()
+void DbTreeModel::massSaveCommitted()
{
if (requireSchemaReloading)
{
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
index 122421a..50b080d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
@@ -116,7 +116,7 @@ class GUI_API_EXPORT DbTreeModel : public QStandardItemModel
void dbUnloaded(Db* db);
void dbLoaded(Db* db);
void massSaveBegins();
- void massSaveCommited();
+ void massSaveCommitted();
void markSchemaReloadingRequired();
void dbObjectsMoveFinished(bool success, Db* srcDb, Db* dstDb);
void dbObjectsCopyFinished(bool success, Db* srcDb, Db* dstDb);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
index 42c7099..85ae12d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
@@ -199,7 +199,7 @@ void ConfigDialog::init()
<< CFG_UI.General.ShowVirtualTableLabels;
for (CfgEntry* cfg : entries)
- connect(cfg, &CfgEntry::changed, this, &ConfigDialog::markRequiresSchemasRefresh);
+ connect(cfg, SIGNAL(changed(QVariant)), this, SLOT(markRequiresSchemasRefresh()));
ui->activeStyleCombo->addItems(QStyleFactory::keys());
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
index c69ad20..6bedd25 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
@@ -229,7 +229,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
- <number>5</number>
+ <number>1</number>
</property>
<widget class="QWidget" name="databaseListPage">
<layout class="QVBoxLayout" name="verticalLayout_36">
@@ -408,7 +408,7 @@
<x>0</x>
<y>0</y>
<width>564</width>
- <height>504</height>
+ <height>580</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_34">
@@ -418,10 +418,13 @@
<string>Data browsing and editing</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0">
- <widget class="QLabel" name="rowsPerPageLabel">
+ <item row="1" column="0">
+ <widget class="QLabel" name="initColWidthLimitLabel">
+ <property name="toolTip">
+ <string>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</string>
+ </property>
<property name="text">
- <string>Number of data rows per page:</string>
+ <string>Limit initial data column width to (in pixels):</string>
</property>
</widget>
</item>
@@ -444,16 +447,6 @@
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="initColWidthLimitLabel">
- <property name="toolTip">
- <string>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</string>
- </property>
- <property name="text">
- <string>Limit initial data column width to (in pixels):</string>
- </property>
- </widget>
- </item>
<item row="1" column="1">
<widget class="QSpinBox" name="initColWidthLimitSpin">
<property name="toolTip">
@@ -473,7 +466,7 @@
</property>
</widget>
</item>
- <item row="2" column="0" colspan="2">
+ <item row="2" column="0">
<widget class="QCheckBox" name="tolltipInDataViewCheck">
<property name="toolTip">
<string>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</string>
@@ -486,6 +479,39 @@
</property>
</widget>
</item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="rowsPerPageLabel">
+ <property name="text">
+ <string>Number of data rows per page:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="keepNullWhenEmptyCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Keep NULL value when entering empty value</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.KeepNullWhenEmptyValue</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QCheckBox" name="useDefaultForNullCheck">
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="text">
+ <string>Use DEFAULT value (if defined), when committing NULL value</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.UseDefaultValueForNull</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -766,7 +792,7 @@
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="dontShowDdlPreview">
<property name="text">
- <string>Don't show DDL preview dialog when commiting schema changes</string>
+ <string>Don't show DDL preview dialog when committing schema changes</string>
</property>
<property name="cfg" stdset="0">
<string notr="true">General.DontShowDdlPreview</string>
@@ -1001,8 +1027,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>596</width>
- <height>487</height>
+ <width>447</width>
+ <height>307</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_31">
@@ -1422,7 +1448,7 @@
<string notr="true">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;Abcdefgh&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
@@ -1513,8 +1539,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
- <width>290</width>
- <height>323</height>
+ <width>268</width>
+ <height>328</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@@ -1635,8 +1661,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
- <width>352</width>
- <height>806</height>
+ <width>331</width>
+ <height>829</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -1921,17 +1947,17 @@ p, li { white-space: pre-wrap; }
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
- <widget class="QLabel" name="dataViewUncommitedLabel">
+ <widget class="QLabel" name="dataViewUncommittedLabel">
<property name="toolTip">
- <string>&lt;p&gt;Any data changes will be outlined with this color, until they're commited to the database.&lt;/p&gt;</string>
+ <string>&lt;p&gt;Any data changes will be outlined with this color, until they're committed to the database.&lt;/p&gt;</string>
</property>
<property name="text">
- <string>Uncommited data outline color</string>
+ <string>Uncommitted data outline color</string>
</property>
</widget>
</item>
<item row="0" column="1">
- <widget class="ColorButton" name="dataViewUncommitedButton">
+ <widget class="ColorButton" name="dataViewUncommittedButton">
<property name="maximumSize">
<size>
<width>50</width>
@@ -1942,14 +1968,14 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
<property name="cfg" stdset="0">
- <string notr="true">Colors.DataUncommited</string>
+ <string notr="true">Colors.DataUncommitted</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="dataViewErrorLabel">
<property name="toolTip">
- <string>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</string>
+ <string>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</string>
</property>
<property name="text">
<string>Commit error outline color</string>
@@ -1968,7 +1994,7 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
<property name="cfg" stdset="0">
- <string notr="true">Colors.DataUncommitedError</string>
+ <string notr="true">Colors.DataUncommittedError</string>
</property>
</widget>
</item>
@@ -2238,7 +2264,7 @@ p, li { white-space: pre-wrap; }
<tabstop>sqlEditorNumberFgButton</tabstop>
<tabstop>sqlEditorBindParamFgButton</tabstop>
<tabstop>sqlEditorValidObjectsButton</tabstop>
- <tabstop>dataViewUncommitedButton</tabstop>
+ <tabstop>dataViewUncommittedButton</tabstop>
<tabstop>dataViewErrorButton</tabstop>
<tabstop>dataViewNullFgButton</tabstop>
<tabstop>dataViewDeletedRowBgButton</tabstop>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
index 6bdf41f..781e25e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
@@ -81,7 +81,6 @@ void DbDialog::showEvent(QShowEvent *e)
int idx = ui->typeCombo->findText(db->getTypeLabel());
ui->typeCombo->setCurrentIndex(idx);
- ui->generateCheckBox->setChecked(false);
ui->fileEdit->setText(db->getPath());
ui->nameEdit->setText(db->getName());
disableTypeAutodetection = false;
@@ -126,19 +125,18 @@ void DbDialog::init()
ui->testConnIcon->setVisible(false);
connect(ui->fileEdit, SIGNAL(textChanged(QString)), this, SLOT(fileChanged(QString)));
- connect(ui->nameEdit, SIGNAL(textChanged(QString)), this, SLOT(nameModified(QString)));
- connect(ui->generateCheckBox, SIGNAL(toggled(bool)), this, SLOT(generateNameSwitched(bool)));
+ connect(ui->nameEdit, SIGNAL(textEdited(QString)), this, SLOT(nameModified(QString)));
connect(ui->browseCreateButton, SIGNAL(clicked()), this, SLOT(browseClicked()));
connect(ui->browseOpenButton, SIGNAL(clicked()), this, SLOT(browseClicked()));
connect(ui->testConnButton, SIGNAL(clicked()), this, SLOT(testConnectionClicked()));
connect(ui->typeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(dbTypeChanged(int)));
- generateNameSwitched(true);
-
layout()->setSizeConstraint(QLayout::SetFixedSize);
if (mode == Mode::ADD && CFG_UI.General.NewDbNotPermanentByDefault.get())
ui->permamentCheckBox->setChecked(false);
+
+ validate();
}
void DbDialog::updateOptions()
@@ -462,55 +460,76 @@ bool DbDialog::testDatabase()
bool DbDialog::validate()
{
// Name
- if (!ui->generateCheckBox->isChecked())
+ bool nameState = true;
+ if (ui->nameEdit->text().isEmpty())
+ {
+ nameState = false;
+ setValidState(ui->nameEdit, false, tr("Enter an unique database name."));
+ }
+
+ Db* registeredDb = nullptr;
+ if (nameState)
{
- if (ui->nameEdit->text().isEmpty())
+ registeredDb = DBLIST->getByName(ui->nameEdit->text(), Qt::CaseInsensitive);
+ if (registeredDb && (mode == Mode::ADD || registeredDb != db))
{
- setValidState(ui->nameEdit, false, tr("Enter an unique database name."));
- return false;
+ nameState = false;
+ setValidState(ui->nameEdit, false, tr("This name is already in use. Please enter unique name."));
}
}
- Db* registeredDb = DBLIST->getByName(ui->nameEdit->text(), Qt::CaseInsensitive);
- if (registeredDb && (mode == Mode::ADD || registeredDb != db))
+ if (nameState)
{
- setValidState(ui->nameEdit, false, tr("This name is already in use. Please enter unique name."));
- return false;
+ if (nameManuallyEdited)
+ setValidStateInfo(ui->nameEdit, tr("<p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p>"));
+ else
+ setValidState(ui->nameEdit, true);
}
- setValidState(ui->nameEdit, true);
// File
+ bool fileState = true;
if (ui->fileEdit->text().isEmpty())
{
setValidState(ui->fileEdit, false, tr("Enter a database file path."));
- return false;
+ fileState = false;
}
- registeredDb = DBLIST->getByPath(ui->fileEdit->text());
- if (registeredDb && (mode == Mode::ADD || registeredDb != db))
+ if (fileState)
{
- setValidState(ui->fileEdit, false, tr("This database is already on the list under name: %1").arg(registeredDb->getName()));
- return false;
+ registeredDb = DBLIST->getByPath(ui->fileEdit->text());
+ if (registeredDb && (mode == Mode::ADD || registeredDb != db))
+ {
+ setValidState(ui->fileEdit, false, tr("This database is already on the list under name: %1").arg(registeredDb->getName()));
+ fileState = false;
+ }
}
- setValidState(ui->fileEdit, true);
+
+ if (fileState)
+ setValidState(ui->fileEdit, true);
// Type
+ bool typeState = true;
if (ui->typeCombo->count() == 0)
{
// No need to set validation message here. SQLite3 plugin is built in,
// so if this happens, something is really, really wrong.
qCritical() << "No db plugins loaded in db dialog!";
- return false;
+ typeState = false;
}
- if (ui->typeCombo->currentIndex() < 0)
+ if (typeState)
{
- setValidState(ui->typeCombo, false, tr("Select a database type."));
- return false;
+ if (ui->typeCombo->currentIndex() < 0)
+ {
+ setValidState(ui->typeCombo, false, tr("Select a database type."));
+ typeState = false;
+ }
}
- setValidState(ui->typeCombo, true);
- return true;
+ if (typeState)
+ setValidState(ui->typeCombo, true);
+
+ return nameState && fileState && typeState;
}
void DbDialog::updateState()
@@ -532,13 +551,12 @@ void DbDialog::typeChanged(int index)
{
UNUSED(index);
updateOptions();
- valueForNameGenerationChanged();
}
void DbDialog::valueForNameGenerationChanged()
{
updateState();
- if (!ui->generateCheckBox->isChecked())
+ if (nameManuallyEdited)
return;
QString generatedName;
@@ -566,21 +584,6 @@ void DbDialog::browseForFile()
setFileDialogInitPathByFile(path);
}
-void DbDialog::generateNameSwitched(bool checked)
-{
- if (checked)
- {
- ui->nameEdit->setPlaceholderText(tr("Auto-generated"));
- valueForNameGenerationChanged();
- }
- else
- {
- ui->nameEdit->setPlaceholderText(tr("Type the name"));
- }
-
- ui->nameEdit->setReadOnly(checked);
-}
-
void DbDialog::fileChanged(const QString &arg1)
{
UNUSED(arg1);
@@ -637,9 +640,9 @@ void DbDialog::dbTypeChanged(int index)
propertyChanged();
}
-void DbDialog::nameModified(const QString &arg1)
+void DbDialog::nameModified(const QString &value)
{
- UNUSED(arg1);
+ nameManuallyEdited = !value.isEmpty();
updateState();
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
index 2beea3e..3d1a9da 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
@@ -70,6 +70,7 @@ class GUI_API_EXPORT DbDialog : public QDialog
DbPluginOption::CustomBrowseHandler customBrowseHandler = nullptr;
bool disableTypeAutodetection = false;
bool doAutoTest = false;
+ bool nameManuallyEdited = false;
static const constexpr int ADDITIONAL_ROWS_BEGIN_INDEX = 1;
@@ -77,13 +78,12 @@ class GUI_API_EXPORT DbDialog : public QDialog
void typeChanged(int index);
void valueForNameGenerationChanged();
void browseForFile();
- void generateNameSwitched(bool checked);
void fileChanged(const QString &arg1);
void browseClicked();
void testConnectionClicked();
void propertyChanged();
void dbTypeChanged(int index);
- void nameModified(const QString &arg1);
+ void nameModified(const QString &value);
public slots:
void accept();
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui
index 6f35079..9878bec 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>455</width>
- <height>365</height>
+ <height>366</height>
</rect>
</property>
<property name="minimumSize">
@@ -80,24 +80,7 @@
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
- <widget class="QLineEdit" name="nameEdit">
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="generateCheckBox">
- <property name="toolTip">
- <string>Generate name basing on file path</string>
- </property>
- <property name="text">
- <string>Generate automatically</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
+ <widget class="QLineEdit" name="nameEdit"/>
</item>
</layout>
</widget>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/quitconfirmdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/quitconfirmdialog.ui
index 6f97934..20d4f21 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/quitconfirmdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/quitconfirmdialog.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>Uncommited changes</string>
+ <string>Uncommitted changes</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.cpp
index 462e57f..7890b3c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.cpp
@@ -1,13 +1,18 @@
#include "triggercolumnsdialog.h"
#include "ui_triggercolumnsdialog.h"
-
+#include "uiutils.h"
#include <QCheckBox>
-TriggerColumnsDialog::TriggerColumnsDialog(QWidget *parent) :
+TriggerColumnsDialog::TriggerColumnsDialog(QWidget *parent, int globalX, int globalY) :
QDialog(parent, Qt::Popup),
+ globalX(globalX),
+ globalY(globalY),
ui(new Ui::TriggerColumnsDialog)
{
ui->setupUi(this);
+
+ connect(ui->selectAllBtn, SIGNAL(clicked(bool)), this, SLOT(selectAll()));
+ connect(ui->deselectAllBtn, SIGNAL(clicked(bool)), this, SLOT(deselectAll()));
}
TriggerColumnsDialog::~TriggerColumnsDialog()
@@ -26,7 +31,7 @@ void TriggerColumnsDialog::addColumn(const QString& name, bool checked)
QStringList TriggerColumnsDialog::getCheckedColumns() const
{
QStringList columns;
- foreach (QCheckBox* cb, checkBoxList)
+ for (QCheckBox* cb : checkBoxList)
{
if (cb->isChecked())
columns << cb->text();
@@ -49,4 +54,17 @@ void TriggerColumnsDialog::changeEvent(QEvent *e)
void TriggerColumnsDialog::showEvent(QShowEvent*)
{
adjustSize();
+ move(globalX, globalY);
+}
+
+void TriggerColumnsDialog::selectAll()
+{
+ for (QCheckBox* cb : checkBoxList)
+ cb->setChecked(true);
+}
+
+void TriggerColumnsDialog::deselectAll()
+{
+ for (QCheckBox* cb : checkBoxList)
+ cb->setChecked(false);
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.h
index 1ba0d69..d7e719c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.h
@@ -15,7 +15,7 @@ class GUI_API_EXPORT TriggerColumnsDialog : public QDialog
Q_OBJECT
public:
- explicit TriggerColumnsDialog(QWidget *parent = 0);
+ explicit TriggerColumnsDialog(QWidget *parent, int globalX, int globalY);
~TriggerColumnsDialog();
void addColumn(const QString& name, bool checked);
@@ -27,7 +27,13 @@ class GUI_API_EXPORT TriggerColumnsDialog : public QDialog
private:
QList<QCheckBox*> checkBoxList;
+ int globalX;
+ int globalY;
Ui::TriggerColumnsDialog *ui = nullptr;
+
+ private slots:
+ void selectAll();
+ void deselectAll();
};
#endif // TRIGGERCOLUMNSDIALOG_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.ui
index 861e17b..b01e01d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggercolumnsdialog.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>334</width>
+ <width>232</width>
<height>300</height>
</rect>
</property>
@@ -61,8 +61,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>316</width>
- <height>237</height>
+ <width>212</width>
+ <height>205</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@@ -83,6 +83,56 @@
</widget>
</item>
<item>
+ <widget class="QFrame" name="selectionButtons">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="selectAllBtn">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Select all</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="deselectAllBtn">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Deselect all</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp
index 12baafd..3254f26 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp
@@ -360,7 +360,9 @@ void TriggerDialog::updateValidation()
void TriggerDialog::showColumnsDialog()
{
- TriggerColumnsDialog dialog(this);
+ QPoint topRight = ui->actionColumns->mapToGlobal(ui->actionColumns->rect().topRight());
+
+ TriggerColumnsDialog dialog(this, topRight.x(), topRight.y());
foreach (const QString& colName, targetColumns)
dialog.addColumn(colName, selectedColumns.contains(colName, Qt::CaseInsensitive));
diff --git a/SQLiteStudio3/guiSQLiteStudio/formview.cpp b/SQLiteStudio3/guiSQLiteStudio/formview.cpp
index 6e62786..0ebb9aa 100644
--- a/SQLiteStudio3/guiSQLiteStudio/formview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/formview.cpp
@@ -143,7 +143,7 @@ bool FormView::isCurrentRowModifiedInGrid()
QModelIndex startIdx = model->index(gridView->getCurrentIndex().row(), 0);
QModelIndex endIdx = model->index(gridView->getCurrentIndex().row(), model->columnCount() - 1);
- return model->findIndexes(startIdx, endIdx, SqlQueryItem::DataRole::UNCOMMITED, true, 1).size() > 0;
+ return model->findIndexes(startIdx, endIdx, SqlQueryItem::DataRole::UNCOMMITTED, true, 1).size() > 0;
}
void FormView::updateDeletedState()
@@ -250,7 +250,7 @@ void FormView::createActions()
void FormView::setupDefShortcuts()
{
- setShortcutContext({ROLLBACK, COMMIT, NEXT_ROW, PREV_ROW, FIRST_ROW, LAST_ROW, INSERT_ROW, DELETE_ROW}, Qt::WidgetWithChildrenShortcut);
+ setShortcutContext({ROLLBACK, COMMIT, NEXT_ROW, PREV_ROW, FIRST_ROW, LAST_ROW, INSERT_ROW, DELETE_ROW}, Qt::ApplicationShortcut);
BIND_SHORTCUTS(FormView, Action);
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/formview.h b/SQLiteStudio3/guiSQLiteStudio/formview.h
index a6a9708..7f84e4f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/formview.h
+++ b/SQLiteStudio3/guiSQLiteStudio/formview.h
@@ -16,10 +16,10 @@ class DataWidgetMapper;
CFG_KEY_LIST(FormView, QObject::tr("Data form view"),
CFG_KEY_ENTRY(COMMIT, Qt::CTRL + Qt::Key_Return, QObject::tr("Commit changes for current row"))
CFG_KEY_ENTRY(ROLLBACK, Qt::CTRL + Qt::Key_Backspace, QObject::tr("Rollback changes for current row"))
- CFG_KEY_ENTRY(FIRST_ROW, Qt::CTRL + Qt::Key_PageUp, QObject::tr("Go to first row on current page"))
- CFG_KEY_ENTRY(NEXT_ROW, Qt::CTRL + Qt::Key_Right, QObject::tr("Go to next row"))
- CFG_KEY_ENTRY(PREV_ROW, Qt::CTRL + Qt::Key_Left, QObject::tr("Go to previous row"))
- CFG_KEY_ENTRY(LAST_ROW, Qt::CTRL + Qt::Key_PageDown, QObject::tr("Go to last row on current page"))
+ CFG_KEY_ENTRY(FIRST_ROW, Qt::CTRL + Qt::ALT + Qt::Key_PageUp, QObject::tr("Go to first row on current page"))
+ CFG_KEY_ENTRY(NEXT_ROW, Qt::CTRL + Qt::ALT + Qt::Key_Right, QObject::tr("Go to next row"))
+ CFG_KEY_ENTRY(PREV_ROW, Qt::CTRL + Qt::ALT + Qt::Key_Left, QObject::tr("Go to previous row"))
+ CFG_KEY_ENTRY(LAST_ROW, Qt::CTRL + Qt::ALT + Qt::Key_PageDown, QObject::tr("Go to last row on current page"))
CFG_KEY_ENTRY(INSERT_ROW, Qt::Key_Insert, QObject::tr("Insert new row"))
CFG_KEY_ENTRY(DELETE_ROW, Qt::CTRL + Qt::Key_Delete, QObject::tr("Delete current row"))
)
diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
index be3e876..60a85ff 100644
--- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
+++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
@@ -31,10 +31,10 @@ QMAKE_CXXFLAGS += -pedantic
DEFINES += GUISQLITESTUDIO_LIBRARY
-TRANSLATIONS += translations/guiSQLiteStudio_it.ts \
+TRANSLATIONS += translations/guiSQLiteStudio_de.ts \
+ translations/guiSQLiteStudio_it.ts \
translations/guiSQLiteStudio_zh_CN.ts \
translations/guiSQLiteStudio_sk.ts \
- translations/guiSQLiteStudio_de.ts \
translations/guiSQLiteStudio_ru.ts \
translations/guiSQLiteStudio_pt_BR.ts \
translations/guiSQLiteStudio_fr.ts \
@@ -418,3 +418,5 @@ DISTFILES += \
+
+
diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc
index 97ed77f..0970b86 100644
--- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc
+++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc
@@ -5,8 +5,12 @@
<file>translations/guiSQLiteStudio_fr.qm</file>
<file>translations/guiSQLiteStudio_sk.qm</file>
<file>translations/guiSQLiteStudio_zh_CN.qm</file>
+ <file>translations/guiSQLiteStudio_de.qm</file>
</qresource>
<qresource prefix="/css">
<file>general.css</file>
</qresource>
</RCC>
+
+
+
diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
index 7547712..2bc63a2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
+++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
@@ -168,6 +168,8 @@ class GUI_API_EXPORT IconManager : public QObject
DEF_ICON(RESULTS_IN_TAB, "results_in_tab")
DEF_ICON(ROLLBACK, "rollback")
DEF_ICON(SAVE_SQL_FILE, "save_sql_file")
+ DEF_ICON(SEARCH, "search")
+ DEF_ICON(SEARCH_AND_REPLACE, "search_and_replace")
DEF_ICON(SET_NULL, "set_null")
DEF_ICON(SORT_COLUMNS, "sort_columns")
DEF_ICON(SORT_COUNT_01, "sort_cnt_01")
diff --git a/SQLiteStudio3/guiSQLiteStudio/icons.qrc b/SQLiteStudio3/guiSQLiteStudio/icons.qrc
index 6c08cc6..8819276 100644
--- a/SQLiteStudio3/guiSQLiteStudio/icons.qrc
+++ b/SQLiteStudio3/guiSQLiteStudio/icons.qrc
@@ -199,5 +199,7 @@
<file>img/tag_hash_del.png</file>
<file>img/tag_hash_edit.png</file>
<file>img/wand.png</file>
+ <file>img/search_and_replace.png</file>
+ <file>img/search.png</file>
</qresource>
</RCC>
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/search.png b/SQLiteStudio3/guiSQLiteStudio/img/search.png
new file mode 100644
index 0000000..7a5ae62
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/search.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/search_and_replace.png b/SQLiteStudio3/guiSQLiteStudio/img/search_and_replace.png
new file mode 100644
index 0000000..a83efa5
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/search_and_replace.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
index 8d80277..f7bcb83 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
@@ -887,8 +887,8 @@ bool MainWindow::confirmQuit(const QList<Committable*>& instances)
for (Committable* c : instances)
{
- if (c->isUncommited())
- dialog.addMessage(c->getQuitUncommitedConfirmMessage());
+ if (c->isUncommitted())
+ dialog.addMessage(c->getQuitUncommittedConfirmMessage());
}
if (dialog.getMessageCount() == 0)
diff --git a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
index f2257c6..685e608 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
@@ -156,7 +156,7 @@ void MdiWindow::changeEvent(QEvent* event)
void MdiWindow::closeEvent(QCloseEvent* e)
{
- if (dbBeingClosed || MAINWINDOW->isClosingApp() || !getMdiChild()->isUncommited())
+ if (dbBeingClosed || MAINWINDOW->isClosingApp() || !getMdiChild()->isUncommitted())
{
QMdiSubWindow::closeEvent(e);
return;
@@ -176,7 +176,7 @@ void MdiWindow::dbAboutToBeDisconnected(Db* db, bool& deny)
if (MAINWINDOW->isClosingApp())
return;
- if (getMdiChild()->isUncommited() && !confirmClose())
+ if (getMdiChild()->isUncommitted() && !confirmClose())
deny = true;
else
dbBeingClosed = true;
@@ -196,7 +196,7 @@ void MdiWindow::dbDisconnected(Db* db)
bool MdiWindow::confirmClose()
{
- QMessageBox msgBox(QMessageBox::Question, tr("Uncommited changes"), getMdiChild()->getQuitUncommitedConfirmMessage(), QMessageBox::Yes|QMessageBox::No, this);
+ QMessageBox msgBox(QMessageBox::Question, tr("Uncommitted changes"), getMdiChild()->getQuitUncommittedConfirmMessage(), QMessageBox::Yes|QMessageBox::No, this);
msgBox.setDefaultButton(QMessageBox::No);
QAbstractButton* closeBtn = msgBox.button(QMessageBox::Yes);
diff --git a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
index ebdf2c0..7e5c2ec 100644
--- a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
@@ -69,6 +69,9 @@ int SearchTextLocator::getStartPosition() const
void SearchTextLocator::setStartPosition(int value)
{
+ if (ignoreCursorMovements)
+ return;
+
startPosition = value;
initialStartPosition = value;
afterDocPositionSwitch = false;
@@ -148,11 +151,18 @@ void SearchTextLocator::replaceCurrent()
if (lastMatchStart == -1 || lastMatchEnd == -1)
return;
+ ignoreCursorMovements = true;
+
QTextCursor cursor(document);
cursor.setPosition(lastMatchStart);
cursor.setPosition(lastMatchEnd, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
cursor.insertText(replaceString);
+
+ ignoreCursorMovements = false;
+
+ // Adjust further lookups according to replaced lenght change.
+ startPosition += replaceString.length() - lookupString.length();
}
bool SearchTextLocator::find(QTextDocument::FindFlags flags)
diff --git a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.h b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.h
index 0cfdb44..02ab9fa 100644
--- a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.h
+++ b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.h
@@ -49,6 +49,7 @@ class GUI_API_EXPORT SearchTextLocator : public QObject
int lastMatchStart = -1;
int lastMatchEnd = -1;
bool afterDocPositionSwitch = false;
+ bool ignoreCursorMovements = false;
// Config parameters
QString lookupString;
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
index 9dc85f7..c3fd257 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
@@ -1,4 +1,5 @@
#include "sqleditor.h"
+#include "log.h"
#include "uiconfig.h"
#include "uiutils.h"
#include "services/config.h"
@@ -93,7 +94,7 @@ void SqlEditor::init()
connect(this, &QWidget::customContextMenuRequested, this, &SqlEditor::customContextMenuRequested);
connect(CFG_UI.Fonts.SqlEditor, SIGNAL(changed(QVariant)), this, SLOT(changeFont(QVariant)));
- connect(CFG, SIGNAL(massSaveCommited()), this, SLOT(configModified()));
+ connect(CFG, SIGNAL(massSaveCommitted()), this, SLOT(configModified()));
}
void SqlEditor::removeErrorMarkers()
@@ -135,10 +136,10 @@ void SqlEditor::createActions()
createAction(MOVE_BLOCK_UP, tr("Move block up", "sql editor"), this, SLOT(moveBlockUp()), this);
createAction(COPY_BLOCK_DOWN, tr("Copy block down", "sql editor"), this, SLOT(copyBlockDown()), this);
createAction(COPY_BLOCK_UP, tr("Copy up down", "sql editor"), this, SLOT(copyBlockUp()), this);
- createAction(FIND, ICONS.ACT_SEARCH, tr("Find", "sql editor"), this, SLOT(find()), this);
+ createAction(FIND, ICONS.SEARCH, tr("Find", "sql editor"), this, SLOT(find()), this);
createAction(FIND_NEXT, tr("Find next", "sql editor"), this, SLOT(findNext()), this);
createAction(FIND_PREV, tr("Find previous", "sql editor"), this, SLOT(findPrevious()), this);
- createAction(REPLACE, tr("Replace", "sql editor"), this, SLOT(replace()), this);
+ createAction(REPLACE, ICONS.SEARCH_AND_REPLACE, tr("Replace", "sql editor"), this, SLOT(replace()), this);
createAction(TOGGLE_COMMENT, tr("Toggle comment", "sql editor"), this, SLOT(toggleComment()), this);
actionMap[CUT]->setEnabled(false);
@@ -213,7 +214,8 @@ bool SqlEditor::handleValidObjectContextMenu(const QPoint& pos)
if (!obj)
return false;
- QString objName = toPlainText().mid(obj->from, (obj->to - obj->from + 1));
+ Dialect dialect = getDialect();
+ QString objName = stripObjName(toPlainText().mid(obj->from, (obj->to - obj->from + 1)), dialect);
validObjContextMenu->clear();
@@ -832,7 +834,7 @@ void SqlEditor::completerRightPressed()
void SqlEditor::parseContents()
{
- if (document()->characterCount() > 100000)
+ if (document()->characterCount() > SqliteSyntaxHighlighter::MAX_QUERY_LENGTH)
{
if (richFeaturesEnabled)
notifyWarn(tr("Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled."));
@@ -860,11 +862,14 @@ void SqlEditor::parseContents()
}
queryParser->setDialect(dialect);
- queryParser->parse(sql);
+ if (richFeaturesEnabled)
+ {
+ queryParser->parse(sql);
+ checkForValidObjects();
+ checkForSyntaxErrors();
+ highlighter->rehighlight();
+ }
- checkForValidObjects();
- checkForSyntaxErrors();
- highlighter->rehighlight();
}
void SqlEditor::checkForSyntaxErrors()
@@ -1494,7 +1499,7 @@ void SqlEditor::mousePressEvent(QMouseEvent* e)
if (obj && e->button() == Qt::LeftButton)
{
QString objName = toPlainText().mid(obj->from, (obj->to - obj->from + 1));
- openObject(obj->dbName, objName);
+ openObject(obj->dbName, stripObjName(objName, getDialect()));
}
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp
index e3e1950..ac8d6cf 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp
@@ -12,7 +12,7 @@ SqliteSyntaxHighlighter::SqliteSyntaxHighlighter(QTextDocument *parent) :
setupFormats();
setupMapping();
setCurrentBlockState(regulartTextBlockState);
- connect(CFG, SIGNAL(massSaveCommited()), this, SLOT(setupFormats()));
+ connect(CFG, SIGNAL(massSaveCommitted()), this, SLOT(setupFormats()));
}
void SqliteSyntaxHighlighter::setSqliteVersion(int version)
@@ -125,7 +125,7 @@ QString SqliteSyntaxHighlighter::getPreviousStatePrefix(TextBlockState textBlock
void SqliteSyntaxHighlighter::highlightBlock(const QString &text)
{
- if (text.length() <= 0)
+ if (text.length() <= 0 || document()->characterCount() > MAX_QUERY_LENGTH)
return;
// Reset to default
@@ -265,7 +265,6 @@ void SqliteSyntaxHighlighter::setCreateTriggerContext(bool value)
createTriggerContext = value;
}
-
bool SqliteSyntaxHighlighter::getObjectLinksEnabled() const
{
return objectLinksEnabled;
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.h b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.h
index 0696d02..48649d4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.h
+++ b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.h
@@ -74,6 +74,8 @@ class GUI_API_EXPORT SqliteSyntaxHighlighter : public QSyntaxHighlighter
bool getCreateTriggerContext() const;
void setCreateTriggerContext(bool value);
+ static constexpr int MAX_QUERY_LENGTH = 100000;
+
protected:
void highlightBlock(const QString &text);
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
index 597e95f..f1dac43 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
index ba0392e..c597ce1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
<context>
<name>AboutDialog</name>
<message>
@@ -432,8 +432,12 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Collations editor window has uncommited modifications.</source>
- <translation>Der Editorfür Kollationen enthält nicht gespeicherte Änderungen.</translation>
+ <translation type="vanished">Der Editorfür Kollationen enthält nicht gespeicherte Änderungen.</translation>
</message>
</context>
<context>
@@ -906,7 +910,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>Konfiguration</translation>
</message>
@@ -997,215 +1001,234 @@ but it&apos;s okay to use it.</source>
<translation>Datenbearbeitung</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation>Anzahl an Datenzeilen pro Seite:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wenn Daten in das Ergebnisfenster eingelesen werden, dann wird die Breite der Spalten dabei automatisch angepasst. Dieser Wert begrenzt maximale Breite für die automatische Breitenanpassung. Der Anwender kann die Spaltenbreite jedoch manuell über dieses Limit verbreitern.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>Begrenze die initiale Spaltenbreite im Ergebnisfenster auf (Pixel):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation>Neue Zeile im Gitternetz des Datenfensters hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation>Vor der derzeitig ausgewählten Zeile</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation>Nach der derzeitig ausgewählten Zeile</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation>Am Ende der Datenfensters</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wenn aktiviert, wird der Reiter &quot;Daten&quot; anstelle des Reiters &quot;Struktur&quot; angezeigt beim öffnen eines Tabellenfensters angezeigt.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wenn aktiviert, wird der Reiter &quot;Daten&quot; als erster Reiter angezeigt für jedes Tabellenfenster, anstelle an zweiter Stelle.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation>Den Reiter Daten als ersten Reiter im Tabellenfenster anzeigen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation>Den Reiter Daten als ersten Reiter im View-Fenster anzeigen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>Datentypen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation>Verfügbare Editoren:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation>Für diesen Datentyp ausgewählte Editoren:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>Schema</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation>Maximale Anzahl an DDL Änderungen im Verlauf.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation>DDL Verlaufsgröße:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden</translation>
+ <translation type="vanished">Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>SQL Abfragen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation>Maximale Anzahl an SQL Abfragen im Verlauf.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation>Verlaufsgröße:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wenn diese Option aktiviert ist und sich mehrere SQL Abfragen im Editorfenster befinden, dann wird nur die SQL Abfrage ausgeführt, in der sich der Cursor befindet. Ist diese Option nicht gesetzt, dann werden alle SQL Abfragen ausgeführt. Sie können die auszuführenden SQL Abfragen selbst bestimmen, indem Sie diese vor der Ausführung mit der Maus oder Tastatur markieren.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>Führt nur die Abfrage unter dem Cursor aus</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>Updates</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>Prüfe vor dem Start automatisch auf Updates</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>Sitzung</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Stelle letzte Sitzung nach dem Start wieder her (aktive MDI Fenster)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation>Statusfeld</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation>Den Panel Status immer öffnen, wenn eine neue Meldung ausgegeben wird</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtere Tastaturkürzel nach Name oder Tastenkombination</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation>Aktion</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>Tastenkombination</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>Sprache</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Die Änderung der Sprache erfordert einen Neustart des Programms.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation>Kompaktes Layout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation>&lt;p&gt;Das kompakte Layout reduziert alle Lücken und Abstände der Oberfläche auf ein Minimum, um mehr Platz für die Darstellung der Daten zu schaffen. Die Oberfläche sieht dann zwar nicht mehr sehr ästhetisch aus, aber man hat mehr Daten im Überblick.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation>Benutze kompaktes Layout</translation>
</message>
@@ -1285,7 +1308,7 @@ but it&apos;s okay to use it.</source>
<translation>Zeige Systemtabellen und Indizes in der Liste an</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation>Tabellenfenster</translation>
</message>
@@ -1294,12 +1317,12 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Tabellenfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Öffnet das Tabellenfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation>Viewfenster</translation>
</message>
@@ -1308,227 +1331,244 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Viewfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation>Öffnet das Viewfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation>Dockingbereiche des Hauptfensters</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation>Linke und rechte Bereiche belegen die Ecken</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation>Obere und untere Bereiche belegen die Ecken</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation>Verberge eingebaute Plugins</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation>Aktueller Stil:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>Vorschau</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>Aktiviert</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation>Aktives Formatierungsplugin</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation>Schriftart des SQL Editors</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation>Schriftart der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation>Zusätzliche Bezeichnungen in der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation>Schriftart der Ergebnisansicht</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation>Schriftart des Statusfelds</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation>Farben des SQL Editors</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation>Hintergrundfarbe der aktuellen Zeile</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;SQL Zeichenketten sind mit einfachen Anführungszeichen umschlossen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation>Vordergrundfarbe von Zeichenketten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Bind Parameter sind Platzhalter für Werte, die der Anwender eingibt. Sie haben dabei eine der folgenden Formen:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation>Vordergrundfarbe von Bind Parametern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation>Hintergrundfarbe von hervorgehobener Klammern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;BLOB Werte sind hexadezimale Werte wie z.B.:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation>Vordergrundfarbe von BLOB Werten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation>Reguläre Vordergrundfarbe</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation>Hintergrundfarbe der Zeilennummernleiste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation>Vordergrundfarbe von Schlüsselwörtern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation>Vordergrundfarbe von Ziffern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation>Vordergrundfarbe von Kommentaren</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gültige Objekte sind Namen von Tabellen, Indizes, Triggern oder Views die in der SQLite Datenbank existieren.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation>Vordergrundfarbe von gültigen Objekten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation>Farben der Ergebnisansicht</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Jede Datenänderung wird mit dieser Farbe kenntlich gemacht, bis die geänderten Daten in die Datenbank zurückgeschrieben worden sind.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Jede Datenänderung wird mit dieser Farbe kenntlich gemacht, bis die geänderten Daten in die Datenbank zurückgeschrieben worden sind.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
- <translation>Rahmenfarbe von nicht gespeicherten Daten</translation>
+ <translation type="vanished">Rahmenfarbe von nicht gespeicherten Daten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Tritt beim Speichern einer Änderung ein Problem auf, dann wird die problematische Zelle mit dieser Farbe markiert.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Tritt beim Speichern einer Änderung ein Problem auf, dann wird die problematische Zelle mit dieser Farbe markiert.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation>Rahmenfarbe für fehlerhafte Daten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>Vordergrundfarbe für NULL Werte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>Hintergrundfarbe von gelöschten Zeilen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>Farben der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Zusätzliche Bezeichnungen sind solche, die z.B. die SQLite Version oder die Anzahl an Einträgen in einer Baumliste usw. anzeigen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation>Vordergrundfarbe für zusätzliche Bezeichnungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation>Farben des Statusfelds</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation>Vordergrundfarbe für Infomeldungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>Vordergrundfarbe für Warnmeldungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation>Vordergrundfarbe für Fehlermeldungen</translation>
</message>
@@ -2020,22 +2060,21 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<translation>Datenbanktreiber</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation>Automatisch generieren</translation>
+ <translation type="vanished">Automatisch generieren</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation>Optionen</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation>Permanent (in der Konfiguration behalten)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation>Verbindung testen</translation>
</message>
@@ -2046,7 +2085,7 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>Datei</translation>
</message>
@@ -2056,28 +2095,27 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<translation>Name (in der Liste)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation>Leitet den Namen vom Dateipfad ab</translation>
+ <translation type="vanished">Leitet den Namen vom Dateipfad ab</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation>&lt;p&gt;Wenn diese Option aktiviert ist, wird die Datenbank in der Konfiguration gespeichert und bei jedem Start von SQLiteStudio wieder hergestellt.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation>Lokalen Computer nach Datenbankdateien durchsuchen</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>Durchsuchen</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation>Geben Sie einen eindeutigen Datenbanknamen ein.</translation>
</message>
@@ -2087,29 +2125,32 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<translation>Der Name wird bereits benutzt, bitte geben Sie einen freien, eindeutigen Namen ein.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation>Geben Sie einen Dateipfad für die Datenbank ein.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation>Die Datenbank ist bereits unter folgendem Namen in der Liste enthalten: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Wählen Sie einen Datebanktypen aus.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
- <translation>Automatisch generiert</translation>
+ <translation type="vanished">Automatisch generiert</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
- <translation>Geben Sie den Namen ein</translation>
+ <translation type="vanished">Geben Sie den Namen ein</translation>
</message>
</context>
<context>
@@ -2398,7 +2439,7 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation>Tabellendaten löschen</translation>
</message>
@@ -2419,56 +2460,66 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<translation>Abfrage für Tabelle generieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation>Gruppe erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation>Gruppenname</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation>Der Eintrag mit Namen %1 existiert bereits in der Gruppe %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>Gruppe löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation>Sind Sie sicher, dass Sie die Gruppe %1 löschen möchten?
Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation>Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; aus der Liste entfernen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation>Sind Sie sicher, dass Sie folgende Datenbanken aus der Liste entfernen möchten:
%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation>Datenbank entfernen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation>Vacuum (%1)</translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
<translation type="obsolete">Datenbank löschen</translation>
</message>
@@ -2478,14 +2529,14 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t
<translation type="obsolete">Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; entfernen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Der Import kann nicht durchgeführt werden, da kein Import Plugin geladen ist.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Export fehlgeschlagen, da kein Export Plugins geladen sind.</translation>
</message>
@@ -2498,67 +2549,65 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t
<translation type="obsolete">VACUUM erfolgreich abgeschlossen.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
<translation>Integritätsprüfung (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
<translation>Autoincrement zurücksetzen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle &apos;%1&apos; zurücksetzen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
+ <translation type="vanished">Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>Sind Sie sicher, dass Sie alle Daten der Tabelle &apos;%1&apos; löschen möchten?</translation>
+ <translation type="vanished">Sind Sie sicher, dass Sie alle Daten der Tabelle &apos;%1&apos; löschen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>Beim Löschen der Daten aus Tabelle &apos;%1&apos; ist folgender Fehler aufgetreten: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Es wurden alle Daten aus Tabelle &apos;%1&apos; gelöscht.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation>Folgende Objekte werden gelöscht: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation>Folgende Datenbanken werden aus der Liste entfernt: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation>Die aus der gelöschten Gruppe verbleibenden Objekte werden an die Position der gelöschten Gruppe verschoben.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Sind Sie sicher, dass Sie fortfahren möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>Objekte löschen</translation>
</message>
@@ -2825,78 +2874,82 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<translation>View aus der Abfrage erstellen</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>Vorherige Datenbank</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>Nächste Datenbank</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation>Nächsten Reiter zeigen</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation>Vorherigen Reiter zeigen</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation>Fokus auf die Ergebnisse unten</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation>Fokus auf den SQL Editor oben</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation>Aktive Datenbank (%1/%2)</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation>Abfrage in %1 Sekunde(n) abgeschlossen. %2 Zeile(n) betroffen</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation>Abfrage in %1 Sekunde(n) abgeschlossen.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation>Lösche Ausführungsverlauf</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation>Sind Sie sicher, dass Sie den gesamten SQL Ausführungsverlauf löschen möchten? Dieser Vorgang kann nicht rückgängig gemacht werden.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Es kann nicht exportiert werden, da kein Export Plugin geladen ist.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation>Es ist keine Datenbank im SQL Editor selektiert. Für eine unbekannte Datenbank kann kein View erzeugt werden.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>Das Editorfenster &quot;%1&quot; hat ungespeicherte Daten.</translation>
+ <translation type="vanished">Das Editorfenster &quot;%1&quot; hat ungespeicherte Daten.</translation>
</message>
</context>
<context>
@@ -3356,8 +3409,12 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
+ <source>Functions editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Functions editor window has uncommited modifications.</source>
- <translation>Der Editorfür Funktionen enthält nicht gespeicherte Änderungen.</translation>
+ <translation type="vanished">Der Editorfür Funktionen enthält nicht gespeicherte Änderungen.</translation>
</message>
</context>
<context>
@@ -3956,9 +4013,13 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>Nicht gespeicherte Änderungen</translation>
+ <translation type="vanished">Nicht gespeicherte Änderungen</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -4892,9 +4953,13 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>Nicht gespeicherte Änderungen</translation>
+ <translation type="vanished">Nicht gespeicherte Änderungen</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
@@ -4994,180 +5059,180 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Ausschneiden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Einfügen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Alles auswählen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Rückgängig</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Wiederholen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Komplett</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>SQL formatieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>SQL in Datei speichern</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation>SQL aus Datei laden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Zeile löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Zeile löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Block nach unten verschieben</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Block nach oben verschieben</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Block nach unten kopieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translatorcomment>&quot;up down&quot; ??? Muss geklärt werden!</translatorcomment>
<translation>Kopiere auf ab</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Finden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Nächster Fund</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Vorheriger Fund</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Ersetzen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation>Kommentar umschalten</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation>SQL Inhalte in Datei speichern: %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>Die Funktion Autovervollständigung kann nur genutzt werden, wenn eine gültige Datenbank für den SQL Editor gewählt wurde.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Der Text im SQL Editor ist sehr groß, daher wurde die Syntaxkontrolle und die farbliche Hervorhebung von Objekten vorübergehend deaktiviert.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>In Datei speichern</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Die Datei &apos;%1&apos; kann nicht für Schreibzugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>SQL Skripte (*.sql);;Alle Dateien (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>Datei öffnen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Die Datei &apos;%1&apos; kann nicht für Lesezugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Das Dokumentenende wurde erreicht. Drücken Sie &apos;Nächster Fund&apos;, um die Suche am Dokumentenanfang fortzusetzen.</translation>
</message>
@@ -5199,12 +5264,11 @@ find next</source>
<translation>Bedingungen:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
- <translation>Diese Zelle kann nicht editiert werden, weil: %1</translation>
+ <translation type="vanished">Diese Zelle kann nicht editiert werden, weil: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Es können keine Daten für eine Zelle dargestellt werden, die eine bereits geschlossene Datenbank referenziert.</translation>
</message>
@@ -5212,18 +5276,36 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
- <translation>Die Zelle kann nicht editiert. Details: %2</translation>
+ <translation type="vanished">Die Zelle kann nicht editiert. Details: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
<source>The row is marked for deletion.</source>
<translation>Diese Zeile ist zum Löschen markiert.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished">Die Zelle kann nicht editiert. Details: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5231,69 +5313,85 @@ find next</source>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
- <translation>Nicht gespeicherte Daten</translation>
+ <translation type="vanished">Nicht gespeicherte Daten</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
- <translation>Es gibt ungespeicherte Änderungen. Möchten Sie wirklich fortfahren? Alle Änderungen werden dann verloren gehen.</translation>
+ <translation type="vanished">Es gibt ungespeicherte Änderungen. Möchten Sie wirklich fortfahren? Alle Änderungen werden dann verloren gehen.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation>Es können keine Daten für eine Zelle gespeichert werden, die eine bereits geschlossene Datenbank referenziert.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Es kann keine Transaktion auf der Datenbank gestartet werden. Details: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>Fehler beim Committen der Transaktion: %1</translation>
+ <translation type="vanished">Fehler beim Committen der Transaktion: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation>Fehler beim Rollback der Transaktion: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
<source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation>Es wurde versucht eine nicht editierbare Zelle zu committen (derzeit modifiziert und auf das Commit wartend)! Dies ist ein Fehler den Sie melden sollten.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>Fehler beim Committen der Daten: %1</translation>
+ <translation type="vanished">Fehler beim Committen der Daten: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Fehler beim Ausführen der SQL-Abfrage auf der Datenbank &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation>Fehler beim Laden der Abfrageergebnisse: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation>Anzahl an Zeilen zum Einfügen:</translation>
</message>
@@ -5301,117 +5399,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation>Kopieren als...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>Einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation>Einfügen als...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>NULL Wert setzen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>Werte löschen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation>Wert im Editor bearbeiten</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>Commit</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>Rollback</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation>Gewählte Zellen speichern</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation>Gewählte Zellen wiederherstellen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation>Sortierspalten definieren</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation>Benutzerdefinierte Sortierung entfernen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>Zeile einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>Gewählte Zeile löschen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation>Es sind keine Elemente selektiert in die der Inhalt der Zwischenablage eingefügt werden könnte.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>Werte editieren</translation>
</message>
@@ -5419,12 +5517,16 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
- <translation>Fehler beim Committen der neuen Zeile: %1</translation>
+ <translation type="vanished">Fehler beim Committen der neuen Zeile: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Fehler beim Löschen der Zeile aus Tabelle %1: %2</translation>
</message>
@@ -5687,7 +5789,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5712,409 +5814,417 @@ NULL</source>
<translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished">Tabelle füllen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished">Spalte nach oben verschieben</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished">Spalte nach unten verschieben</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished">Erzeuge identische Tabelle</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished">Index löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished">Trigger Liste aktualisieren</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished">Trigger löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation type="unfinished">Autoincrement zurücksetzen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished">Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle &apos;%1&apos; zurücksetzen möchten?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished">Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished">Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
+ <translation type="obsolete">Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished">Bedingung löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation type="unfinished">Nicht gespeicherte Änderungen</translation>
+ <translation type="obsolete">Nicht gespeicherte Änderungen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
-Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished">Spalten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished">Partieller Indexzustand</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">Details</translation>
</message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
- <source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>TriggerColumnsDialog</name>
@@ -6128,6 +6238,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished">Alles auswählen</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished">Auswahl aufheben</translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6219,13 +6339,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished">Fehler</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished">Fehler beim Ausführen des folgenden SQL Statments:
@@ -6274,7 +6394,7 @@ Do you want to commit the structure, or do you want to go back to the structure
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -6316,224 +6436,228 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished">Spalte nach oben verschieben</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished">Spalte nach unten verschieben</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished">Trigger Liste aktualisieren</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished">Trigger erstellen</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished">Trigger editieren</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished">Trigger löschen</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
- <source>Could not load data for view %1. Error details: %2</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
- <source>Uncommited changes</source>
- <translation type="unfinished">Nicht gespeicherte Änderungen</translation>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Go back to structure tab</source>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Commit modifications and browse data.</source>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
+ <source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <source>Uncommited changes</source>
+ <translation type="obsolete">Nicht gespeicherte Änderungen</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Go back to structure tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">Details</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
index 715333f..2771e77 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
<context>
<name>AboutDialog</name>
<message>
@@ -429,7 +429,7 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
- <source>Collations editor window has uncommited modifications.</source>
+ <source>Collations editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -903,7 +903,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -993,215 +993,215 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
- <source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
@@ -1277,242 +1277,262 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
- <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
- <source>Uncommited data outline color</source>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
- <source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -2003,22 +2023,17 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
- <source>Generate automatically</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation type="unfinished"></translation>
</message>
@@ -2029,7 +2044,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -2039,28 +2054,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
- <source>Generate name basing on file path</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
@@ -2070,28 +2080,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
- <source>Enter a database file path.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
- <source>This database is already on the list under name: %1</source>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
- <source>Select a database type.</source>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
- <source>Auto-generated</source>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
+ <source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
- <source>Type the name</source>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2379,7 +2384,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
@@ -2400,127 +2405,127 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
- <source>Integrity check (%1)</source>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Reset autoincrement</source>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
+ <source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1499"/>
- <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
+ <source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
- <source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
+ <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2784,77 +2789,77 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
- <source>Editor window &quot;%1&quot; has uncommited data.</source>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3311,7 +3316,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
- <source>Functions editor window has uncommited modifications.</source>
+ <source>Functions editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3911,7 +3916,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>MdiWindow</name>
<message>
<location filename="../mdiwindow.cpp" line="199"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4844,7 +4849,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>QuitConfirmDialog</name>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4942,179 +4947,179 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -5146,12 +5151,7 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
- <source>This cell is not editable, because: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -5159,18 +5159,32 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
- <source>Cannot edit this cell. Details: %2</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <source>The row is marked for deletion.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5178,69 +5192,69 @@ find next</source>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
- <source>Uncommited data</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
+ <source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
- <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
+ <source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
- <source>Cannot commit the data for a cell that refers to the already closed database.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
+ <source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
- <source>Could not begin transaction on the database. Details: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
+ <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
- <source>An error occurred while commiting the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
- <source>An error occurred while rolling back the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
- <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
- <source>An error occurred while commiting the data: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5248,117 +5262,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5366,12 +5380,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
- <source>Error while commiting new row: %1</source>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5634,7 +5648,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5659,409 +5673,409 @@ NULL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
- <source>Uncommited changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
-Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
- <source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>TriggerColumnsDialog</name>
@@ -6075,6 +6089,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6166,13 +6190,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -6220,7 +6244,7 @@ Do you want to commit the structure, or do you want to go back to the structure
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -6262,224 +6286,224 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
- <source>Could not load data for view %1. Error details: %2</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
- <source>Uncommited changes</source>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Go back to structure tab</source>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Commit modifications and browse data.</source>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
+ <source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Commit modifications and browse data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm
index 2602532..71a632e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
index 015a070..8a46630 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
@@ -31,7 +31,7 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="61"/>
<source>Icon directories</source>
- <translation>Répertoires d&rsquo;images</translation>
+ <translation>Répertoires des images</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="81"/>
@@ -41,12 +41,12 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="101"/>
<source>Plugin directories</source>
- <translation>Répertoires des plugin</translation>
+ <translation>Répertoires des plugins</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="121"/>
<source>Application directory</source>
- <translation>Répertoire de l&rsquo;application</translation>
+ <translation>Répertoire de l’application</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="172"/>
@@ -54,6 +54,10 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <source>SQLite 3 version :</source>
+ <translation type="obsolete">Version SQLite :</translation>
+ </message>
+ <message>
<location filename="../dialogs/aboutdialog.ui" line="111"/>
<source>Configuration directory</source>
<translation>Répertoire de configuration</translation>
@@ -61,22 +65,22 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="148"/>
<source>Qt version:</source>
- <translation>Version Qt:</translation>
+ <translation>Version Qt :</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="39"/>
<source>Portable distribution.</source>
- <translation>Portable distribution.</translation>
+ <translation>Version portable</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="42"/>
<source>MacOS X application boundle distribution.</source>
- <translation>MacOS X application boundle distribution.</translation>
+ <translation>MacOS X application boundle distribution</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="45"/>
<source>Operating system managed distribution.</source>
- <translation>Operating system managed distribution.</translation>
+ <translation>Operating system managed distribution</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="89"/>
@@ -86,7 +90,7 @@
<message>
<location filename="../dialogs/aboutdialog.cpp" line="102"/>
<source>&lt;h3&gt;Table of contents:&lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</source>
- <translation>&lt;h3&gt;Table des matières:&lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</translation>
+ <translation>&lt;h3&gt;Table des matières : &lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</translation>
</message>
</context>
<context>
@@ -104,18 +108,18 @@
<message>
<location filename="../dialogs/bugdialog.ui" line="36"/>
<source>E-mail address</source>
- <translation>Adresse E-mail</translation>
+ <translation>Adresse électronique</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="43"/>
<location filename="../dialogs/bugdialog.cpp" line="121"/>
<source>Log in</source>
- <translation>S&rsquo;identifier</translation>
+ <translation>S’identifier</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="68"/>
<source>Short description</source>
- <translation>Courte description</translation>
+ <translation>Description brève</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="80"/>
@@ -135,7 +139,7 @@
<message>
<location filename="../dialogs/bugdialog.ui" line="131"/>
<source>Operating system</source>
- <translation>Système d&rsquo;exploitation</translation>
+ <translation>Système d’exploitation</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="143"/>
@@ -150,18 +154,18 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="66"/>
<source>You can see all your reported bugs and ideas by selecting menu &apos;%1&apos; and then &apos;%2&apos;.</source>
- <translation>Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu «&nbsp;%1&nbsp;» puis «&nbsp;%2&nbsp;».</translation>
+ <translation>Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu « %1 » puis « %2 ».</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="74"/>
<source>A bug report sent successfully.</source>
- <translation>Rapport de bug envoyé avec succès.</translation>
+ <translation>Rapport de bogue envoyé avec succès</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="79"/>
<source>An error occurred while sending a bug report: %1
%2</source>
- <translation>Une erreur est survenue lors de l&rsquo;envoi du rapport de bug: %1
+ <translation>Une erreur est survenue lors de l’envoi du rapport de bogue : %1
%2</translation>
</message>
<message>
@@ -173,13 +177,13 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="88"/>
<source>An idea proposal sent successfully.</source>
- <translation>L&rsquo;idée proposée à été envoyée avec succès.</translation>
+ <translation>L’idée proposée à été envoyée avec succès.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="93"/>
<source>An error occurred while sending an idea proposal: %1
%2</source>
- <translation>Une erreeur est survenu lors de l&rsquo;envoi de l&rsquo;idée proposée: %1 %2</translation>
+ <translation>Une erreeur est survenu lors de l’envoi de l’idée proposée : %1 %2</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="105"/>
@@ -229,22 +233,22 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="144"/>
<source>Providing true email address will make it possible to contact you regarding your report. To learn more, press &apos;help&apos; button on the right side.</source>
- <translation>En fournissant un mail existant il sera possible de vous contacterau sujet du rapport. Pour en savoir plus, clic sur le bouton «&nbsp;help&nbsp;» sur le coté droit.</translation>
+ <translation>En fournissant un mail existant il sera possible de vous contacterau sujet du rapport. Pour en savoir plus, clic sur le bouton « help » sur le coté droit.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="146"/>
<source>Enter vaild e-mail address, or log in.</source>
- <translation>Entrez un mail valide ou connectez-vous.</translation>
+ <translation>Entrez un email valide ou connectez-vous.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="148"/>
<source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source>
- <translation>Une description courte nécessite au moins 10 caractères , mais pas plus de 100. La longueur de la description ne peut être contenue dans ce champ.</translation>
+ <translation>Une description courte nécessite au moins 10 caractères, mais pas plus de 100. La longueur de la description ne peut être contenue dans ce champ.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="151"/>
<source>Long description requires at least 30 characters.</source>
- <translation>Une descption longue require au moins 30 caractères. </translation>
+ <translation>Une descption longue require au moins 30 caractères.</translation>
</message>
</context>
<context>
@@ -275,12 +279,12 @@
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="50"/>
<source>Clear reports history</source>
- <translation>Vider l&rsquo;historique de rapports</translation>
+ <translation>Vider l’historique de rapports</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="51"/>
<source>Delete selected entry</source>
- <translation>Supprimer l&rsquo;entrée sélectionnée</translation>
+ <translation>Supprimer l’entrée sélectionnée</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="90"/>
@@ -303,12 +307,12 @@
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="26"/>
<source>Login:</source>
- <translation>Identification:</translation>
+ <translation>Identification :</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="36"/>
<source>Password:</source>
- <translation>Mot de passe:</translation>
+ <translation>Mot de passe :</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="53"/>
@@ -356,12 +360,12 @@
<message>
<location filename="../windows/collationseditor.ui" line="194"/>
<source>Collation name:</source>
- <translation>Nom de regroupements:</translation>
+ <translation>Nom de regroupements :</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="204"/>
<source>Implementation language:</source>
- <translation>Language d&rsquo;implémentation:</translation>
+ <translation>Language d’implémentation :</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="132"/>
@@ -376,17 +380,17 @@
<message>
<location filename="../windows/collationseditor.ui" line="145"/>
<source>Register in following databases:</source>
- <translation>Inscrire dans les bases de données suivantes:</translation>
+ <translation>Inscrire dans les bases de données suivantes :</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="166"/>
<source>Implementation code:</source>
- <translation>Code d&rsquo;inplémentation:</translation>
+ <translation>Code d’inplémentation :</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="52"/>
<source>Collations editor</source>
- <translation>Editeur de regroupement</translation>
+ <translation>Éditeur de regroupement</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="57"/>
@@ -396,7 +400,7 @@
<message>
<location filename="../windows/collationseditor.cpp" line="58"/>
<source>Rollback all collation changes</source>
- <translation>annuler toutes les modifications de regroupement</translation>
+ <translation>Annuler toutes les modifications de regroupement</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="60"/>
@@ -421,17 +425,21 @@
<message>
<location filename="../windows/collationseditor.cpp" line="291"/>
<source>Pick the implementation language.</source>
- <translation>Prendre le language d&rsquo;inplémentation.</translation>
+ <translation>Prendre le language d’inplémentation.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="294"/>
<source>Enter a non-empty implementation code.</source>
- <translation>Saississez un nom, non vide, de language d&rsquo;implémentation.</translation>
+ <translation>Saississez un nom, non vide, de language d’implémentation.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Collations editor window has uncommited modifications.</source>
- <translation>L&rsquo;éditeur de regroupement n&rsquo;as pas enregistré les modifications.</translation>
+ <translation type="vanished">L’éditeur de regroupement n’as pas enregistré les modifications.</translation>
</message>
</context>
<context>
@@ -447,12 +455,12 @@
<message>
<location filename="../constraints/columncollatepanel.ui" line="41"/>
<source>Collation name:</source>
- <translation>Nom de la jointure:</translation>
+ <translation>Nom de la jointure :</translation>
</message>
<message>
<location filename="../constraints/columncollatepanel.ui" line="73"/>
<source>Named constraint:</source>
- <translation>Constante nomée:</translation>
+ <translation>Constante nommée :</translation>
</message>
<message>
<location filename="../constraints/columncollatepanel.cpp" line="80"/>
@@ -470,22 +478,22 @@
<message>
<location filename="../constraints/columndefaultpanel.ui" line="20"/>
<source>Default value:</source>
- <translation>Valeur par défaut:</translation>
+ <translation>Valeur par défaut :</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.ui" line="35"/>
<source>Named constraint:</source>
- <translation>Contrainte nommée:</translation>
+ <translation>Contrainte nommée :</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="39"/>
<source>Enter a default value expression.</source>
- <translation>Saississez l&rsquo;expression d&rsquo;une valeur par défaut.</translation>
+ <translation>Saississez l’expression d’une valeur par défaut.</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="78"/>
<source>Invalid default value expression: %1</source>
- <translation>Invalide expression d&rsquo;une valeur par défaut: %1</translation>
+ <translation>Invalide expression d’une valeur par défaut : %1</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="90"/>
@@ -518,17 +526,17 @@
<message>
<location filename="../dialogs/columndialog.ui" line="62"/>
<source>Data type:</source>
- <translation>Type de données:</translation>
+ <translation>Type de données :</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="69"/>
<source>Column name:</source>
- <translation>Nom de colonne:</translation>
+ <translation>Nom de colonne :</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="79"/>
<source>Size:</source>
- <translation>Taille:</translation>
+ <translation>Taille :</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="102"/>
@@ -554,7 +562,7 @@
<message>
<location filename="../dialogs/columndialog.ui" line="129"/>
<source>Foreign Key</source>
- <translation>Clé étranère</translation>
+ <translation>Clef étrangère</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="143"/>
@@ -574,7 +582,7 @@
<message>
<location filename="../dialogs/columndialog.ui" line="164"/>
<source>Primary Key</source>
- <translation>Clé primaire</translation>
+ <translation>Clef primaire</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="171"/>
@@ -587,95 +595,110 @@
<translation>Mode avancé</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>Ajouter une contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>Editer la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation>Supprimer la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>Monter la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>Descendre la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
- <translation>Ajouter une clé primaire</translation>
+ <translation>Ajouter une clef primaire</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
- <translation>Ajouter une clé étrangère</translation>
+ <translation>Ajouter une clef étrangère</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>Ajouter une contrainte unique</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
<source>Add a check constraint</source>
<comment>column dialog</comment>
<translation>Ajouter un contrôle de la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="93"/>
+ <location filename="../dialogs/columndialog.cpp" line="96"/>
<source>Add a not null constraint</source>
<comment>column dialog</comment>
<translation>Ajouter une contrainte non NULL</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <location filename="../dialogs/columndialog.cpp" line="97"/>
<source>Add a collate constraint</source>
<comment>column dialog</comment>
<translation>Ajouter un commentaire à la contrainte</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <location filename="../dialogs/columndialog.cpp" line="98"/>
<source>Add a default constraint</source>
<comment>column dialog</comment>
<translation>Ajouter une contrainte par défaut</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
- <translation>Etes-vous sûr de vouloir supprimer la contrainte «&nbsp;%1&nbsp;» ?</translation>
+ <translation>Êtes-vous sûr de vouloir supprimer la contrainte « %1 » ?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation>Corrigez la configuration de la contrainte.</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
- <translation>Cette contrainte n&rsquo;est pas supportée officiellement par SQLite 2,
-mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
+ <translation>Cette contrainte n’est pas supportée officiellement par SQLite 2,
+mais c’est OK pour l’utiliser.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -704,12 +727,12 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="29"/>
<source>Foreign table:</source>
- <translation>Table étrangère:</translation>
+ <translation>Table étrangère :</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="45"/>
<source>Foreign column:</source>
- <translation>Colonne étrangère:</translation>
+ <translation>Colonne étrangère :</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="58"/>
@@ -719,12 +742,12 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="97"/>
<source>Deferred foreign key</source>
- <translation>Clé étrangère refusée</translation>
+ <translation>Clef étrangère refusée</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="115"/>
<source>Named constraint</source>
- <translation>Contrainte nomée</translation>
+ <translation>Contrainte nommée</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="122"/>
@@ -752,33 +775,33 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="26"/>
<source>Autoincrement</source>
- <translation>Autoincrémentation</translation>
+ <translation>Auto-incrémentation</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="48"/>
<source>Sort order:</source>
- <translation>ordre de tri:</translation>
+ <translation>Ordre de tri :</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="83"/>
<source>Named constraint:</source>
- <translation>Contrainte nommée:</translation>
+ <translation>Contrainte nommée :</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="111"/>
<source>On conflict:</source>
- <translation>Sur conflit:</translation>
+ <translation>Sur conflit :</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="87"/>
<source>Enter a name of the constraint.</source>
- <translation>Saississez le nom d&rsquo;une contrainte.</translation>
+ <translation>Saississez le nom d’une contrainte.</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="103"/>
<source>Autoincrement (only for %1 type columns)</source>
<comment>column primary key</comment>
- <translation>Autoincrémentation(seulement pour %1 colonne type)</translation>
+ <translation>Auto-incrémentation (seulement pour %1 colonne type)</translation>
</message>
</context>
<context>
@@ -786,12 +809,12 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.ui" line="41"/>
<source>Named constraint:</source>
- <translation></translation>
+ <translation>Contrainte nommée :</translation>
</message>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/>
<source>On conflict:</source>
- <translation>Sur conflit:</translation>
+ <translation>Sur conflit :</translation>
</message>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/>
@@ -805,25 +828,25 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<location filename="../completer/completerwindow.cpp" line="159"/>
<source>Column: %1</source>
<comment>completer statusbar</comment>
- <translation>Colonne: %1</translation>
+ <translation>Colonne : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="161"/>
<source>Table: %1</source>
<comment>completer statusbar</comment>
- <translation>Table: %1</translation>
+ <translation>Table : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="163"/>
<source>Index: %1</source>
<comment>completer statusbar</comment>
- <translation>Index: %1</translation>
+ <translation>Index : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="165"/>
<source>Trigger: %1</source>
<comment>completer statusbar</comment>
- <translation>Déclencheur: %1</translation>
+ <translation>Déclencheur : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="167"/>
@@ -835,31 +858,31 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<location filename="../completer/completerwindow.cpp" line="169"/>
<source>Database: %1</source>
<comment>completer statusbar</comment>
- <translation>Base de données: %1</translation>
+ <translation>Base de données : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="181"/>
<source>Keyword: %1</source>
<comment>completer statusbar</comment>
- <translation>Mon clé: %1</translation>
+ <translation>Mot-clef : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="183"/>
<source>Function: %1</source>
<comment>completer statusbar</comment>
- <translation>Fonction: %1</translation>
+ <translation>Fonction : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="185"/>
<source>Operator: %1</source>
<comment>completer statusbar</comment>
- <translation>Opérateur: %1</translation>
+ <translation>Opérateur : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="187"/>
<source>String</source>
<comment>completer statusbar</comment>
- <translation>Chainge</translation>
+ <translation>Chaîne de caractères</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="189"/>
@@ -877,614 +900,721 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<location filename="../completer/completerwindow.cpp" line="193"/>
<source>Collation: %1</source>
<comment>completer statusbar</comment>
- <translation>Regroupement: %1</translation>
+ <translation>Regroupement : %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="195"/>
<source>Pragma function: %1</source>
<comment>completer statusbar</comment>
- <translation>Fonction Pragma: %1</translation>
+ <translation>Fonction Pragma : %1</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>Configuration</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>Recherche</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>Général</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>Raccourcis clavier</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation>Aspet</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>Style</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>Polices</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>Couleurs</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>Plugins</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>Formatage code</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>Navigation données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
- <translation>Editeur données</translation>
+ <translation>Éditeur de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <location filename="../dialogs/configdialog.ui" line="418"/>
<source>Data browsing and editing</source>
- <translation>Navigateur et editeur données</translation>
+ <translation>Navigateur et éditeur de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
- <translation>Nombre de lignes de données par page:</translation>
+ <translation>Nombre de lignes de données par page :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Lorsque les données sont lues dans le tableau la largeur est automatiquement ajustée. Cette valeur limite la largeur initialepour l&rsquo;ajustement, mais l&rsquo;utilisateur peut recadrer les colonnes manuellement audessus de cette limite.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Lorsque les données sont lues dans le tableau, la largeur est automatiquement ajustée. Cette valeur limite la largeur initiale pour l’ajustement, mais l’utilisateur peut recadrer les colonnes manuellement au-dessus de cette limite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
- <translation>Lilite initial de la largeur de la colonne de données (en pixel):</translation>
+ <translation>Limite initiale de la largeur de la colonne de données (en pixel) :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
- <source>Inserting new row in data grid</source>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
- <source>Before currently selected row</source>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>Types de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
- <translation>Editeurs disponibles:</translation>
+ <translation>Éditeurs disponibles :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
- <translation>Editeur sélectionné pour ce type de données:</translation>
+ <translation>Éditeur sélectionné pour ce type de données :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>Edition de schéma</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
- <translation>Nombre de DDL modifiés gardés dans l&rsquo;historique.</translation>
+ <translation>Nombre de DDL modifiés gardés dans l’historique.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
- <translation>Dimension de l&rsquo;historique DDL:</translation>
+ <translation>Dimension de l’historique DDL :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Ne pas montrer la présualisation DDL pendant l&rsquo;enregistrement de schéma modifié</translation>
+ <translation type="vanished">Ne pas montrer la présualisation DDL pendant l’enregistrement du schéma modifié</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>Requêtes SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
- <translation>Nombre de requêtes gardées dans l&rsquo;historique.</translation>
+ <translation>Nombre de requêtes gardées dans l’historique.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
- <translation>Dimension de l&rsquo;historique:</translation>
+ <translation>Dimension de l’historique :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
- <translation>&lt;p&gt;S&rsquo;il y a plus d&rsquo;une requête dans l&rsquo;éditeur d&rsquo;SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d&rsquo;insertion. Autrement toutes les requêtes seront exécutées. Vous pouvez limiter le nombre de requêtes devant être exécutées en sélectionnant ces requêtes avant leur exécution.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;S’il y a plus d’une requête dans l’éditeur SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d’insertion. Autrement toutes les requêtes seront exécutées. Vous pouvez limiter le nombre de requêtes devant être exécutées en sélectionnant ces requêtes avant leur exécution.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>Exécuter seulement la requête sous le curseur</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>Mises à jour</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>Contrôle automatique des mises à jour au lancement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>Session</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
- <translation>Restaurer la dernière session(Fenêtre MDI active) après lancement</translation>
+ <translation>Restaurer la dernière session (Fenêtre MDI active) après lancement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtre par nom raccourci ou combinaison de touches</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation>Action</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>Combinaison de touches</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>Langage</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
- <translation>Le changement de langage requiére le redemarrage de l&rsquo;application pour prendre effet.</translation>
+ <translation>Le changement de langage requiére le redemarrage de l’application pour prendre effet.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
- <translation type="unfinished"></translation>
+ <translation>Présentation compacte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
- <translation type="unfinished"></translation>
+ <translation>Utiliser la présentation compacte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Général.PrésentationCompacte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>Liste de base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="776"/>
+ <location filename="../dialogs/configdialog.ui" line="245"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
- <translation>Sur off, les colonnes seront triées dans l&rsquo;ordre de saisie de l&rsquo;instruction CREATE TABLE. </translation>
+ <translation>Sur off, les colonnes seront triées dans l’ordre de saisie de l’instruction CREATE TABLE. </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>Ordre de tri alpha de la colonne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="789"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>Déployez le noeud des tables lors de la connexion de la base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation>&lt;p&gt;Les labels supplémentaires sont ceux montrés à côté des noms dans la liste de bases de données ( bleus,sauf autre configaration). Permettre cette option aboutira aux lablels pour des bases de données, des bases de données invalides et des noeuds (colonnes, index, déclancheur). Pour plus de labels voir des options ci-dessous.&lt;p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <location filename="../dialogs/configdialog.ui" line="271"/>
<source>Display additional labels on the list</source>
- <translation>Afficher des labels supplémentairesà la liste </translation>
+ <translation>Afficher des labels supplémentaires à la liste </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="286"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation>Pour des tables courantes les labels montrerons le nombre der colonnes, index et déclencheurs pour chaque tables.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="289"/>
<source>Display labels for regular tables</source>
<translation>Afficher les labels pour les tables courantes</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
- <translation>Les tables vituelles seront marquées avec un label «&nbsp;virtuel&nbsp;».</translation>
+ <translation>Les tables vituelles seront marquées avec un label « virtuel ».</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="302"/>
<source>Display labels for virtual tables</source>
<translation>Afficher les labels pour les tables virtuelles</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="846"/>
+ <location filename="../dialogs/configdialog.ui" line="315"/>
<source>Expand views node when connected to a database</source>
<translation>Etendre le noeud des vues lorsque la base de données est connectée</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="856"/>
+ <location filename="../dialogs/configdialog.ui" line="325"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
- <translation>Si cette option est déactivée, les objets seront triés pour qu&rsquo; ils apparaissent dans la table sqlite_master (dans l&rsquo;ordre de création)</translation>
+ <translation>Si cette option est déactivée, les objets seront triés pour qu’ ils apparaissent dans la table sqlite_master (dans l’ordre de création)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="328"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
- <translation>Tri d&rsquo;objets (tables, index, déclancheurs et vues) en alpha</translation>
+ <translation>Tri d’objets (tables, index, déclancheurs et vues) en alpha</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="869"/>
+ <location filename="../dialogs/configdialog.ui" line="338"/>
<source>Display system tables and indexes on the list</source>
<translation>Afficher les tables système et index dans la liste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="882"/>
+ <location filename="../dialogs/configdialog.ui" line="351"/>
+ <source>Database dialog window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="357"/>
+ <source>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;When this option is enabled, then files dropped from file manager onto database list will be automatically added to the list, bypassing standard database dialog. If for various reasons automatic process fails, then standard dialog will be presented to the user.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="373"/>
+ <source>Try to bypass dialog completly when dropping database file onto the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
+ <source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
+ <source>Show column and row details tooltip in data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation>Fenêtre de ta table</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Lorsque c&rsquo;est permis, la fenêtre des tables sera affichée avec l&rsquo;onglet des données, à la place de l&rsquo;onglet structure.</translation>
+ <translation type="vanished">Lorsque c’est permis, la fenêtre des tables sera affichée avec l’onglet des données, à la place de l’onglet structure.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
- <translation>Ourerture la fenêtre de table avec l&rsquo;onglet des données au départ</translation>
+ <translation>Ourerture la fenêtre de table avec l’onglet des données au départ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation>Fenêtre de vue</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Lorsque c&rsquo;est permis, la fenêtre des vues sera affichée avec l&rsquo;onglet des données, à la place de l&rsquo;onglet structure.</translation>
+ <translation type="vanished">Lorsque c’est permis, la fenêtre des vues sera affichée avec l’onglet des données, à la place de l’onglet structure.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
- <translation>Ourerture la fenêtre de vue avec l&rsquo;onglet des données au départ</translation>
+ <translation>Ourerture la fenêtre de vue avec l’onglet des données au départ</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
+ <source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation>Cacher des plugins incorporés</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
- <translation>Style actuel:</translation>
+ <translation>Style actuel :</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>Aperçu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>En service</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>Hors service</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
- <translation>Plugin de formattage actf</translation>
+ <translation>Plugin de formattage actif</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
- <translation>Police de l&rsquo;éditeur SQL</translation>
+ <translation>Police de caractères de l’éditeur SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
- <translation>Liste des polices de base de données</translation>
+ <translation>Liste des polices de caractères de base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
- <translation>Police additionel de la liste des base de données </translation>
+ <translation>Police de caractères additionelle de la liste des bases de données </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
- <translation>Police des données de vue</translation>
+ <translation>Police de caractères des données de vue</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
- <translation>Police du champ status</translation>
+ <translation>Police de caractères du champ d’état</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
- <translation>Couleurs de l&rsquo;éditeur SQL</translation>
+ <translation>Couleurs de l’éditeur SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation>Fond actuel de la ligne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Les chaines SQL sont encadrées avec de caractères simple quote.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation>Avant plan chaine</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
- <translation>&lt;p&gt;Les paramètres fournis par l&rsquo;utilisateur sont passés par valeur. Ils ont l&rsquo;une de ces formes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
+ <translation>&lt;p&gt;Les paramètres fournis par l’utilisateur sont passés par valeur. Ils ont l’une de ces formes : &lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation>Premier plan de paramètre de lien</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation>Parenthèses surlignées</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
- <translation>&lt;p&gt;les valeurs BLOB sont binaire représentés comme nombres hexadécimaux, comme:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
+ <translation>&lt;p&gt;les valeurs BLOB sont binaire représentés comme nombres hexadécimaux, comme : &lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation>Premier plan de valeur BLOB</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation>Avant plan courant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation>Zone des numéros de ligne en arrière plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
- <translation>Mot clé en avant plan</translation>
+ <translation>Mot-clef en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation>Nombre en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation>Commentaire en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Les objets valides sont les nom de tables, index, déclencheurs, ou vues qui existent dans la base de données SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation>Objets valides en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation>Couleurs de vue de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Touts les modifications de données seront écrits avec cette couleur,à l&rsquo;enregistrement de la base de données.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Toutes les modifications de données seront écrits avec cette couleur, à l’enregistrement de la base de données.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
- <translation>Annulation de la couleur des données</translation>
+ <translation type="vanished">Annulation de la couleur des données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;En cas de l&rsquo;erreur à l&rsquo;enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;En cas de l’erreur à l’enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
- <translation>Erreur d&rsquo;enregistrement du surlignage</translation>
+ <translation>Erreur d’enregistrement du surlignage</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>Valeur NULL au premier plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>Ligne supprimée en arrier plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>Liste de couleurs des bases de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Des labels supplémentaires indique la version SQLITE, le nombre d&rsquo;objets au nieau inférieur, etc.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Des labels supplémentaires indique la version SQLITE, le nombre d’objets au nievau inférieur, etc.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation>Labels additionels en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
- <translation>Couleurs du status des champs</translation>
+ <translation>Couleurs du champ d’état</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
- <translation>Message d&rsquo;information devant</translation>
+ <translation>Message d’information devant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>Warning devant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
- <translation>Message d&rsquo;erreur devant</translation>
+ <translation>Message d’erreur devant</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="785"/>
<source>Description:</source>
<comment>plugin details</comment>
- <translation>Description:</translation>
+ <translation>Description :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="786"/>
<source>Category:</source>
<comment>plugin details</comment>
- <translation>Catégories:</translation>
+ <translation>Catégories :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="787"/>
<source>Version:</source>
<comment>plugin details</comment>
- <translation>Version:</translation>
+ <translation>Version :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="788"/>
<source>Author:</source>
<comment>plugin details</comment>
- <translation>Auteur:</translation>
+ <translation>Auteur :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="790"/>
<source>Internal name:</source>
<comment>plugin details</comment>
- <translation>Nom interne:</translation>
+ <translation>Nom interne :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="791"/>
<source>Dependencies:</source>
<comment>plugin details</comment>
- <translation>Dépendances:</translation>
+ <translation>Dépendances :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="792"/>
<source>Conflicts:</source>
<comment>plugin details</comment>
- <translation>Conflicts:</translation>
+ <translation>Conflicts :</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="796"/>
@@ -1492,43 +1622,43 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<translation>Détails plugins</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source>
- <translation>Les plugins sont chargés/déchargés immédiatement avec vérifié/non vérifié, mais les modifications de la liste de plugins à charger au lancement ne sont pas enregistrées avant l&rsquo;enregistrement de la configuration entière.</translation>
+ <translation>Les plugins sont chargés/déchargés immédiatement avec vérifié/non vérifié, mais les modifications de la liste de plugins à charger au lancement ne sont pas enregistrées avant l’enregistrement de la configuration entière.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (intégré)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>Détails</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation>Pas de plugins dans cette catégorie.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
- <translation>Ajoutez un nouveau type de données</translation>
+ <translation>Ajouter un nouveau type de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>Renommer le type de données sélectionné</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>Supprimez le type de données sélectionnées</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation>Aide à la configuration des éditeurs de type de données</translation>
</message>
@@ -1538,12 +1668,12 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="20"/>
<source>The condition</source>
- <translation>La condition</translation>
+ <translation>Condition</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="35"/>
<source>Named constraint:</source>
- <translation>Contrainte nommée:</translation>
+ <translation>Contrainte nommée :</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="51"/>
@@ -1591,13 +1721,13 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<location filename="../dialogs/constraintdialog.cpp" line="170"/>
<source>Primary key</source>
<comment>table constraints</comment>
- <translation>Clé primaire</translation>
+ <translation>Clef primaire</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="174"/>
<source>Foreign key</source>
<comment>table constraints</comment>
- <translation>Clé étrangère</translation>
+ <translation>Clef étrangère</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="178"/>
@@ -1642,7 +1772,7 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<location filename="../windows/constrainttabmodel.cpp" line="109"/>
<source>Column (%1)</source>
<comment>table constraints</comment>
- <translation>Colonne(%1)</translation>
+ <translation>Colonne (%1)</translation>
</message>
<message>
<location filename="../windows/constrainttabmodel.cpp" line="153"/>
@@ -1680,139 +1810,139 @@ mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation>Filtre de données</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
- <translation>Vue tableau</translation>
+ <translation>Table</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
- <translation>Vue formulaire</translation>
+ <translation>Formulaire</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation>Actualiser les données de la table</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>Première page</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Page précédente</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Page suivante</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Dernière page</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Appliquer le filtre</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation>Enregistrer les modifications des cellules sélectionnées</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation>Annuler les modifications des celulles sélectionnées</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="208"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
- <translation>Afficache des résultats en tableau</translation>
+ <translation>Affichage des résultats en tableau</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation>Affichage des résultat en formulaire</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Filtrer par texte</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation>Filtrer par une expression standard</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Filtrer par une expression SQL</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Onglets en haut</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Onglet en bas</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<source>Place new rows at the end of the data view</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<source>Total number of rows is being counted.
Browsing other pages will be possible after the row counting is done.</source>
- <translation>Le total des lignes en cours de comptage. La navigation d&rsquo;autres pages à la fin du comptage.</translation>
+ <translation>Le total des lignes en cours de comptage. La navigation d’autres pages à la fin du comptage.</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
- <translation>Lignes: %1</translation>
+ <translation>Lignes : %1</translation>
</message>
</context>
<context>
@@ -1830,7 +1960,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="29"/>
<source>Source database version:</source>
- <translation>Version de la base de données source:</translation>
+ <translation>Version de la base de données source :</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="46"/>
@@ -1840,7 +1970,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="52"/>
<source>Target version:</source>
- <translation>Version cible:</translation>
+ <translation>Version cible :</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="59"/>
@@ -1850,12 +1980,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="66"/>
<source>Target file:</source>
- <translation>Fichier cible:</translation>
+ <translation>Fichier cible :</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="73"/>
<source>Name of the new database:</source>
- <translation>Nom de la nouvelle base de données:</translation>
+ <translation>Nom de la nouvelle base de données :</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="90"/>
@@ -1870,12 +2000,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="129"/>
<source>Enter valid and writable file path.</source>
- <translation>Saississez le chemin d&rsquo;un fichier valide et en écriture.</translation>
+ <translation>Saississez le chemin d’un fichier valide et en écriture.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="131"/>
<source>Entered file exists and will be overwritten.</source>
- <translation>Le fichier remplacera l&rsquo;existant.</translation>
+ <translation>Le fichier remplacera l’existant.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="135"/>
@@ -1895,7 +2025,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="194"/>
<source>Database %1 has been successfully converted and now is available under new name: %2</source>
- <translation>La base de données %1 a été convertie correctement et disponible sous le nom: %2</translation>
+ <translation>La base de données %1 a été convertie correctement et disponible sous le nom : %2</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="206"/>
@@ -1905,12 +2035,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="214"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation>L&rsquo;erreur suivante est survenue lors de la conversion des déclarations SQL dans cible version SQLite:</translation>
+ <translation>L’erreur suivante est survenue lors de la conversion des déclarations SQL dans cible version SQLite :</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="215"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation>Souhaitez-vous ignorer ces erreurs et continuer?</translation>
+ <translation>Souhaitez-vous ignorer ces erreurs et continuer ?</translation>
</message>
</context>
<context>
@@ -1918,12 +2048,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbdialog.ui" line="20"/>
<source>Database</source>
- <translation>Base de donnée</translation>
+ <translation>Base de données</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="26"/>
<source>Database type</source>
- <translation type="unfinished"></translation>
+ <translation>Type de base de données</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="32"/>
@@ -1931,24 +2061,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Pilote de base de données</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Générer automatiquement</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation type="unfinished">Options</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
- <translation type="unfinished"></translation>
+ <translation>Permanent (conserver dans la configuration)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
- <translation type="unfinished"></translation>
+ <translation>Tester la connexion</translation>
</message>
<message>
<source>Name</source>
@@ -1965,30 +2094,29 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbdialog.ui" line="51"/>
<source>Create new database file</source>
- <translation type="unfinished"></translation>
+ <translation>Créer un nouveau fichier de base de données</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>Fichier</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="79"/>
<source>Name (on the list)</source>
- <translation type="unfinished"></translation>
+ <translation>Nom (dans la liste)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation>Génération du nom basé sur le chemin du fichier</translation>
+ <translation type="vanished">Génération du nom basé sur le chemin du fichier</translation>
</message>
<message>
<source>Permanent</source>
<translation type="vanished">Permanent</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation>&lt;p&gt;Autorisez-ceci si vous voulez que la base de données soit stockée dans le fichier de configuration et restauré chaque fois SQLiteStudio est lancé.&lt;/p&gt;</translation>
@@ -1998,32 +2126,37 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="vanished">Test de connexion</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>Navigateur</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <location filename="../dialogs/dbdialog.cpp" line="477"/>
<source>This name is already in use. Please enter unique name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -2033,18 +2166,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
- <source>Auto-generated</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The name will be auto-generated</source>
<translation type="vanished">Le non sera généré automatiquement</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
- <translation>Saississez le nom</translation>
+ <translation type="vanished">Saississez le nom</translation>
</message>
</context>
<context>
@@ -2057,7 +2184,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="175"/>
<source>Are you sure you want to delete table %1?</source>
- <translation>Confirmez la suppression de la table %1?</translation>
+ <translation>Confirmez la suppression de la table %1 ?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="179"/>
@@ -2067,7 +2194,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="180"/>
<source>Are you sure you want to delete index %1?</source>
- <translation>Confirmez la suppression de l&rsquo;indexe %1?</translation>
+ <translation>Confirmez la suppression de l’index %1 ?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="184"/>
@@ -2077,7 +2204,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="185"/>
<source>Are you sure you want to delete trigger %1?</source>
- <translation>Confirmez la suppression du déclencheur %1?</translation>
+ <translation>Confirmez la suppression du déclencheur %1 ?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="189"/>
@@ -2087,12 +2214,34 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="190"/>
<source>Are you sure you want to delete view %1?</source>
- <translation>Confirmez la suppression de la vue %1?</translation>
+ <translation>Confirmez la suppression de la vue %1 ?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
+ <location filename="../dbobjectdialogs.cpp" line="315"/>
<source>Error while dropping %1: %2</source>
- <translation>Erreur à l&rsquo;abandon %1: %2</translation>
+ <translation>Erreur à l’abandon %1 : %2</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="282"/>
+ <source>Delete objects</source>
+ <translation type="unfinished">Objets supprimés</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="283"/>
+ <source>Are you sure you want to delete following objects:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="290"/>
+ <source>Cannot start transaction. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="327"/>
+ <source>Cannot commit transaction. Details: %1</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2108,344 +2257,370 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Filtre par nom</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>Coller</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>Tout sélectionner</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
- <translation>Créer un group</translation>
+ <translation>Créer un groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
- <translation>Supprimer un group</translation>
+ <translation>Supprimer le groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
- <translation>Renommerr un group</translation>
+ <translation>Renommer le groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
- <translation>Ajout d&rsquo;une base de données</translation>
+ <translation>Attacher une base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>Modifier la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
- <translation>Enlever la base de données</translation>
+ <translation>Déatcher la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
- <translation>Connecter la base de données</translation>
+ <translation>Connecter une base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>Déconnecter la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>Importer</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>Exporter la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>Type de base de données à convertir</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation>Vaccum</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
- <translation>Contrôle d&rsquo;intégrité</translation>
+ <translation>Contrôle d’intégrité</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>Créer une table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
- <translation>Modifier une table</translation>
+ <translation>Modifier la table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
- <translation>Supprimer une table</translation>
+ <translation>Supprimer la table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
- <translation>Exporter une table</translation>
+ <translation>Exporter la table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
- <translation>Importer dans une table</translation>
+ <translation>Importer dans la table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>Peupler une table</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>Créer une table identique</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
- <translation>Réinitialise l&rsquo;autoincrémentation</translation>
+ <translation>Réinitialise l’auto-incrémentation</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>Créer un index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
- <translation>Modifier un index</translation>
+ <translation>Modifier l’index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
- <translation>Supprimer un index</translation>
+ <translation>Supprimer l’index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>Créer un déclencheur</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
- <translation>modifier un déclencheur</translation>
+ <translation>Modifier le déclencheur</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
- <translation>Supprimer un déclencheur</translation>
+ <translation>Supprimer le déclencheur</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>Créer une vue</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
- <translation>Modier une vue</translation>
+ <translation>Modier la vue</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
- <translation>Supprimer une vue</translation>
+ <translation>Supprimer la vue</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>Ajouter une colonne</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
- <translation>Modifier une colonne</translation>
+ <translation>Modifier la colonne</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
- <translation>Supprimer une colonne</translation>
+ <translation>Supprimer la colonne</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>Supprimer les objets sélectionnés</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>Vider le filtre</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
- <translation>Actualiser tous les schémas de base de données</translation>
+ <translation>Actualiser tous les schémas de la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
- <translation>Actualiser les schémas de la base de données sélectionnée</translation>
+ <translation>Actualiser les schémas sélectionné de la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>Base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>Groupement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
- <translation>Créer groupe</translation>
+ <translation>Créer un groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
- <translation>Nom de groupe</translation>
+ <translation>Nom du groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
- <translation>L&rsquo;entrée nommée %1 existe déjà dans le group %2.</translation>
+ <translation>L’entrée nommée %1 existe déjà dans le groupe %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>Supprimer le groupe</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
- <translation>Etes-vous certain de supprimer le groupe %1?
+ <translation>Êtes-vous certain de supprimer le groupe %1 ?
Tous les objets de ce groupe seront déplacés dans le groupe parent.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
+ <source>Are you sure you want to remove following databases from the list:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
+ <source>Remove database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
+ <source>Vacuum (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
- <translation>Suppression de la base de données</translation>
+ <translation type="vanished">Suppression de la base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir supprimer la base de données: «&nbsp;%1&nbsp;» ?</translation>
+ <translation type="vanished">Êtes-vous certain de vouloir supprimer la base de données : « %1 » ?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Import impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
+ <translation>Import impossible, car aucun plugin d’import n’est chargé.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Export impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
+ <translation>Export impossible, car aucun plugin d’import n’est chargé.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Erreur pendant l&rsquo;exécution de VACCUM sur la base de données %1: %2</translation>
+ <translation type="vanished">Erreur pendant l’exécution de VACCUM sur la base de données %1 : %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>Exécution de VACCUM terminé avec succès.</translation>
+ <translation type="vanished">Exécution de VACCUM terminé avec succès.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
- <translation>Contrôle d&rsquo;intégrité (%1)</translation>
+ <translation>Contrôle d’intégrité (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
- <translation>Remise à zéro de l&rsquo;autoincrément</translation>
+ <translation>Remise à zéro de l’auto-incrément</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir réinitialiser l&rsquo;outoincrémentation de la table «&nbsp;%1&nbsp;» ?</translation>
+ <translation>Êtes-vous certain de vouloir réinitialiser l’auto-incrémentation de la table « %1 » ?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&rsquo;autoincrémentation de la table «&nbsp;%1&nbsp;» : %2</translation>
+ <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l’auto-incrémentation de la table « %1 » : %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>La valeur de l&rsquo;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
+ <translation type="vanished">La valeur de l’auto-incrémentation de la table %1 a été réinitialisé avec succès.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
- <source>Are you sure you want to delete all data from table «&nbsp;%1&nbsp;» ?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
- <translation>Les objets suivant vont être supprimés: %1.</translation>
+ <translation>Les objets suivant vont être supprimés : %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
- <translation>Les bases de données suivantes seront enlevées de la liste: %1.</translation>
+ <translation>Les bases de données suivantes seront enlevées de la liste : %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
- <translation>Les objets restants du groupe supprimé seront déplacés où le groupe a eu l&rsquo;habitude d&rsquo;être.</translation>
+ <translation>Les objets restants du groupe supprimé seront déplacés où le groupe a eu l’habitude d’être.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
- <translation>%1&lt;br&gt;&lt;br&gt;Etes-vous certain de vouloir continuer?</translation>
+ <translation>%1&lt;br&gt;&lt;br&gt;Êtes-vous certain de vouloir continuer ?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>Objets supprimés</translation>
</message>
@@ -2480,132 +2655,137 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
- <translation>Base de données: %1</translation>
+ <translation>Base de données : %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
- <translation>Version:</translation>
+ <translation>Version :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
- <translation>Taille fichier:</translation>
+ <translation>Taille fichier :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
- <translation>Codage:</translation>
+ <translation>Codage :</translation>
</message>
<message>
<source>Error details:</source>
<comment>dbtree tooltip</comment>
- <translation type="vanished">Détails erreur:</translation>
+ <translation type="vanished">Détails de l’erreur :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="439"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Erreur :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
- <translation>Table: %1</translation>
+ <translation>Table : %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Colonnes:(%1):</translation>
+ <translation>Colonnes (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Index (%1):</translation>
+ <translation>Indexs (%1) :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Déclencheurs (%1):</translation>
+ <translation>Déclencheurs (%1) :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
- <translation>Déplcer</translation>
+ <translation>Déplacer</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation>Données incluses</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation>Index inclus</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation>Déclencheurs inclus</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>Abandonner</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation>Tables référencées</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<source>Do you want to include following referenced tables as well:
%1</source>
<translation>Vous voulez inclure des tables référencées suivantes aussi :
%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation>Conflit de nom</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
- <translation>L&rsquo;objet suivant existe déjà dans la base de données cible.
-Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;interrompre l&rsquo;opération :</translation>
+ <translation>L’objet suivant existe déjà dans la base de données cible.
+Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’opération :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation>Conversion des déclarations SQL </translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation>L&rsquo;erreur suivante est survenue en convertissant des déclarations de SQL de la version cible SQLite :</translation>
+ <translation>L’erreur suivante est survenue en convertissant des déclarations de SQL de la version cible SQLite :</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation>Voulez-vous ignorer ces erreurs et procéder?</translation>
+ <translation>Voulez-vous ignorer ces erreurs et procéder ?</translation>
</message>
</context>
<context>
@@ -2613,15 +2793,15 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/ddlhistorywindow.ui" line="35"/>
<source>Filter by database:</source>
- <translation>Filtre par base de données:</translation>
+ <translation>Filtre par base de données :</translation>
</message>
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="73"/>
<source>-- Queries executed on database %1 (%2)
-- Date and time of execution: %3
%4</source>
- <translation>-- Requête éxécutée sur la base de données %1(%2)
--- Date et heure d&rsquo;exécution: %3
+ <translation>-- Requête éxécutée sur la base de données %1 (%2)
+-- Date et heure d’exécution : %3
%4</translation>
</message>
<message>
@@ -2677,7 +2857,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../windows/editorwindow.cpp" line="171"/>
<location filename="../windows/editorwindow.cpp" line="173"/>
<source>SQL editor %1</source>
- <translation>Editeur SQL %1</translation>
+ <translation>Éditeur SQL %1</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="331"/>
@@ -2698,7 +2878,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../windows/editorwindow.cpp" line="368"/>
<source>Clear execution history</source>
<comment>sql editor</comment>
- <translation>Vider l&rsquo;historique d&rsquo;exécution</translation>
+ <translation>Vider l’historique d’exécution</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="370"/>
@@ -2710,81 +2890,85 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../windows/editorwindow.cpp" line="372"/>
<source>Create view from query</source>
<comment>sql editor</comment>
- <translation>Créer une vue à partir d&rsquo;une requête</translation>
+ <translation>Créer une vue à partir d’une requête</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>Base de données précédente</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>Base de données suivante</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
- <translation>Afficher l&rsquo;onglet suivant</translation>
+ <translation>Afficher l’onglet suivant</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
- <translation>Afficher l&rsquo;onget précédent</translation>
+ <translation>Afficher l’onget précédent</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
- <translation>Focus sur l&rsquo;éditeur SQL ci-dessus</translation>
+ <translation>Focus sur l’éditeur SQL ci-dessus</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation>Base de données active (%1/%2)</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
- <translation>Requête terminée en %1 secondes. Nombre de lignes: %2</translation>
+ <translation>Requête terminée en %1 secondes. Nombre de lignes : %2</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation>Requête terminée en %1 seconde(s).</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
- <translation>Supprimer l&rsquo;historique d&rsquo;exécution</translation>
+ <translation>Supprimer l’historique d’exécution</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
- <translation>Etes vous certain de vouloir supprimer la totalité de l&rsquo;historique d&rsquo;exécution SQL? Aucun retour possible.</translation>
+ <translation>Êtes vous certain de vouloir supprimer la totalité de l’historique d’exécution SQL ? Aucun retour possible.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Impossible d&rsquo;exporter, car aucun plugin d&rsquo;expertation n&rsquo;est chargés.</translation>
+ <translation>Impossible d’exporter, car aucun plugin d’expertation n’est chargés.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
- <translation>Aucune base de données den sélectionnée dans l&rsquo;éditeur SQL. Impossible de créer une vue sur une base de données inconnue.</translation>
+ <translation>Aucune base de données den sélectionnée dans l’éditeur SQL. Impossible de créer une vue sur une base de données inconnue.</translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>Fenêtre d&rsquo;éditeur &quot;%1&quot; n&rsquo;a pas enregistrer les données.</translation>
+ <translation type="vanished">Fenêtre d’éditeur &quot;%1&quot; n’a pas enregistrer les données.</translation>
</message>
</context>
<context>
@@ -2797,12 +2981,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="20"/>
<source>Following errors occured:</source>
- <translation>Les erreurs suivantes sont arrivées:</translation>
+ <translation>Les erreurs suivantes sont arrivées :</translation>
</message>
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="34"/>
<source>Would you like to proceed?</source>
- <translation>Désirez-vous traiter?</translation>
+ <translation>Désirez-vous traiter ?</translation>
</message>
</context>
<context>
@@ -2815,7 +2999,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="21"/>
<source>What do you want to export?</source>
- <translation>Que voulez-vous exporter?</translation>
+ <translation>Que voulez-vous exporter ?</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="36"/>
@@ -2825,12 +3009,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="46"/>
<source>A single table</source>
- <translation>une simple table</translation>
+ <translation>Une table</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="53"/>
<source>Query results</source>
- <translation>Résultats de requête</translation>
+ <translation>Résultats d’une requête</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="65"/>
@@ -2855,7 +3039,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="130"/>
<source>When this option is unchecked, then only table DDL (CREATE TABLE statement) is exported.</source>
- <translation>Lorsque cette option n&rsquo;est contrôlée, alors seulement le DDL de la table (CREATE TABLE...) est exporté.</translation>
+ <translation>Lorsque cette option n’est contrôlée, alors seulement le DDL de la table (CREATE TABLE...) est exporté.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="133"/>
@@ -2875,7 +3059,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="175"/>
<source>Note, that exporting table indexes and triggers may be unsupported by some output formats.</source>
- <translation>Notez, ces index de table d&rsquo;exportation et les déclencheurs peuvent être non supportées par quelques formats de sortie.</translation>
+ <translation>NB : les index de la table d’exportation et les déclencheurs peuvent ne pas être pris en charge par certains formats d’export.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="189"/>
@@ -2901,7 +3085,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../dialogs/exportdialog.ui" line="229"/>
<location filename="../dialogs/exportdialog.ui" line="249"/>
<source>Database:</source>
- <translation>Base de données:</translation>
+ <translation>Base de données :</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="237"/>
@@ -2911,7 +3095,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="256"/>
<source>Query to be executed for results:</source>
- <translation>Requête à exécuter pour des résultats:</translation>
+ <translation>Requête à exécuter :</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="264"/>
@@ -2921,7 +3105,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="318"/>
<source>Export format</source>
- <translation>Format d&rsquo;exportation</translation>
+ <translation>Format d’exportation</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="330"/>
@@ -2931,7 +3115,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="336"/>
<source>Exported file path</source>
- <translation>Chemin du fichier d&rsquo;exportation</translation>
+ <translation>Chemin du fichier d’exportation</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="343"/>
@@ -2946,7 +3130,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.ui" line="382"/>
<source>Exported text encoding:</source>
- <translation>Texte encodé exporté:</translation>
+ <translation>Texte encodé exporté :</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="398"/>
@@ -2956,7 +3140,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.cpp" line="51"/>
<source>Cancel</source>
- <translation>annuler</translation>
+ <translation>Annuler</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="149"/>
@@ -2983,27 +3167,27 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.cpp" line="221"/>
<source>You must provide a file name to export to.</source>
- <translation>Vous devez fournir le nom d&rsquo;un fichier à exporter.</translation>
+ <translation>Vous devez fournir le nom d’un fichier à exporter.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="228"/>
<source>Path you provided is an existing directory. You cannot overwrite it.</source>
- <translation>Le chemin fourni est un répertoire existant. Vous ne pouvez pas l&rsquo;écraser.</translation>
+ <translation>Le chemin fourni est un répertoire existant. Vous ne pouvez pas l’écraser.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="234"/>
<source>The directory &apos;%1&apos; does not exist.</source>
- <translation>Le répertoire «&nbsp;%1&nbsp;» n&rsquo;existe pas.</translation>
+ <translation>Le répertoire « %1 » n’existe pas.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="240"/>
<source>The file &apos;%1&apos; exists and will be overwritten.</source>
- <translation>Le fichier «&nbsp;%1&nbsp;» existe et sera écrasé.</translation>
+ <translation>Le fichier « %1 » existe et sera écrasé.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="417"/>
<source>All files (*)</source>
- <translation>tous les fichiers(*)</translation>
+ <translation>Tous les fichiers(*)</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="420"/>
@@ -3013,7 +3197,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/exportdialog.cpp" line="709"/>
<source>Internal error during export. This is a bug. Please report it.</source>
- <translation>Erreur interne pendant l&rsquo;exportation. c&rsquo;est un bug. SVP veuillez le reporter.</translation>
+ <translation>Erreur interne pendant l’exportation. c’est un bug. SVP veuillez le reporter.</translation>
</message>
</context>
<context>
@@ -3075,13 +3259,13 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../formview.cpp" line="247"/>
<source>Insert new row</source>
<comment>form view</comment>
- <translation>Insérer nouvelle ligne</translation>
+ <translation>Insérer une nouvelle ligne</translation>
</message>
<message>
<location filename="../formview.cpp" line="248"/>
<source>Delete current row</source>
<comment>form view</comment>
- <translation>Supprimer ligne courante</translation>
+ <translation>Supprimer la ligne courante</translation>
</message>
</context>
<context>
@@ -3094,22 +3278,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/functionseditor.ui" line="260"/>
<source>Function name:</source>
- <translation>Nom fonction:</translation>
+ <translation>Nom fonction :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="273"/>
<source>Implementation language:</source>
- <translation>Langage:</translation>
+ <translation>Langage :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="253"/>
<source>Type:</source>
- <translation>Type:</translation>
+ <translation>Type :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="157"/>
<source>Input arguments</source>
- <translation>Entrez arguments </translation>
+ <translation>Entrez arguments</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="163"/>
@@ -3129,23 +3313,23 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/functionseditor.ui" line="218"/>
<source>Register in following databases:</source>
- <translation>Enregistre les bases de données suivantes:</translation>
+ <translation>Enregistre les bases de données suivantes :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="293"/>
<source>Initialization code:</source>
- <translation>Code d&rsquo;initialisation:</translation>
+ <translation>Code d’initialisation :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="309"/>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Function implementation code:</source>
- <translation>Fonction de code d&rsquo;implémentation:</translation>
+ <translation>Fonction de code d’implémentation :</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="325"/>
<source>Final step implementation code:</source>
- <translation>Etape finale de code d&rsquo;implémentaion:</translation>
+ <translation>Etape finale de code d’implémentaion :</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="54"/>
@@ -3185,22 +3369,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/functionseditor.cpp" line="69"/>
<source>Rename function argument</source>
- <translation>Renomme l&rsquo;argument de la fonction</translation>
+ <translation>Renomme l’argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="70"/>
<source>Delete function argument</source>
- <translation>Supprime l&rsquo;argument de la fonction</translation>
+ <translation>Supprime l’argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="72"/>
<source>Move function argument up</source>
- <translation>Monte l&rsquo;argument de la fonction</translation>
+ <translation>Monte l’argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="73"/>
<source>Move function argument down</source>
- <translation>Descend l&rsquo;argument de la fonction</translation>
+ <translation>Descend l’argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="111"/>
@@ -3225,12 +3409,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Per step code:</source>
- <translation>Code par étape:</translation>
+ <translation>Code par étape :</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="432"/>
<source>Enter a non-empty implementation code.</source>
- <translation>Saississez un code d&rsquo;implémentation non vide.</translation>
+ <translation>Saississez un code d’implémentation non vide.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="505"/>
@@ -3240,8 +3424,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
+ <source>Functions editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Functions editor window has uncommited modifications.</source>
- <translation>L&rsquo;éditeur de fonction n&rsquo;a pas enregistré les modifications.</translation>
+ <translation type="vanished">L’éditeur de fonction n’a pas enregistré les modifications.</translation>
</message>
</context>
<context>
@@ -3284,12 +3472,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/importdialog.ui" line="182"/>
<source>Input file:</source>
- <translation>Fichier:</translation>
+ <translation>Fichier :</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="175"/>
<source>Text encoding:</source>
- <translation>Texte codé:</translation>
+ <translation>Texte codé :</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="192"/>
@@ -3324,7 +3512,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
- <translation>Sélectionnez un plugin d&rsquo;importation.</translation>
+ <translation>Sélectionnez un plugin d’importation.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="130"/>
@@ -3334,7 +3522,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
- <translation>Le fichier «&nbsp;%1&nbsp;» n&rsquo;existe pas.</translation>
+ <translation>Le fichier « %1 » n’existe pas.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="143"/>
@@ -3344,7 +3532,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
- <translation>Sélectionnez le fichier d&rsquo;importation</translation>
+ <translation>Sélectionnez le fichier d’importation</translation>
</message>
</context>
<context>
@@ -3356,103 +3544,176 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<translation>Index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
- <translation>De la table:</translation>
+ <translation>De la table :</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
- <translation>Nom index:</translation>
+ <translation>Nom index :</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
- <translation>Condition partielle d&rsquo;index</translation>
+ <translation>Condition partielle d’index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>Index unique</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation>Colonne</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation>Regroupement</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>Tri</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <location filename="../dialogs/indexdialog.ui" line="98"/>
+ <source>Delete selected indexed expression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="108"/>
+ <source>Moves selected index column up in the order, making it more significant in the index.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="118"/>
+ <source>Moves selected index column down in the order, making it less significant in the index.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="149"/>
+ <source>Edit selected indexed expression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="169"/>
+ <source>Add indexed expression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="180"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <location filename="../dialogs/indexdialog.cpp" line="66"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
- <translation>Vous tentez d&rsquo;ouvrir le dialogue de l&rsquo;index d&rsquo;une base de données fermée ou inexistante.</translation>
+ <translation>Vous tentez d’ouvrir le dialogue de l’index d’une base de données fermée ou inexistante.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="131"/>
+ <location filename="../dialogs/indexdialog.cpp" line="149"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
- <translation>Impossible de définir l&rsquo;index %1 correctement. Ouvrir un dialogue d&rsquo;index valide.</translation>
+ <translation>Impossible de définir l’index %1 correctement. Ouvrir un dialogue d’index valide.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="185"/>
+ <location filename="../dialogs/indexdialog.cpp" line="206"/>
+ <source>Unique index cannot have indexed expressions. Either remove expressions from list below, or uncheck this option.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="207"/>
<source>Pick the table for the index.</source>
- <translation>Sélectionnez la table pour l&rsquo;index.</translation>
+ <translation>Sélectionnez la table pour l’index.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>Selectionnez au moins une colonne.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <location filename="../dialogs/indexdialog.cpp" line="209"/>
<source>Enter a valid condition.</source>
<translation>Saississez une condition valide.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <location filename="../dialogs/indexdialog.cpp" line="276"/>
<source>default</source>
<comment>index dialog</comment>
<translation>defaut</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
- <translation>ordre de tri</translation>
+ <translation>Ordre de tri</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="455"/>
+ <location filename="../dialogs/indexdialog.cpp" line="753"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
- <translation>Impossible de créer un index, car les valeurs des colonnes sélectionnées ne sont pas uniques. Voulez-vous exécuter une requête SELECT pour voir les valeurs problématiques?</translation>
+ <translation>Impossible de créer un index, car les valeurs des colonnes sélectionnées ne sont pas uniques. Voulez-vous exécuter une requête SELECT pour voir les valeurs problématiques ?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation>Une erreur survenue à l&rsquo;exécution de l&rsquo;SQL:
+ <translation>Une erreur survenue à l’exécution de l’SQL :
%1</translation>
</message>
</context>
<context>
+ <name>IndexExprColumnDialog</name>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.ui" line="14"/>
+ <source>Indexed expression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.ui" line="20"/>
+ <source>Expression to index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="60"/>
+ <source>This expression is already indexed by the index.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="66"/>
+ <source>Column should be indexed directly, not by expression. Either extend this expression to contain something more than just column name, or abort and select this column in index dialog directly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="76"/>
+ <source>Column &apos;%1&apos; does not belong to the table covered by this index. Indexed expressions can refer only to columns from the indexed table.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="84"/>
+ <source>It&apos;s forbidden to use &apos;SELECT&apos; statements in indexed expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="105"/>
+ <source>Enter an indexed expression.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="119"/>
+ <source>Invalid expression.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>LanguageDialog</name>
<message>
<location filename="../dialogs/languagedialog.ui" line="14"/>
@@ -3462,7 +3723,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/languagedialog.ui" line="20"/>
<source>Please choose language:</source>
- <translation>SVP choississez un langage:</translation>
+ <translation>SVP choississez un langage :</translation>
</message>
</context>
<context>
@@ -3470,306 +3731,310 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../mainwindow.ui" line="81"/>
<source>Database toolbar</source>
- <translation>Barre d&rsquo;outils de base de données</translation>
+ <translation>Barre d’outils de base de données</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Structure toolbar</source>
- <translation>Barre d&rsquo;outils de structure</translation>
+ <translation>Barre d’outils de structure</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="103"/>
<source>Tools</source>
- <translation>outils</translation>
+ <translation>Barre d’outils des éditeurs</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="120"/>
<source>Window list</source>
- <translation>liste fenêtre</translation>
+ <translation>Liste des fenêtres ouvertes</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="134"/>
<source>View toolbar</source>
- <translation>Barre d&rsquo;outils vues</translation>
+ <translation>Barre d’outils de fenêtrage</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation>Configuration widgets</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation>Syntaxe surlignée des moteurs</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
- <translation>Editeur s de données</translation>
+ <translation>Éditeurs de données</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
- <translation>Passage en mode débogue. Cliquez %1 ou utilisez l&rsquo;entrée du menu «&nbsp;l&rsquo;Aide / Ouvrir la console de débogage&nbsp;».</translation>
+ <translation>Passage en mode débogue. Cliquez %1 ou utilisez l’entrée du menu « l’Aide / Ouvrir la console de débogage ».</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<source>Running in debug mode. Debug messages are printed to the standard output.</source>
<translation>Passage en mode débogue. Les messages de débogage sont imprimés dans la sortie standard.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<source>You need to restart application to make the language change take effect.</source>
- <translation>Vous devez relancer l&rsquo;application pour que le langage prenne effet.</translation>
+ <translation>Vous devez relancer l’application pour que le langage prenne effet.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
- <translation>Ouvrir éditeur SQL</translation>
+ <translation>Ouvrir l’éditeur SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
- <translation>Ouvrir Historique DDL</translation>
+ <translation>Ouvrir l’historique DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
- <translation>Editeur de fonctions SQL</translation>
+ <translation>Éditeur de fonctions SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
- <translation>Ouvrir editeur de collections</translation>
+ <translation>Ouvrir l’éditeur de collections</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>Importer</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>Exporter</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
- <translation>Ouvrir dialogue de configuration</translation>
+ <translation>Préférences</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
- <translation>Organisation des fenêtres</translation>
+ <translation>Organisation des fenêtres en grille</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
- <translation>Organisation des fenêtres horizontalement</translation>
+ <translation>Organisation horizontale des fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
- <translation>Organisation des fenêtres verticalement</translation>
+ <translation>Organisation verticale des fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>Organisation des fenêtres en cascade</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>Fenêtre suivante</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>Fenêtre précédante</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
- <translation>Ca</translation>
+ <translation>Cacher le champ d’état</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
- <translation>Fermeture fenêtre sélectionnée</translation>
+ <translation>Fermer la fenêtre sélectionnée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
- <translation>Fermeture de toutes les fenêtres sélectionnées</translation>
+ <translation>Fermer toutes les fenêtres sélectionnées</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
- <translation>Fermeture de toutes les fenêtres</translation>
+ <translation>Fermer toutes les fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
- <translation>Restaure une fenêtre récemment fermée</translation>
+ <translation>Restaurer la dernière fenêtre fermée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
- <translation>Renomme la fenêtre sélectionnée</translation>
+ <translation>Renommer la fenêtre sélectionnée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>Ouvrir la console de debogage</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Ouvrir la console CSS</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
- <translation>Rapport de bug</translation>
+ <translation>Rapporter un bogue</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
- <translation>Proposer une nouvelle fonction</translation>
+ <translation>Proposer une fonctionnalité</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>À propos de…</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>Licences</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
- <translation>Ouvrir la home page</translation>
+ <translation>Page d’accueil web</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
- <translation>Ouvrir la page des forums</translation>
+ <translation>Forum d’aide</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
- <translation>Manuel utilisateurs</translation>
+ <translation>Manuel utilisateurs en ligne</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
- <translation>Documentation SQLite</translation>
+ <translation>Documentation en ligne de SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
- <translation>Rapport d&rsquo;historique</translation>
+ <translation>Historique</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
- <translation>Vérification de mises à jour</translation>
+ <translation>Vérifier les mises à jour</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Base de données</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Structure</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>Vue</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
- <translation>Liste de fenêtres</translation>
+ <translation>Liste des fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Outils</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
- <translation>Impossible de positionner le style: %1</translation>
+ <translation>Impossible de positionner le style : %1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Exportation impossible, aucun plugin d&rsquo;exportation n&rsquo;est chargé.</translation>
+ <translation>Exportation impossible, aucun plugin d’exportation n’est chargé.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Importation impossible, aucun plugin d&rsquo;importation n&rsquo;est chargé.</translation>
+ <translation>Importation impossible, aucun plugin d’importation n’est chargé.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>Renommer la fenêtre</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
- <translation>Saississez un nouveau nom de fenêtre:</translation>
+ <translation>Saississez un nouveau nom de fenêtre :</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Une nouvelle mise à jour est disponible. &lt;a href=&quot;%1&quot;&gt; cliquez ici pour détails&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation>Vous utilisez la dernière version. Aucune mise à jour de disponible.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<source>Database passed in command line parameters (%1) was already on the list under name: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source>
- <translation>La base de données passée en paramètre dans la ligne de commande (%1)a été temporaire ajoutée à la liste sous le nom: %2</translation>
+ <translation>La base de données passée en paramètre dans la ligne de commande (%1)a été temporaire ajoutée à la liste sous le nom : %2</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
- <translation>Impossible d&rsquo;ajouter la base de données %1 à la liste.</translation>
+ <translation>Impossible d’ajouter la base de données %1 à la liste.</translation>
</message>
</context>
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>Modification non enregistrées</translation>
+ <translation type="vanished">Modification non enregistrées</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -3793,12 +4058,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../multieditor/multieditor.cpp" line="77"/>
<source>Configure editors for this data type</source>
- <translation>Configurer l&rsquo;éditeur pour ce type de données</translation>
+ <translation>Configurer l’éditeur pour ce type de données</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="287"/>
<source>Data editor plugin &apos;%1&apos; not loaded, while it is defined for editing &apos;%1&apos; data type.</source>
- <translation>Plugin d&quot;éditeur de données «&nbsp;%1&nbsp;» non chargé, ausii il n&rsquo;ai pas défini pourle type de données «&nbsp;%1&nbsp;».</translation>
+ <translation>Plugin d&quot;éditeur de données « %1 » non chargé, ausii il n’ai pas défini pour le type de données « %1 ».</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="372"/>
@@ -3826,7 +4091,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../multieditor/multieditordate.cpp" line="14"/>
<source>Date</source>
- <translation>Datee</translation>
+ <translation>Date</translation>
</message>
</context>
<context>
@@ -3834,7 +4099,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../multieditor/multieditordatetime.cpp" line="181"/>
<source>Date &amp; time</source>
- <translation>Heure &amp; date</translation>
+ <translation>date &amp; heure</translation>
</message>
</context>
<context>
@@ -3889,12 +4154,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../multieditor/multieditortext.cpp" line="111"/>
<source>Undo</source>
- <translation>Défaire</translation>
+ <translation>Annuler</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="112"/>
<source>Redo</source>
- <translation>refaire</translation>
+ <translation>Rétablir</translation>
</message>
</context>
<context>
@@ -3917,14 +4182,14 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../dialogs/newconstraintdialog.cpp" line="97"/>
<source>Primary Key</source>
<comment>new constraint dialog</comment>
- <translation>Clé primaire</translation>
+ <translation>Clef primaire</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="89"/>
<location filename="../dialogs/newconstraintdialog.cpp" line="99"/>
<source>Foreign Key</source>
<comment>new constraint dialog</comment>
- <translation>Clé étrangère</translation>
+ <translation>Clef étrangère</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="91"/>
@@ -3969,7 +4234,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/newversiondialog.ui" line="26"/>
<source>New updates are available!</source>
- <translation>Les nouvelles mises à jours sont valides!</translation>
+ <translation>Les nouvelles mises à jours sont valides !</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="70"/>
@@ -3994,12 +4259,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/newversiondialog.ui" line="101"/>
<source>Update to new version!</source>
- <translation>Mettre à jour la nouvelle version!</translation>
+ <translation>Mettre à jour la nouvelle version !</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="114"/>
<source>The update will be automatically downloaded and installed. This will also restart application at the end.</source>
- <translation>La mise à jour sera automatiquement téléchargée et installée. Un redémarrage de l&rsquo;application sera aussi effectué à la fin.</translation>
+ <translation>La mise à jour sera automatiquement téléchargée et installée. Un redémarrage de l’application sera aussi effectué à la fin.</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="121"/>
@@ -4050,7 +4315,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../dialogs/populatedialog.ui" line="102"/>
<source>Number of rows to populate:</source>
- <translation>Nombre de lignes à peupler:</translation>
+ <translation>Nombre de lignes à peupler :</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="42"/>
@@ -4094,17 +4359,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/>
<source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source>
- <translation>impossible d&rsquo;éditer les colonnes qui ont le résultat composé des déclarations %1 (inclus %2, %3 ou %4 mots-clés).</translation>
+ <translation>impossible d’éditer les colonnes qui ont le résultat composé des déclarations %1 (inclus %2, %3 ou %4 mots-clefs).</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/>
<source>The query execution mechanism had problems with extracting ROWID&apos;s properly. This might be a bug in the application. You may want to report this.</source>
- <translation>Le mécanisme d&rsquo;exécution de la requête a eu des problèmes avec l&rsquo;extraction du ROWID&rsquo;S. Ceci pourrait être un bogue de l&rsquo;application. Vous pouvez le rapporter.</translation>
+ <translation>Le mécanisme d’exécution de la requête a eu des problèmes avec l’extraction du ROWID’S. Ceci pourrait être un bogue de l’application. Vous pouvez le rapporter.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/>
<source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source>
- <translation>La colonne demandée est un résultat d&rsquo;expression de SQL, au lieu d&rsquo;une sélection de colonne simple. De telles colonnes ne peuvent pas être éditées.</translation>
+ <translation>La colonne demandée est un résultat d’expression de SQL, au lieu d’une sélection de colonne simple. De telles colonnes ne peuvent pas être éditées.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/>
@@ -4114,22 +4379,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/>
<source>Cannot edit results of query other than %1.</source>
- <translation>Impossible d&rsquo;éditer les résultats de la requëte autrement que %1.</translation>
+ <translation>Impossible d’éditer les résultats de la requëte autrement que %1.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/>
<source>Cannot edit columns that are result of aggregated %1 statements.</source>
- <translation>Impossible d&rsquo;éditer les colonnes qui sont le résultat de déclarations agrégées %1.</translation>
+ <translation>Impossible d’éditer les colonnes qui sont le résultat de déclarations agrégées %1.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/>
<source>Cannot edit columns that are result of %1 statement.</source>
- <translation>Impossible d&rsquo;éditer les colonnesqui sont le résultat de déclaration %1.</translation>
+ <translation>Impossible d’éditer les colonnesqui sont le résultat de déclaration %1.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/>
<source>Cannot edit columns that are result of common table expression statement (%1).</source>
- <translation>Impossible d&rsquo;éditer les colonnes qui sont le résultat de table commune de déclaration (%1).</translation>
+ <translation>Impossible d’éditer les colonnes qui sont le résultat de table commune de déclaration (%1).</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/>
@@ -4138,7 +4403,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/>
<source>on conflict: %1</source>
<comment>data view tooltip</comment>
- <translation>Sur conflit %1</translation>
+ <translation>Sur conflit : %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/>
@@ -4150,136 +4415,136 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/>
<source>condition: %1</source>
<comment>data view tooltip</comment>
- <translation>Condition: %1</translation>
+ <translation>Condition : %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/>
<source>collation name: %1</source>
<comment>data view tooltip</comment>
- <translation>Nom de collation: %1</translation>
+ <translation>Nom de collation : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation>Vue de tableau de données</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation>Copie le contenu de cellule(s) dans le presse-papier</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation>Colle</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation>Efface le contenu de cellule(s)</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL value to selected cell(s)</source>
<translation>Met à NULL les cellules séléctionnées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="26"/>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Commit changes to cell(s) contents</source>
<translation>Enregistre les modifications de cellule(s)</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback changes to cell(s) contents</source>
<translation>Annule les modifications de cellule(s)</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="28"/>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Delete selected data row</source>
- <translation>Supprimeles données de la ligne sélectionnée</translation>
+ <translation>Supprime les données de la ligne sélectionnée</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation>Insére une nouvelle ligne de données</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation>Contenu ouvert de cellule choisie dans un éditeur séparé</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
- <translation>Total de pages: %1</translation>
+ <translation>Nombre de pages disponibles : %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
- <translation>Total dee lignes chargées: %1</translation>
+ <translation>Nombre de lignes chargées : %1</translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
- <translation>Vue de données (tableau et formulaire)</translation>
+ <translation>Vue des données (tableau et formulaire)</translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation>Actualisation des données</translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
- <translation>Basculer sur la vue tableau de données</translation>
+ <translation>Basculer sur la vue des données en table</translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
- <translation>Basculer sur la vue formulaire de données</translation>
+ <translation>Basculer sur la vue des données en formulaire</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation>Liste de bases de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
- <translation>Suppression de l&rsquo;item sélectionné</translation>
+ <translation>Suppression de l’item sélectionné</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation>Effacer le contenu du filtre</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation>Actualiser le schéma</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation>Actualiser tous les schémas</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
- <translation>Ajouter une base de donnés</translation>
+ <translation>Ajouter une base de données</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
- <translation>Séléctionner tous les items</translation>
+ <translation>Séléctionner tous les éléments</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
- <translation>Copie d&rsquo;item(s) sélectionné(s)</translation>
+ <translation>Copie d’item(s) sélectionné(s)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4363,7 +4628,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../mainwindow.h" line="44"/>
<source>Open SQL editor</source>
- <translation>Ouvrir l&rsquo;éditeur SQL</translation>
+ <translation>Ouvrir l’éditeur SQL</translation>
</message>
<message>
<location filename="../mainwindow.h" line="45"/>
@@ -4378,12 +4643,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../mainwindow.h" line="47"/>
<source>Hide status area</source>
- <translation>Cacher la barre de status</translation>
+ <translation>Cacher la barre d’état</translation>
</message>
<message>
<location filename="../mainwindow.h" line="48"/>
<source>Open configuration dialog</source>
- <translation>Ouvrir le dialogue de configuration</translation>
+ <translation>Préférences</translation>
</message>
<message>
<location filename="../mainwindow.h" line="49"/>
@@ -4393,12 +4658,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../mainwindow.h" line="50"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>Ouvrir la console CSS</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="12"/>
<source>Cell text value editor</source>
- <translation>Editeur de texte de cellule</translation>
+ <translation>Éditeur de cellule</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
@@ -4422,23 +4687,23 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<location filename="../multieditor/multieditortext.h" line="17"/>
<location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
- <translation>Défaire</translation>
+ <translation>Annuler</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
<location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
- <translation>Refaire</translation>
+ <translation>Rétablir</translation>
</message>
<message>
<location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
- <translation>Editeur SQL saisie de champ</translation>
+ <translation>Éditeur SQL saisie de champ</translation>
</message>
<message>
<location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
- <translation>Sélectionnez le contenu entier de l&rsquo;éditeur</translation>
+ <translation>Sélectionnez le contenu entier de l’éditeur</translation>
</message>
<message>
<location filename="../sqleditor.h" line="30"/>
@@ -4448,7 +4713,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
- <translation>Charger le contenu d&rsquo;un fichier</translation>
+ <translation>Charger le contenu d’un fichier</translation>
</message>
<message>
<location filename="../sqleditor.h" line="32"/>
@@ -4458,12 +4723,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
- <translation>Recherche suivante</translation>
+ <translation>Occurence suivante</translation>
</message>
<message>
<location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
- <translation>Recherche précédente</translation>
+ <translation>Occurence précédente</translation>
</message>
<message>
<location filename="../sqleditor.h" line="35"/>
@@ -4488,27 +4753,32 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
- <translation>Déplacer le block de texte sélectionné à la ligne inférieure</translation>
+ <translation>Déplacer le bloc de texte sélectionné à la ligne inférieure</translation>
</message>
<message>
<location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
- <translation>Déplacer le block de texte sélectionné à la ligne supérieure</translation>
+ <translation>Déplacer le bloc de texte sélectionné à la ligne supérieure</translation>
</message>
<message>
<location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
- <translation>Copier le block de texte sélectionné à la ligne au dessus</translation>
+ <translation>Copier le bloc de texte sélectionné à la ligne au-dessus</translation>
</message>
<message>
<location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
- <translation>Copier le block de texte sélectionné à la ligne au dessous</translation>
+ <translation>Copier le bloc de texte sélectionné à la ligne au-dessous</translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="43"/>
+ <source>Toggle comment</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
- <translation>Tius les bases de données SQLite</translation>
+ <translation>Toutes les bases de données SQLite</translation>
</message>
<message>
<location filename="../uiutils.cpp" line="35"/>
@@ -4524,17 +4794,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/bugreporthistorywindow.h" line="11"/>
<source>Reports history window</source>
- <translation>Fenêtre d&rsquo;historique</translation>
+ <translation>Fenêtre d’historique</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.h" line="12"/>
<source>Delete selected entry</source>
- <translation>Effacer l&rsquo;entrée sélectionnée</translation>
+ <translation>Effacer l’entrée sélectionnée</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="26"/>
<source>SQL editor window</source>
- <translation>Fenêtre de l&rsquo;éditeur SQL</translation>
+ <translation>Fenêtre de l’éditeur SQL</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="27"/>
@@ -4559,12 +4829,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/editorwindow.h" line="31"/>
<source>Go to next editor tab</source>
- <translation>Aller à l&rsquo;onglet d&rsquo;éditeur suivant</translation>
+ <translation>Aller à l’onglet d’éditeur suivant</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="32"/>
<source>Go to previous editor tab</source>
- <translation>Aller à l&rsquo;onglet d&rsquo;éditeur précédent</translation>
+ <translation>Aller à l’onglet d’éditeur précédent</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="33"/>
@@ -4577,109 +4847,109 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<translation>Déplacement au-dessous du focus des résultats de vue par les touches</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation>Fenêtre de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation>Actualiser la structure de la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
- <translation>Ajout nouvelle colonne</translation>
+ <translation>Ajouter une nouvelle colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation>Modifier la colonne sélectionnée</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation>Supprime la colonne sélectionnée</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation>Exporte les données de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <location filename="../windows/tablewindow.h" line="37"/>
<source>Import data to the table</source>
<translation>Importe les données de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="37"/>
+ <location filename="../windows/tablewindow.h" line="38"/>
<source>Add new table constraint</source>
<translation>Ajoute une nouvelle contrainte à la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="38"/>
+ <location filename="../windows/tablewindow.h" line="39"/>
<source>Edit selected table constraint</source>
<translation>Modifie la contrainte de la table sélectionnée</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="39"/>
+ <location filename="../windows/tablewindow.h" line="40"/>
<source>Delete selected table constraint</source>
<translation>Supprime la contrainte de la table sélectionnée</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="40"/>
+ <location filename="../windows/tablewindow.h" line="41"/>
<source>Refresh table index list</source>
- <translation>Actualise la liste des index de table</translation>
+ <translation>Actualise la liste des index de la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation>Ajoute un nouvel index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
- <translation>Modifie l&rsquo;index sélectionné</translation>
+ <translation>Modifie l’index sélectionné</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
- <translation>Supprime l&rsquo;index sélectionné</translation>
+ <translation>Supprime l’index sélectionné</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <location filename="../windows/tablewindow.h" line="45"/>
<source>Refresh table trigger list</source>
<translation>Actualise la liste des déclencheurs de la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="45"/>
+ <location filename="../windows/tablewindow.h" line="46"/>
<location filename="../windows/viewwindow.h" line="25"/>
<source>Add new trigger</source>
<translation>Ajoute un nouveau déclencheur</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="46"/>
+ <location filename="../windows/tablewindow.h" line="47"/>
<location filename="../windows/viewwindow.h" line="26"/>
<source>Edit selected trigger</source>
<translation>Modifie le déclencheur sélectionné</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="47"/>
+ <location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="27"/>
<source>Delete selected trigger</source>
<translation>Supprime le déclencheur sélectionné</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="48"/>
+ <location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
- <translation>Aller à l&rsquo;onglet suivant</translation>
+ <translation>Aller à l’onglet suivant</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
- <translation>Aller à l&rsquo;onglet précédent</translation>
+ <translation>Aller à l’onglet précédent</translation>
</message>
<message>
<location filename="../windows/viewwindow.h" line="23"/>
@@ -4689,22 +4959,26 @@ Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;in
<message>
<location filename="../windows/viewwindow.h" line="24"/>
<source>Refresh view trigger list</source>
- <translation>Actualise l&rsquo;affichage de la liste des déclencheur</translation>
+ <translation>Actualise l’affichage de la liste des déclencheurs</translation>
</message>
</context>
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>modifications non enregistrées</translation>
+ <translation type="vanished">modifications non enregistrées</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
<source>Are you sure you want to quit the application?
Following items are pending:</source>
- <translation>Confirmez la fermeture de l&rsquo;application:</translation>
+ <translation>Confirmez la fermeture de l’application ?</translation>
</message>
</context>
<context>
@@ -4717,12 +4991,12 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="23"/>
<source>Find:</source>
- <translation>Trouvé:</translation>
+ <translation>Trouvé :</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="36"/>
<source>Case sensitive</source>
- <translation>Case sensiible</translation>
+ <translation>Sensible à la casse</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="43"/>
@@ -4732,7 +5006,7 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="50"/>
<source>Regular expression matching</source>
- <translation>Correspondance d&rsquo;expression régulière</translation>
+ <translation>Correspondance d’expression régulière</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="60"/>
@@ -4744,7 +5018,7 @@ recherche suivant</translation>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="78"/>
<source>Replace with:</source>
- <translation>Remplacer par:</translation>
+ <translation>Remplacer par :</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="91"/>
@@ -4795,173 +5069,179 @@ recherche suivant</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Couper</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Copier</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Coller</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Tout sélectionner</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
- <translation>Défaire</translation>
+ <translation>Annuler</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
- <translation>Refaire</translation>
+ <translation>Rétablir</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Complet</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Format SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Enregistrer le SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Charger le SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Ligne suppimée</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
- <translation>Descendre le block</translation>
+ <translation>Descendre le bloc</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
- <translation>Monter le block</translation>
+ <translation>Monter le bloc</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
- <translation>Copier block au-dessus</translation>
+ <translation>Copier bloc au-dessus</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
- <translation>Copier block au-dessous</translation>
+ <translation>Copier bloc au-dessous</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Chercher</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Chercher suivant</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Chercher précédent</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Remplacer</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="143"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
- <translation>L&rsquo;achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l&rsquo;éditeur SQL.</translation>
+ <translation>L’achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l’éditeur SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="822"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
- <translation>Le contenu l&rsquo;éditeur SQL est important, aussi la détectiond&rsquo;objets en erreur est temporairement mise hors de service.</translation>
+ <translation>Le contenu l’éditeur SQL est important, aussi la détectiond’objets en erreur est temporairement mise hors de service.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1057"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>Sauvegarder</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
- <translation>Impossible d&rsquo;ouvrir en écriture le fichier «&nbsp;%1&nbsp;» : %2</translation>
+ <translation>Impossible d’ouvrir en écriture le fichier « %1 » : %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
- <translation>Scripts SQL (*.sql);;tous fichiers (*)</translation>
+ <translation>Scripts SQL (*.sql);;Tous les fichiers (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>Fichier ouvert</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
- <translation>Impossible d&rsquo;ouvrir en lecture le fichier «&nbsp;%1&nbsp;» : %2</translation>
+ <translation>Impossible d’ouvrir en lecture le fichier « %1 » : %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Fin de document atteint. Saississez de nouveau la recherche pour relancer la recherche.</translation>
</message>
@@ -4969,213 +5249,272 @@ recherche suivant</translation>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
- <translation>Colonne:</translation>
+ <translation>Colonne :</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
- <translation>Type de données:</translation>
+ <translation>Type de données :</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
- <translation>Table:</translation>
+ <translation>Table :</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
- <translation>Contrainte:</translation>
+ <translation>Contrainte :</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
<source>This cell is not editable, because: %1</source>
- <translation>Cette cellule n&rsquo;est pas modifiable: %1</translation>
+ <translation type="vanished">Cette cellule n’est pas modifiable : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
- <translation>Impossible de charger les données pour une cellule référantà une base de données fermée.</translation>
+ <translation>Impossible de charger les données pour une cellule référant à une base de données fermée.</translation>
</message>
</context>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
<source>Cannot edit this cell. Details: %2</source>
- <translation>impossible de modifier cette cellule. détails: %2</translation>
+ <translation type="vanished">Impossible de modifier cette cellule. Détails : %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
<source>The row is marked for deletion.</source>
- <translation>La ligne est marquée poureffacement.</translation>
+ <translation>La ligne est marquée pour effacement.</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished">Impossible de modifier cette cellule. Détails : %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Uniquement une seule requête peut être exécutée à la fois.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
<source>Uncommited data</source>
- <translation>Données non enregistrées</translation>
+ <translation type="vanished">Données non enregistrées</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
- <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
- <translation>Impossible d&rsquo;enregistrer les données pour la cell qui référe à une base de données déjà fermée.</translation>
+ <translation>Impossible d’enregistrer les données pour la celle qui référe à une base de données déjà fermée.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
<source>Could not begin transaction on the database. Details: %1</source>
- <translation>Impossible de lancer la transaction sur la base de données. Détails: %1</translation>
+ <translation>Impossible de lancer la transaction sur la base de données. Détails : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>Une erreur est survenuelors de l&rsquo;enregistrement de la transaction: %1</translation>
+ <translation type="vanished">Une erreur est survenuelors de l’enregistrement de la transaction : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
<source>An error occurred while rolling back the transaction: %1</source>
- <translation>Une erreur est survenuelors de l&rsquo;annulation de la transaction: %1</translation>
+ <translation>Une erreur est survenuelors de l’annulation de la transaction : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
<source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
- <translation>Tentative d&rsquo;enregistrement d&rsquo;une une cellule qui n&rsquo;est pas modifiable! Ceci est un bogue. Rapportez-le SVP.</translation>
+ <translation>Tentative d’enregistrement d’une une cellule qui n’est pas modifiable ! Ceci est un bogue. Rapportez-le SVP.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>Une erreur est survenuelors de l&rsquo;enregistrement des données: %1</translation>
+ <translation type="vanished">Une erreur est survenuelors de l’enregistrement des données : %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
- <translation>Erreur pendant l&rsquo;exécution de la requête sur la base de données «&nbsp;%1&nbsp;» : %2</translation>
+ <translation>Erreur pendant l’exécution de la requête sur la base de données « %1 » : %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
- <translation>Erreur lors du chargement des résultats de la requête: %1</translation>
+ <translation>Erreur lors du chargement des résultats de la requête : %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation>Insérer plusieurs lignes</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
- <translation>Nombre de lignes à inserrer:</translation>
+ <translation>Nombre de lignes à inserer :</translation>
</message>
</context>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
- <translation>Copier comme ...</translation>
+ <translation>Copier comme…</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>Coller</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
- <translation>Coller comme ...</translation>
+ <translation>Coller comme…</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>Valeurs NULL positionnées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>valeurs écrasées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
- <translation>Valeur modifiée par l&rsquo;éditeur</translation>
+ <translation>Valeur modifiée par l’éditeur</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>Enregistrer</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>Annuler</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation>Enregistrer les cellules sélectionnées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation>Annuler les modifications des cellules sélectionnées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation>Définit les colonnes triées par</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation>Enléve le tri personnalisé</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>Insérer une ligne</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>Insérer plusieurs lignes</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>Supprimer les lignes sélectionnées</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>Modifier la valeur</translation>
</message>
@@ -5183,14 +5522,18 @@ recherche suivant</translation>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
<source>Error while commiting new row: %1</source>
- <translation>Erreur à l&rsquo;nregistrement d&rsquo;une nouvelle ligne: %1</translation>
+ <translation type="vanished">Erreur à l’enregistrement d’une nouvelle ligne : %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
- <translation>Erreur à la suppression d&rsquo;une ligne de la table %1: %2</translation>
+ <translation>Erreur à la suppression d’une ligne de la table %1 : %2</translation>
</message>
</context>
<context>
@@ -5198,12 +5541,12 @@ recherche suivant</translation>
<message>
<location filename="../statusfield.ui" line="14"/>
<source>Status</source>
- <translation>Status</translation>
+ <translation>Barre d’état</translation>
</message>
<message>
<location filename="../statusfield.cpp" line="164"/>
<source>Copy</source>
- <translation>Cipier</translation>
+ <translation>Copier</translation>
</message>
<message>
<location filename="../statusfield.cpp" line="171"/>
@@ -5237,13 +5580,13 @@ recherche suivant</translation>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="29"/>
<source>Foreign table:</source>
- <translation>Table étrangère:</translation>
+ <translation>Table étrangère :</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="48"/>
<source>SQLite 2 does not support foreign keys officially,
but it&apos;s okay to use them anyway.</source>
- <translation>SQLite 2 ne supporte pas officielement les clés étrangères, mais vous pouvez les utilisées tout de même.</translation>
+ <translation>SQLite 2 ne supporte pas officielement les clefs étrangères, mais vous pouvez les utilisées tout de même.</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="62"/>
@@ -5273,7 +5616,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="183"/>
<source>Named constraint</source>
- <translation>Nommer la contrainte</translation>
+ <translation>Contrainte nommée</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="190"/>
@@ -5337,7 +5680,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="145"/>
<source>Autoincrement</source>
- <translation>Autoincrémentation</translation>
+ <translation>Auto-incrémentation</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="167"/>
@@ -5380,19 +5723,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Name</source>
<comment>table structure columns</comment>
<translation>Nom</translation>
</message>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="303"/>
<source>Data type</source>
<comment>table structure columns</comment>
<translation>Type de données</translation>
</message>
<message>
+ <location filename="../windows/tablestructuremodel.cpp" line="305"/>
+ <source>Primary
+Key</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="307"/>
+ <source>Foreign
+Key</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="309"/>
+ <source>Unique</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished">Unique</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="311"/>
+ <source>Check</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished">Contrôle</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="313"/>
+ <source>Not
+NULL</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../windows/tablestructuremodel.cpp" line="315"/>
+ <source>Collate</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="317"/>
<source>Default value</source>
<comment>table structure columns</comment>
<translation>Valeur par défaut</translation>
@@ -5408,10 +5790,11 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../windows/tablewindow.ui" line="60"/>
<source>Table name:</source>
- <translation>Nom de la table:</translation>
+ <translation>Nom de la table :</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation>Données</translation>
</message>
@@ -5436,409 +5819,444 @@ but it&apos;s okay to use them anyway.</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Exporter une table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
- <translation>Importer les données d&rsquo;une table</translation>
+ <translation>Importer les données d’une table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Peupler une table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Actualiser la structure</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
- <translation>Enregistrer les modification de la structure</translation>
+ <translation>Enregistrer les modifications de la structure</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
- <translation>Annuler les modification de la structure</translation>
+ <translation>Annuler les modifications de la structure</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Ajouter une colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Modifier une colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Supprimer une colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Monter la colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Descendre la colonne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Créer une table identique</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
- <translation>Réinitialisation de l&rsquo;incrémentation</translation>
+ <translation>Réinitialisation de l’incrémentation</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Ajouter une contrainte de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Modifier la contrainte de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Supprimer la contrainte de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Monter la contrainte de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Descendre la contrainte de table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
- <translation>Ajouter une clé primaire à la table</translation>
+ <translation>Ajouter une clef primaire à la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
- <translation>Ajouter une clé étrangère à la table</translation>
+ <translation>Ajouter une clef étrangère à la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
- <translation>Ajouter une contrainte clé unique à la table</translation>
+ <translation>Ajouter une contrainte clef unique à la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation>Ajouter une contrainte de contrôle à la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
- <translation>Actualiser la liste d&rsquo;index</translation>
+ <translation>Actualiser la liste des index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Créer un index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Modifier un index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Supprimer un index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
- <translation>Actualiser la liste d&rsquo;index</translation>
+ <translation>Actualiser la liste des déclencheurs</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Créer un déclencheur</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Modifier un déclencheur</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Supprimer un déclencheur</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
- <translation>Etes-vous certain de vouloir supprimer la colonne : «&nbsp;%1&nbsp;» ?</translation>
+ <translation>Êtes-vous certain de vouloir supprimer la colonne : « %1 » ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation>Des problèmes suivants auront lieu en modifiant la table.
-Voudriez-vous procéder?</translation>
+Voudriez-vous procéder ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="329"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation>Modification de la table</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
- <translation>Impossible de charger les données de table %1. Détails d&rsquo; erreur: %2</translation>
+ <translation>Impossible de charger les données de table %1. Détails d’ erreur : %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
- <translation>Impossible de lancer correctement la table %1. Impossible d&rsquo;ouvrir la fenêtre de table.</translation>
+ <translation>Impossible de lancer correctement la table %1. Impossible d’ouvrir la fenêtre de table.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="635"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="641"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="648"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Could not restore window, because database %1 could not be resolved.</source>
<translation type="vanished">Impossible de restaurer la fenêtre, car la base de données %1 ne peut ëtre résolue.</translation>
</message>
<message>
<source>Could not restore window, because the table %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&rsquo;existe pas dans la base de données %2..</translation>
+ <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n’existe pas dans la base de données %2..</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation>Nouvelle table %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
- <translation>Impossible d&rsquo;enregistrer la structure de table. Message d&rsquo;erreur: %1</translation>
+ <translation>Impossible d’enregistrer la structure de table. Message d’erreur : %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
- <translation>Réinitialisation de l&rsquo;incrémentation</translation>
+ <translation>Réinitialisation de l’incrémentation</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir réinitialiser l&rsquo;autoincrémentation de la table %1?</translation>
+ <translation>Êtes-vous certain de vouloir réinitialiser l’auto-incrémentation de la table %1 ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&rsquo;autoincrémentation de la table «&nbsp;%1&nbsp;»: %2</translation>
+ <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l’auto-incrémentation de la table « %1 » : %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>La valeur de l&rsquo;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
+ <translation type="vanished">La valeur de l’auto-incrémentaion de la table %1 a été réinitialisé avec succès.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation>Nom vide</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation>Un nom vide pour la vue dans SQLITE est admis, mais on ne le recommande pas.
Êtes-vous sûrs que vous voulez créer une vue avec le nom vide ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="955"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation>Impossible de créer une table sans au moins une colonne.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
- <translation>Impossible de créer la table %1, s&rsquo;il n&rsquo;y a pas de clé primaire de définie. Toute fois ne pas contrôler %2 ou définir une clé primaire.</translation>
+ <translation>Impossible de créer la table %1, s’il n’y a pas de clef primaire de définie. Toutefois ne pas contrôler %2 ou définir une clef primaire.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
- <translation>Impossible d&rsquo;utiliser l&rsquo;autoincrémentation pour une clé primaire quand la clause %1 est utilisée. Toute fois ne pas contrôler %2, ou utiliser l&rsquo;autoincrémentation sur une clé primaire.</translation>
+ <translation>Impossible d’utiliser l’auto-incrémentation pour une clef primaire quand la clause %1 est utilisée. Toutefois ne pas contrôler %2, ou utiliser l’auto-incrémentation sur une clef primaire.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
- <translation>Etes-vous sûr de vouloir supprimer la contrainte «&nbsp;%1&nbsp;» ?</translation>
+ <translation>Êtes-vous sûr de vouloir supprimer la contrainte « %1 » ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Supprimer la contrainte</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Export impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
+ <translation>Export impossible, car aucun plugin d’import n’est chargé.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Import impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
+ <translation>Import impossible, car aucun plugin d’import n’est chargé.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
<source>Uncommited changes</source>
- <translation>Modification non enregistrées</translation>
+ <translation type="vanished">Modification non enregistrées</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Il ya des modifications de structure non enregistrées. Vous ne pouvez pas naviguer ou modifier des données jusqu&rsquo;à ce que vous ailliez installer la structure de table.
-Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet de structure ?</translation>
+ <translation type="vanished">Il ya des modifications de structure non enregistrées. Vous ne pouvez pas naviguer ou modifier des données jusqu’à ce que vous ailliez installer la structure de table.
+Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de structure ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
- <translation>Retour à l&rsquo;onglet de structure</translation>
+ <translation>Retour à l’onglet de structure</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
- <translation>Enregistrer les modifications et naviger dans les données.</translation>
+ <translation>Enregistrer les modifications et continuer</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Nom</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Unique</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Colonnes</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
- <translation>Condition partielle d&rsquo;index</translation>
+ <translation>Condition partielle d’index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Nom</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Événement</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Condition</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Details</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure et de données.</translation>
+ <translation type="vanished">La fenêtre de table &quot;%1&quot; n’a pas enregistré les modifications de structure et de données.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistrer les données.</translation>
+ <translation type="vanished">La fenêtre de table &quot;%1&quot; n’a pas enregistrer les données.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure.</translation>
+ <translation type="vanished">La fenêtre de table &quot;%1&quot; n’a pas enregistré les modifications de structure.</translation>
</message>
</context>
<context>
@@ -5851,7 +6269,17 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../dialogs/triggercolumnsdialog.ui" line="47"/>
<source>Triggering columns:</source>
- <translation>Colonnes avec déclencheurs:</translation>
+ <translation>Colonnes avec déclencheurs :</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished">Tout sélectionner</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished">Tout désélectionner</translation>
</message>
</context>
<context>
@@ -5865,12 +6293,12 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../dialogs/triggerdialog.ui" line="30"/>
<source>On table:</source>
- <translation>Sur table:</translation>
+ <translation>Sur table :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="40"/>
<source>Action:</source>
- <translation>Action:</translation>
+ <translation>Action :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="56"/>
@@ -5881,37 +6309,37 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../dialogs/triggerdialog.ui" line="59"/>
<source>Pre-condition:</source>
- <translation>Précondition:</translation>
+ <translation>Précondition :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="66"/>
<source>The scope is still not fully supported by the SQLite database.</source>
- <translation>La portée n&rsquo;est toujours pas entièrement supportée par la base de données SQLITE.</translation>
+ <translation>La portée n’est toujours pas entièrement supportée par la base de données SQLITE.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="73"/>
<source>Trigger name:</source>
- <translation>Nom du déclencheur:</translation>
+ <translation>Nom du déclencheur :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="80"/>
<source>When:</source>
- <translation>Quand:</translation>
+ <translation>Quand :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="87"/>
<source>List of columns for UPDATE OF action.</source>
- <translation>Liste des colonnes pour l&rsquo;action UPDATE OF.</translation>
+ <translation>Liste des colonnes pour l’action UPDATE OF.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="97"/>
<source>Scope:</source>
- <translation>Portée:</translation>
+ <translation>Portée :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="104"/>
<source>Code:</source>
- <translation>Code:</translation>
+ <translation>Code :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="111"/>
@@ -5926,12 +6354,12 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../dialogs/triggerdialog.cpp" line="159"/>
<source>On view:</source>
- <translation>Sur vue:</translation>
+ <translation>Sur vue :</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="183"/>
<source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source>
- <translation>Impossible d&rsquo;exécuter correctement le déclencheur %1. Ouverture invalide du dialogue de déclencheur.</translation>
+ <translation>Impossible d’exécuter correctement le déclencheur %1. Ouverture invalide du dialogue de déclencheur.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="353"/>
@@ -5944,16 +6372,16 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<translation>Saisissez un code de déclencheur valide.</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation>Une erreur survenue lors de l&rsquo;exécution de l&rsquo;intruction SQL: %1</translation>
+ <translation>Une erreur survenue lors de l’exécution de l’intruction SQL : %1</translation>
</message>
</context>
<context>
@@ -5966,7 +6394,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../dialogs/versionconvertsummarydialog.ui" line="20"/>
<source>Following changes to the SQL statements will be made:</source>
- <translation>Des modifications suivantes aux déclarations SQL seront faits:</translation>
+ <translation>Des modifications suivantes aux déclarations SQL seront faits :</translation>
</message>
<message>
<location filename="../dialogs/versionconvertsummarydialog.cpp" line="10"/>
@@ -5989,20 +6417,26 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
<message>
<location filename="../windows/viewwindow.ui" line="60"/>
<source>View name:</source>
- <translation>Nom de la vue:</translation>
+ <translation>Nom de la vue :</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation>Données</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation>Déclencheur</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
@@ -6016,194 +6450,284 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet
</message>
<message>
<source>Could not restore window, because the view %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&rsquo;existe pas dans la base de données %2..</translation>
+ <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n’existe pas dans la base de données %2..</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, because no database or view was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <location filename="../windows/viewwindow.cpp" line="162"/>
+ <location filename="../windows/viewwindow.cpp" line="164"/>
<source>New view %1</source>
<translation>Nouvelle vue %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="283"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Actualisation de la vue</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Enregistrement des changements dans la vue</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Annulation des changements dans la vue</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Generate output column names automatically basing on result columns of the view.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Ajouter une colonne</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Modifier une colonne</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Supprimer une colonne</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Actualisation de la liste des déclencheurs</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
- <translation>Création d&rsquo;un nouveau déclencheur</translation>
+ <translation>Création d’un nouveau déclencheur</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Modification du déclencheur sélectionné</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Suppression du déclencheur sélectionné</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure et de données.</translation>
+ <translation type="vanished">La fenêtre de la vue &quot;%1&quot; n’a pas enregistré les modifications de structure et de données.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de données.</translation>
+ <translation type="vanished">La fenêtre de la vue &quot;%1&quot; n’a pas enregistré les modifications de données.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure.</translation>
+ <translation type="vanished">La fenêtre de la vue &quot;%1&quot; n’a pas enregistré les modifications de structure.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
<source>Could not load data for view %1. Error details: %2</source>
- <translation>Impossible de charher les données de vue %1. Détails d&rsquo; erreur: %2</translation>
+ <translation>Impossible de charher les données de vue %1. Détails d’ erreur : %2</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
<source>Uncommited changes</source>
- <translation>Modifications non enregistrées</translation>
+ <translation type="vanished">Modifications non enregistrées</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Des modifications de structure n&rsquo;ont pa été enregistrées.
- Vous ne pouvez pas naviger ou éditer des données jusqu&rsquo;à ce que vous installliez la structure de vue.
-Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet de structure ?</translation>
+ <translation type="vanished">Des modifications de structure n’ont pa été enregistrées.
+ Vous ne pouvez pas naviguer ou éditer des données jusqu’à ce que vous installliez la structure de vue.
+Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de structure ?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Go back to structure tab</source>
- <translation>Retour à l&rsquo;onlet de structure</translation>
+ <translation>Retour à l’onlet de structure</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Commit modifications and browse data.</source>
<translation>Enregistrement des modifications et navigation des données.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
- <translation>Impossible d&rsquo;enregistrer les modifivations de vue. Message d&rsquo;erreur: %1</translation>
+ <translation>Impossible d’enregistrer les modifications de vue. Message d’erreur : %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="614"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
+ <source>Currently defined columns will be overriden. Do you want to continue?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
+ <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Nom</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
- <translation>A la place de</translation>
+ <translation>À la place de</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Condition</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Détails</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
- <translation>Impossible de lancer correctement la vue %1. Impossible d&rsquo;ouvrir la fenêtre de vue.</translation>
+ <translation>Impossible de lancer correctement la vue %1. Impossible d’ouvrir la fenêtre de vue.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
- <translation>Nom vode</translation>
+ <translation>Nom absent</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation>Un nom vide pour la vue dans SQLITE est admis, mais on ne le recommande pas.
Êtes-vous sûrs que vous voulez créer une vue avec le nom vide ?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="707"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
- <translation>La déclaration SELECT ne peut être analysé. SVP corrigez la requête et réessayez.
-Details: %1</translation>
+ <translation>La déclaration SELECT ne peut être analysé. Veuillez corriger la requête et réessayer.
+Details : %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="715"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
- <translation>La vue ne peut être modifiée a cause d&rsquo;une erreur interne de SQLiteStudio. SVP repportez l&rsquo;erreur!</translation>
+ <translation>La vue ne peut être modifiée a cause d’une erreur interne de SQLiteStudio. SVP repportez l’erreur !</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
+ <source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="741"/>
- <source>The view code could not be parsed properly for execution. This is a SQLiteStudio&rsquo;s bug. Please report it.</source>
- <translation>La vue ne être correctement analysée avant exécution.Cest un bug SQLiteStudion. SVP reporter le.</translation>
+ <source>The view code could not be parsed properly for execution. This is a SQLiteStudio’s bug. Please report it.</source>
+ <translation type="vanished">La vue ne peut être correctement analysée avant exécution. Cest un bug SQLiteStudio. Veuillez le signaler.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation>Des problèmes suivants auront lieu en modifiant la vue.
-Voudriez-vous procéder?</translation>
+Veulez-vous continuer ?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation>Fenêtre vue</translation>
@@ -6214,7 +6738,7 @@ Voudriez-vous procéder?</translation>
<message>
<location filename="../common/widgetcover.cpp" line="234"/>
<source>Interrupt</source>
- <translation>Inperruption</translation>
+ <translation>Interruption</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
index 2803575..aaac2b6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="it_IT">
+<TS version="2.1" language="it_IT">
<context>
<name>AboutDialog</name>
<message>
@@ -429,7 +429,7 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
- <source>Collations editor window has uncommited modifications.</source>
+ <source>Collations editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -903,7 +903,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -993,215 +993,215 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
- <source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
@@ -1277,242 +1277,262 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
- <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
- <source>Uncommited data outline color</source>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
- <source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -2004,7 +2024,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -2019,48 +2039,38 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
- <source>Generate name basing on file path</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
- <source>Generate automatically</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
@@ -2070,28 +2080,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
- <source>Enter a database file path.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
- <source>This database is already on the list under name: %1</source>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
- <source>Select a database type.</source>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
- <source>Auto-generated</source>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
+ <source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
- <source>Type the name</source>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2379,7 +2384,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
@@ -2400,127 +2405,127 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
- <source>Integrity check (%1)</source>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Reset autoincrement</source>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
+ <source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1499"/>
- <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
+ <source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
- <source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
+ <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2784,77 +2789,77 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
- <source>Editor window &quot;%1&quot; has uncommited data.</source>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3311,7 +3316,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
- <source>Functions editor window has uncommited modifications.</source>
+ <source>Functions editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3911,7 +3916,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>MdiWindow</name>
<message>
<location filename="../mdiwindow.cpp" line="199"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4844,7 +4849,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>QuitConfirmDialog</name>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4942,179 +4947,179 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -5146,12 +5151,7 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
- <source>This cell is not editable, because: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -5159,18 +5159,32 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
- <source>Cannot edit this cell. Details: %2</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <source>The row is marked for deletion.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5178,69 +5192,69 @@ find next</source>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
- <source>Uncommited data</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
+ <source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
- <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
+ <source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
- <source>Cannot commit the data for a cell that refers to the already closed database.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
+ <source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
- <source>Could not begin transaction on the database. Details: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
+ <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
- <source>An error occurred while commiting the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
- <source>An error occurred while rolling back the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
- <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
- <source>An error occurred while commiting the data: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5248,117 +5262,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5366,12 +5380,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
- <source>Error while commiting new row: %1</source>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5634,7 +5648,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5659,409 +5673,409 @@ NULL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
- <source>Uncommited changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
-Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
- <source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>TriggerColumnsDialog</name>
@@ -6075,6 +6089,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6166,13 +6190,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -6220,7 +6244,7 @@ Do you want to commit the structure, or do you want to go back to the structure
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -6262,224 +6286,224 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
- <source>Could not load data for view %1. Error details: %2</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
- <source>Uncommited changes</source>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Go back to structure tab</source>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Commit modifications and browse data.</source>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
+ <source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Commit modifications and browse data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm
index dfc8b5e..0adb64a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
index 50dd7ce..ad6aaf3 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pl_PL">
+<TS version="2.1" language="pl_PL">
<context>
<name>AboutDialog</name>
<message>
@@ -431,9 +431,13 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
- <source>Collations editor window has uncommited modifications.</source>
+ <source>Collations editor window has uncommitted modifications.</source>
<translation>Okno edytora zestawień ma niezatwierdzone zmiany.</translation>
</message>
+ <message>
+ <source>Collations editor window has uncommited modifications.</source>
+ <translation type="vanished">Okno edytora zestawień ma niezatwierdzone zmiany.</translation>
+ </message>
</context>
<context>
<name>ColorButton</name>
@@ -906,7 +910,7 @@ ale można go używać.</translation>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>Konfiguracja</translation>
</message>
@@ -971,154 +975,153 @@ ale można go używać.</translation>
<translation>Przeglądanie i edycja danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation>Liczba wierszy danych na stronie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation>&lt;p&gt;Kiedy dane są wczytane do widoku siatki, szerokość kolumn jest automatycznie dostosowywana. Ta wartość ogranicza początkową szerokość tego dostosowywania, ale użytkownik nadal może rozszerzać kolumnę ręcznie poza ten limit.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>Ogranicz początkową szerokość kolumn danych (w pikselach):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation>Wstawianie nowego wiersza w widoku siatki danych.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation>Przed aktualnie wybranym wierszem</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation>Po aktualnie wybranym wierszu.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation>Na końcu widoku siatki danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>Type danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation>Dostępne edytory:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation>Edytory wybrane dla tego typu danych:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>Edycja schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation>Liczba zmian DDL trzymanych w historii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation>Rozmiar historii DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian schematu</translation>
+ <translation type="vanished">Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>Zapytania SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation>Liczba zapytań trzymana w historii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation>Rozmiar historii:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation>&lt;p&gt;Jeśli w oknie edytora SQL jest więcej niż jedno zapytanie, to (jeśli ta opcja jest włączona) tylko jedno zapytanie będzie wykonana - to, które znajduje się pod kursorem pisania. W przeciwnym wypadku wszystkie zapytania będą wykonywane. Zawsze możesz ograniczyć zapytania do wywołania przez zaznaczenie tych zapytań, które chcesz wywołać.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>Wykonuj tylko zapytania będące pod kursorem</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>Aktualizacje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>Sprawdzaj aktualizacje automatycznie przy starcie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>Sesje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Przywróć ostatnią sesję (aktywne okna MDI) po starcie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtruj skróty po nazwie, lub kombinacji klawiszy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation>Akcja</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>Kombinacja klawiszy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Zmiana języka wymaga restartu aplikacji, aby zadziałać.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation>Układ kompaktowy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation>&lt;p&gt;Układ kompaktowy zmniejsza wszystkie marginesy i odstępy na interfejsie do minimum, robiąc więcej miejsca na wyświetlanie danych. Powoduje to, że interfejs jest nieco mniej estetyczny, ale pozwala to na prezentację większej ilości danych naraz.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation>Użyj układu kompaktowego</translation>
</message>
@@ -1194,7 +1197,7 @@ ale można go używać.</translation>
<translation>Wyświetlaj tabele i indeksy systemowe na liście</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation>Okna tabel</translation>
</message>
@@ -1203,12 +1206,12 @@ ale można go używać.</translation>
<translation type="obsolete">Gdy włączone, Okna Tabel będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Otwieraj Okna Tabeli z zakładką danych na początek</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation>Okna Widoków</translation>
</message>
@@ -1217,42 +1220,42 @@ ale można go używać.</translation>
<translation type="obsolete">Gdy włączone, Okna Widoków będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation>Otwieraj Okna Widoku z zakładką danych na początek</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation>Strefy dokowania głównego okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation>Lewa i prawa strefa zajmują rogi</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation>Górna i dolna strefa zajmują rogi</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation>Ukryj wtyczki wbudowane</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation>Aktualny styl:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>Podgląd</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>Włączone</translation>
</message>
@@ -1261,13 +1264,13 @@ ale można go używać.</translation>
<translation type="obsolete">Kolumna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>Wyłączone</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>Język</translation>
</message>
@@ -1297,237 +1300,274 @@ ale można go używać.</translation>
<translation>Próbuj całkowicie pomijać dialog podczas upuszczania pliku bazy na listę</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation>Zachowaj wartość NULL gdy wstawiania jest pusta wartość</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gdy to jest włączone i użytkownik zatrzyma kursor myszy nad komórką w widoku siatki danych (wyniki zapytania, dane tabeli, dane widoku), to pojawi się podpowiedź ze szczegółami odnośnie komórki - zawiera ona szczegóły , jak typ danych kolumny, ograniczenia, ROWID i inne.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation>Pokazuj podpowiedź ze szczegółami o kolumnie i wierszu w widoku siatki danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Kiedy edytowana jest komórka, która miała wartość NULL, a nowa wartość wprowadzona jest pusta, to ta opcja decyduje o tym, czy wartość powinna pozostać NULL (gdy ta opcja jest włączona), czy powinna być nadpisana pustym łańcuchem znaków (gdy ta opcja wyłączona).&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Włącz to, aby wymusić wartość DEFAULT podczas zatwierdzania wartości NULL dla kolumn, które mają zdefiniowaną wartość DEFAULT, nawet jeśli kolumna dopuszcza wartości NULL.&lt;/p&gt;&lt;p&gt;Wyłącz tą opcję aby używać wartości DEFAULT tylko i wyłącznie, gdy wartość NULL jest zatwierdzana dla kolumny z ograniczeniem NOT NULL.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation>Używaj wartości DEFAULT (jeśli zdefiniowana), gdy zatwierdzana jest wartość NULL</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gdy włączone, Okna Tabeli będą się otwierać na zakładce danych, zamiast na zakładce struktury.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gdy włączone, to zakładka &quot;Dane&quot; będzie umieszczona jako pierwsza w każdym Oknie Tabeli, zamiast jako druga.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation>Ustaw zakładkę danych jako pierwszą w Oknie Tabeli</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gdy włączone, Okna Widoku będą się otwierać na zakładce danych, zamiast na zakładce struktury.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gdy włączone, to zakładka &quot;Dane&quot; będzie umieszczona jako pierwsza w każdym Oknie Widoku, zamiast jako druga.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation>Ustaw zakładkę danych jako pierwszą w Oknie Widoku</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation>Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian struktury</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation>Pole Statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation>&lt;p&gt;Kiedy użytkownik ręcznie zamyka panel Statusu, ta opcja zapewnia, że zostanie ono otwarte ponownie, gdy jest wyświetlona nowa wiadomość. Jeśli jest ona wyłączona, to panel Statusu może być otwarte tylko ręcznie z menu &quot;Widok&quot;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation>Zawsze otwieraj panel Statusu, gdy wyświetlona jest nowa wiadomość</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation>Aktywna wtyczka formatera</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation>Czcionka edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation>Czcionka listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation>Czcionka dodatkowych etykiety listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation>Czcionka widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation>Czcionka pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation>Kolory edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation>Tło bieżącej linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Łańcuchy znaków SQL są zamknięte pomiędzy znakami apostrofu.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation>Czcionka łańcucha znaków</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;b&gt;Parametry wiążące to wyrażenia zastępcze dla wartości, które mają być dopiero dostarczone przez użytkownika. Mają one jedną z form: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;:nazwa_parametru&lt;/li&gt;&lt;li&gt;$nazwa_parametru&lt;/li&gt;&lt;li&gt;@nazwa_parametru&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation>Czcionka parametru wiążącego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation>Tło podświetlonych nawiasów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Wartości BLOB są wartościami binarnymi, reprezentowanymi jako liczby heksadecymalne, jak np:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation>Standardowa czcionka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation>Tło obszaru numerów linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation>Czcionka słowa kluczowego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation>Czcionka liczby</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation>Czcionka komentarza</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Poprawne obiekty to nazwy tabel, indekstów, wyzwalaczy i widoków, które istnieją w basie SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation>Czcionka poprawnych obiektów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation>Kolory widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Jakiekolwiek zmiany danych będą otoczone ramką w tym kolorze, dopóki nie zostaną zatwierdzone do bazy.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
+ <translation>Kolor obramowania niezatwierdzonych danych</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;W razie błędu podczas zatwierdzania zmian w danych, komórki sprawiające problem będą obramowane tym kolorem.&lt;/p&gt;</translation>
+ </message>
+ <message>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Jakakolwiek zmiana danych będzie obrysowana tym kolorem, dopóki nie zostanie zatwierdzona do bazy danych.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Jakakolwiek zmiana danych będzie obrysowana tym kolorem, dopóki nie zostanie zatwierdzona do bazy danych.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
- <translation>Kolor obrysu niezatwierdzonych danych</translation>
+ <translation type="vanished">Kolor obrysu niezatwierdzonych danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;W przypadku błędu podczas zatwierdzania zmian danych, komórka będąca przyczyną problemu zostanie obrysowana tym kolorem.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;W przypadku błędu podczas zatwierdzania zmian danych, komórka będąca przyczyną problemu zostanie obrysowana tym kolorem.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation>Kolor obrysu błędu zatwierdzania</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>Kolor czcionki wartości NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>Tło wiersza usuniętego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>Kolory listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Dodatkowe etykiety to te, które mówią o wersji SQLite, liczbie obiektów w głębszych częściach drzewa, itp.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation>Czcionka dodatkowych etykiet</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation>Kolory pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation>Czcionka wiadomości informującej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>Czcionka wiadomości ostrzegającej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation>Czcionka wiadomości błędu</translation>
</message>
@@ -2019,22 +2059,21 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation>Sterownik bazy danych</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation>Generuj automatycznie</translation>
+ <translation type="vanished">Generuj automatycznie</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation>Opcje</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation>Trwała (trzymaj w konfiguracji)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation>Testuj połączenie</translation>
</message>
@@ -2057,7 +2096,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>Plik</translation>
</message>
@@ -2067,16 +2106,15 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation>Nazwa (na liście)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation>Generuj nazwę bazując na ścieżce do pliku</translation>
+ <translation type="vanished">Generuj nazwę bazując na ścieżce do pliku</translation>
</message>
<message>
<source>Permanent</source>
<translation type="obsolete">Trwała</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation>&lt;p&gt;Włącz to, jeśli chcesz aby baza danych była przechowywana w pliku konfiguracji i przywracana za każdym razem, gdy startuje SQLiteStudio.&lt;/p&gt;</translation>
@@ -2086,17 +2124,17 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="obsolete">Testuj połączenie z bazą</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation>Przeglądaj lokalny komputer w poszukiwaniu istniejącej bazy</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>Przeglądaj</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation>Wprowadź unikalną nazwę bazy danych.</translation>
</message>
@@ -2106,33 +2144,36 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation>Ta nazwa jest już w użyciu. Proszę wprowadzić unikalną nazwę.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Automatyczne generowanie nazwy zostało wyłączone, ponieważ nazwa była edytowana ręcznie. Aby przywrócić automatyczne generowanie, proszę wyczyścić pole nazwy.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation>Wprowadź ścieżkę do pliku bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation>Ta baza jest już na liście pod nazwą: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Wybierz typ bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
- <translation>Auto-generowana</translation>
+ <translation type="vanished">Auto-generowana</translation>
</message>
<message>
<source>The name will be auto-generated</source>
<translation type="obsolete">Nazwa będzie generowana automatycznie</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
- <translation>Wprowadź nazwę</translation>
+ <translation type="vanished">Wprowadź nazwę</translation>
</message>
</context>
<context>
@@ -2314,33 +2355,43 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation>Generuj zapytanie dla tabeli</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation>Pozycja o nazwie %1 istnieje już w grupie %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation>Czy napewno chcesz wycofać bazę &apos;%1&apos; z listy?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation>Czy na pewno chcesz wycofać następujące bazy z listy:
%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation>Wycofaj bazę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation>Odkurz (%1)</translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation>Wartość automatycznej inkrementacji dla tabeli &apos;%1&apos; została zresetowana.</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
+ <translation>Czy na pewno chcesz usunąć wszystkie dane z tabel(i): %1?</translation>
+ </message>
+ <message>
<source>Drop the table</source>
<translation type="obsolete">Porzuć tabelę</translation>
</message>
@@ -2468,7 +2519,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation>Wymaż dane tabeli</translation>
</message>
@@ -2484,23 +2535,23 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation>Grupowanie</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation>Utwórz grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation>Nazwa grupy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>Usuń grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation>Czy na pewno chcesz usunąć grupę %1?
@@ -2515,14 +2566,14 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans
<translation type="obsolete">Czy na pewno chcesz usunąć bazę danych &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation>
</message>
@@ -2535,67 +2586,65 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans
<translation type="obsolete">Wykonanie VACUUM przebiegło pomyślnie.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
<translation>Sprawdzanie spójności (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
<translation>Wyzeruj autoinkrementację</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Czy na pewno chcesz wyzerować wartość autoinkrementacji dla tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Wystąpił błąd podczas próby wyzerowania wartości autoinkrementacji dla tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
+ <translation type="vanished">Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>Czy na pewno chcesz usunąć wszystkie dane z tabeli &apos;%1&apos;?</translation>
+ <translation type="vanished">Czy na pewno chcesz usunąć wszystkie dane z tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>Wystąpił błąd podczas próby usunięcia danych z tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Wszystkie dane z tabeli &apos;%1&apos; zostały usunięte.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation>Następujące obiekty zostaną usunięte: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation>Następujące bazy danych zostaną usunięte z listy: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation>Pozostałe obiekty z usuniętej grupy będą przeniesione w miejsce, gdzie dotychczas była ta grupa.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Czy na pewno chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>Usuń obiekty</translation>
</message>
@@ -2868,82 +2917,86 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Utwórz widok z zapytania</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>Poprzednia baza danych</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>Następna baza danych</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation>Pokaż następną kartę</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation>Pokaż poprzednią kartę</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation>Aktywuj wyniki poniżej</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation>Aktywuj edytor SQL powyżej</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation>Aktywna baza danych (%1/%2)</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation>Zapytanie ukończone w %1 sekund(y). Liczba przetworzonych wierszy: %2</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation>Zapytanie ukończone w %1 sekund(y).</translation>
</message>
<message>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation>Okno edytora &quot;%1&quot; ma niezatwierdzone dane.</translation>
+ </message>
+ <message>
<source>Query finished in %2 second(s).</source>
<translation type="obsolete">Zapytanie ukończone w %2 sekund(y).</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation>Wymaż historię zapytań</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation>Czy na pewno chcesz wymazać całą historię zapytań SQL? Tego nie można odwrócić.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation>Nie wybrano bazdy danych w edytorze SQL. Nie można utworzyć widoku dla nieznanej bazy.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>Okno edytora &quot;%1&quot; ma niezatwierdzone dane.</translation>
+ <translation type="vanished">Okno edytora &quot;%1&quot; ma niezatwierdzone dane.</translation>
</message>
</context>
<context>
@@ -3399,8 +3452,12 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
+ <source>Functions editor window has uncommitted modifications.</source>
+ <translation>Okno edytora funkcji ma niezatwierdzone modyfikacje.</translation>
+ </message>
+ <message>
<source>Functions editor window has uncommited modifications.</source>
- <translation>Okno edytora funkcji ma niezatwierdzone zmiany.</translation>
+ <translation type="vanished">Okno edytora funkcji ma niezatwierdzone zmiany.</translation>
</message>
</context>
<context>
@@ -3999,9 +4056,13 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>Niezatwierdzone dane</translation>
+ <translation type="vanished">Niezatwierdzone dane</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation>Niezatwierdzone zmiany</translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -4936,9 +4997,13 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>Niezatwierdzone dane</translation>
+ <translation type="vanished">Niezatwierdzone dane</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation>Niezatwierdzone zmiany</translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
@@ -5038,179 +5103,179 @@ znajdź następny</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Wytnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Wklej</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Usuń</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Zaznacz wszystko</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Cofnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Przywróć</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Dopełnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Formatuj SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Zapisz SQL do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation>Wybierz plik do zapisu SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Wczytaj SQL z pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Usuń linię</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Przesuń blok w dół</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Przesuń blok w górę</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Skopiuj blok w dół</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation>Skopiuj blok w górę</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Znajdź</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Znajdź następny</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Znajdź poprzedni</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Zastąp</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation>Przełącz komentarz</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation>Zapisano zawartość SQL do pliku: %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>Dopełnianie składni może być użyte tylko wtedy, gdy poprawna baza danych jest ustawiona w edytorze SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Zawartość edytora SQL jest ogromna, więc sprawdzanie błędów i podświetlanie istniejących obiektów zostało tymczasowo wyłączone.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>Zapisz do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do zapisu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Skrypty SQL (*.sql);;Wszystkie pliki (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>Otwórz plik</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do odczytu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Osiągnięto koniec dokumentu. Wciśnij szukanie ponownie, aby zrestartować szukanie.</translation>
</message>
@@ -5242,12 +5307,11 @@ znajdź następny</translation>
<translation>Ograniczenie:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
- <translation>Tej komórki nie można edytować, ponieważ: %1</translation>
+ <translation type="vanished">Tej komórki nie można edytować, ponieważ: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Nie można załadować danych dla komórki, która odwołuje się do zamkniętej już bazy danych.</translation>
</message>
@@ -5255,18 +5319,36 @@ znajdź następny</translation>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
- <translation>Nie można edytować tej komórki. Szczegóły: %2</translation>
+ <translation type="vanished">Nie można edytować tej komórki. Szczegóły: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
<source>The row is marked for deletion.</source>
<translation>Wiersz jest zaznaczony do usunięcia.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation>Nie można edytować tej komórki. Szczegóły: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation>Struktura tej tabeli zmieniła się od ostatniego ładowania danych. Przeładuj dane, aby kontynuować.</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
+ <translation>Edytowanie ogromnych ilości danych w podręcznym edytorze nie jest dobrym pomysłem. Może być on powolny i nieporęczny. Lepiej edytować takie duże ilości danych w Widoku Formularza, lub w osobnym oknie edytora (dostępnym w menu prawego kliknięcia myszy).</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation>Klucz obcy dla kolumny %2 ma więcej niż %1 możliwych wartości. To zbyt wiele, by wyświetlić w liście rozwijanej. Musisz edytować wartość ręcznie.</translation>
</message>
@@ -5274,54 +5356,50 @@ znajdź następny</translation>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
- <translation>Niezatwierdzone dane</translation>
+ <translation type="vanished">Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
- <translation>Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation>
+ <translation type="vanished">Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation>Nie można zatwierdzić danych dla komórki, która odnosi się do zamkniętej już bazy danych.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Nie udało się rozpocząć transakcji na bazie danych. Szczegóły: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>Wystąpił błąd podczas zatwierdzania transakcji: %1</translation>
+ <translation type="vanished">Wystąpił błąd podczas zatwierdzania transakcji: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation>Wystąpił błąd podczas wycofywania transakcji: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
<source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation>Próbowano zatwierdzić komórkę, której nie można edytować (a mimo to została zmodyfikowana i czeka na zatwierdzenie)! To jest błąd. Proszę to zgłosić.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>Wystąpił błąd podczas zatwierdzania danych: %1</translation>
+ <translation type="vanished">Wystąpił błąd podczas zatwierdzania danych: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Błąd podczas wykonywania zapytania SQL na bazie &apos;%1&apos;: %2</translation>
</message>
@@ -5330,17 +5408,37 @@ znajdź następny</translation>
<translation type="obsolete">Błąd podczas wykonywania zapytania SQL: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
+ <translation>Niezatwierdzone dane</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
+ <translation>Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
+ <translation>Wystąpił błąd podczas zatwierdzania transakcji: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
+ <translation>Wystąpił błąd podczas zatwierdzania danych: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation>Błąd podczas wczytywania wyników zapytania: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation>Wstaw wiele wierszy</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation>Liczba wierszy do wstawienia:</translation>
</message>
@@ -5348,117 +5446,117 @@ znajdź następny</translation>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation>Idź do powiązanego wiersza w...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation>Kopiuj jako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>Wklej</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation>Wklej jako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>Ustaw wartości NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>Wymaż wartości</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation>Edytuj wartość w edytorze</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>Zatwierdź</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>Wycofaj</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation>Zatwierdź zaznaczone komórki</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation>Wycofaj zaznaczone komórki</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation>Zdefiniuj kolumny po których sortować</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation>Wycofaj własne sortowanie</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>Wstaw wiersz</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>Wstaw wiele wierszy</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>Usuń zaznaczony wiersz</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation>Generuj zapytanie dla wybranych komórek</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation>Nie wybrano elementów do których należy wkleić zawartość schowka.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation>Idź do powiązanego wiersza w tabeli &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation>tabela &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation>Powiązany wiersz (%1)</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>Edytuj wartość</translation>
</message>
@@ -5466,12 +5564,16 @@ znajdź następny</translation>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
+ <translation type="vanished">Błąd podczas zatwierdzania nowego wiersza: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
<translation>Błąd podczas zatwierdzania nowego wiersza: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Błąd podczas usuwania wiersza z tabeli %1: %2</translation>
</message>
@@ -5738,7 +5840,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation>Dane</translation>
</message>
@@ -5763,194 +5865,194 @@ NULL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Eksportuj tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Importuj do tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Zaludnij tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Odśwież strukturę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Zatwierdź zmiany w strukturze</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Wycofaj zmiany w strukturze</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Dodaj kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Edytuj kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Usuń kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Przesuń kolumnę w górę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Przesuń kolumnę w dół</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Utwórz podobną tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Wyzeruj wartość autoinkrementacji</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Edytuj ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Usuń ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Przesuń ograniczenie tabeli w górę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Przesuń ograniczenie tabeli w dół</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Dodaj klucz główny tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Dodaj klucz obcy tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie unikalnych wartości tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie warunkiem tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Odśwież listę indeksów</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Utwórz indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Edytuj indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Usuń indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Odśwież listę wyzwalaczy</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Utwórz wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Edytuj wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Usuń wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Czy na pewno chcesz usunąć kolumnę &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
@@ -5958,42 +6060,84 @@ Would you like to proceed?</source>
Czy chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation>Modyfikacja tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation>Nie udało się załadować danych dla tabeli %1. Szczegóły błędu: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation>Nie udało się przetworzyć poprawnie tabeli %1. Nie można otworzyć okna tabeli.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation>Nie można przywrócić okna %1, ponieważ nie ma bazy danych lub tabeli zachowanej w sesji dla tego okna.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation>Nie można przywrócić okna %1, ponieważ nie ma bazy danych lub tabeli zachowanej w sesji dla tego okna.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation>Nie udało się przywrócić okna &apos;%1&apos;, ponieważ nie udało się ustalić bazy danych %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation>Nie można przywrócić okna &apos;%1&apos;, ponieważ tabela %2 już nie jestnieje w bazie danych %3.</translation>
</message>
<message>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos; (nazwanej wcześniej &apos;%2&apos;).</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation>Wartość automatycznej inkrementacji dla tabeli &apos;%1&apos; została zresetowana.</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation>Niezatwierdzone zmiany</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura tabeli nie zostanie ustalona.
+Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone dane.</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
+ </message>
+ <message>
<source>Could not restore window, because database %1 could not be resolved.</source>
<translation type="obsolete">Nie można przywrócić okna, ponieważ nie znaleziono bazy danych %1.</translation>
</message>
@@ -6002,180 +6146,172 @@ Czy chcesz kontynuować?</translation>
<translation type="obsolete">Nie można przywrócić okna, ponieważ tabela %1 już nie jestnieje w bazie danych %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation>Nowa tabela %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
<source>Commited changes for table &apos;%1&apos; successfly.</source>
- <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos;.</translation>
+ <translation type="vanished">Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
<source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
- <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos; (nazwanej wcześniej &apos;%2&apos;).</translation>
+ <translation type="vanished">Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos; (nazwanej wcześniej &apos;%2&apos;).</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation>Nie udało się zatwierdzić struktury tabeli. Treść błędu: %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation>Wyzeruj autoinkrementację</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Czy na pewno chcesz wyzerować wartość autoinkrementacji dla tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Wystąpił błąd podczas próby wyzerowania wartości autoinkrementacji dla tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
+ <translation type="vanished">Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation>Pusta nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation>Pusta nazwa dla tabeli jest dozwolona w SQLite, ale nie jest zalecana.
Czy na pewno chcesz utworzyć tabelę o pustej nazwie?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation>Nie można utworzyć tabeli bez przynajmniej jednej kolumny.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation>Nie można utworzyć tabeli %1, jeśli nie ma zdefiniowanego klucza głównego. Albo udznacz %2, albo zdefiniuj klucz główny.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation>Nie można użyć autoinkrementacji dla klucza głównego, kiedy klauzula %1 jest użyta. Albo odnacz %2, albo autonkrementację w kluczu głównym.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Czy na pewno chcesz usunąć ograniczenie tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Usuń ograniczenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation>Niezatwierdzone dane</translation>
+ <translation type="vanished">Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura tabeli nie zostanie ustalona.
+ <translation type="vanished">Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura tabeli nie zostanie ustalona.
Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation>Wróć do karty struktury</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation>Zatwierdź modyfikacje i przeglądaj dane.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Wartości unikalne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Kolumny</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation>Warunek indeksu częściowego:</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Zdarzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Warunek</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
+ <translation type="vanished">Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone dane.</translation>
+ <translation type="vanished">Okno tabeli &quot;%1&quot; ma niezatwierdzone dane.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
+ <translation type="vanished">Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
</message>
</context>
<context>
@@ -6190,6 +6326,16 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur
<source>Triggering columns:</source>
<translation>Kolumny wyzwalające:</translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation>Zaznacz wszystko</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation>Odznacz wszystko</translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6281,13 +6427,13 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur
<translation>Wprowadź poprawny kod wyzwalacza.</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation>Błąd</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>Wystąpił błąd podczas wykonywania zapytań SQL:
@@ -6336,7 +6482,7 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation>Dane</translation>
</message>
@@ -6390,220 +6536,250 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur
<translation>Nowy widok %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Odśwież widok</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Zatwierdź zmiany w widoku</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Wycofaj zmiany w widoku</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation>Jawne nazwy kolumn</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation>Generuj automatycznie nazwy kolumn wyjściowych bazując na kolumnach wynikowych widoku.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation>Dodaj kolumnę</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation>Edytuj kolumnę</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation>Usuń kolumnę</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation>Przesuń kolumnę w górę</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation>Przesuń kolumnę w dół</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Odśwież listę wyzwalaczy</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Utwórz nowy wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Edytuj wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Usuń wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone dane.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation>Niezatwierdzone zmiany</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura widoku nie zostanie ustalona.
+Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos; (nazwanej wcześniej &apos;%2&apos;).</translation>
+ </message>
+ <message>
+ <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
+ <translation type="vanished">Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
+ </message>
+ <message>
+ <source>View window &quot;%1&quot; has uncommited data.</source>
+ <translation type="vanished">Okno widoku &quot;%1&quot; ma niezatwierdzone dane.</translation>
+ </message>
+ <message>
+ <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <translation type="vanished">Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation>Nie udało się załadować danych dla widoku %1. Szczegóły błędu: %2</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
- <translation>Niezatwierdzone dane</translation>
+ <translation type="vanished">Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura widoku nie zostanie ustalona.
+ <translation type="vanished">Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura widoku nie zostanie ustalona.
Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Go back to structure tab</source>
<translation>Wróć do karty struktury</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Commit modifications and browse data.</source>
<translation>Zatwierdź modyfikacje i przeglądaj dane.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
<source>Commited changes for view &apos;%1&apos; successfly.</source>
- <translation>Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos;.</translation>
+ <translation type="vanished">Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
<source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
- <translation>Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos; (nazwanego wcześniej &apos;%2&apos;).</translation>
+ <translation type="vanished">Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos; (nazwanego wcześniej &apos;%2&apos;).</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation>Nie udało się zatwierdzić widoku. Treść błędu: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation>Nadpisz kolumny</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation>Aktualnie zdefiniowane kolumny zostaną nadpisane. Czy chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation>Nie udało się ustalić kolumn zwracanych z widoku. Zapytanie jest prawdopodobnie niekompletne lub zawiera błędy.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation>Zamiast</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Warunek</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation>Nie udało się przetworzyć poprawnie widoku %1. Nie można otworzyć okna widoku.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation>Pusta nazwa</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation>Pusta nazwa dla widoku jest dozwolona w SQLite, ale nie jest zalecana.
Czy na pewno chcesz utworzyć widok o pustej nazwie?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation>Zapytanie SELECT nie mogło być poprawnie przeanalizowane. Proszę poprawić zapytanie i spróbować ponownie.
Szczegóły: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation>Widok nie mógł być zmodyfikowany w związku z wewnętrznym błędem SQLiteStudio. Proszę to zgłosić!</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation>Kod widok nie mógł być poprawnie przeanalizowany. To jest błąd SQLiteStudio Proszę to zgłosić!</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
@@ -6611,7 +6787,7 @@ Would you like to proceed?</source>
Czy chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation>Modyfikacja widoku</translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
index 0130532..4d51bcb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<TS version="2.1" language="pt_BR">
<context>
<name>AboutDialog</name>
<message>
@@ -429,7 +429,7 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
- <source>Collations editor window has uncommited modifications.</source>
+ <source>Collations editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -903,7 +903,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -993,215 +993,215 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
- <source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
@@ -1277,242 +1277,262 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
- <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
- <source>Uncommited data outline color</source>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
- <source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -2003,22 +2023,17 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
- <source>Generate automatically</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation type="unfinished"></translation>
</message>
@@ -2029,7 +2044,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -2039,28 +2054,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
- <source>Generate name basing on file path</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
@@ -2070,28 +2080,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
- <source>Enter a database file path.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
- <source>This database is already on the list under name: %1</source>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
- <source>Select a database type.</source>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
- <source>Auto-generated</source>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
+ <source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
- <source>Type the name</source>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2379,7 +2384,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
@@ -2400,127 +2405,127 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
- <source>Integrity check (%1)</source>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Reset autoincrement</source>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
- <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
+ <source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1499"/>
- <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
+ <source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
- <source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
+ <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2784,77 +2789,77 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
- <source>Editor window &quot;%1&quot; has uncommited data.</source>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3311,7 +3316,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
- <source>Functions editor window has uncommited modifications.</source>
+ <source>Functions editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3911,7 +3916,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>MdiWindow</name>
<message>
<location filename="../mdiwindow.cpp" line="199"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4844,7 +4849,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<name>QuitConfirmDialog</name>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
- <source>Uncommited changes</source>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4942,179 +4947,179 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -5146,12 +5151,7 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
- <source>This cell is not editable, because: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -5159,18 +5159,32 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
- <source>Cannot edit this cell. Details: %2</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <source>The row is marked for deletion.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5178,69 +5192,69 @@ find next</source>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
- <source>Uncommited data</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
+ <source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
- <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
+ <source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
- <source>Cannot commit the data for a cell that refers to the already closed database.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
+ <source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
- <source>Could not begin transaction on the database. Details: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
+ <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
- <source>An error occurred while commiting the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
- <source>An error occurred while rolling back the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
- <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
- <source>An error occurred while commiting the data: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5248,117 +5262,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5366,12 +5380,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
- <source>Error while commiting new row: %1</source>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5634,7 +5648,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5659,409 +5673,409 @@ NULL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
- <source>Uncommited changes</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
-Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
- <source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>TriggerColumnsDialog</name>
@@ -6075,6 +6089,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6166,13 +6190,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -6220,7 +6244,7 @@ Do you want to commit the structure, or do you want to go back to the structure
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -6262,224 +6286,224 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
- <source>Could not load data for view %1. Error details: %2</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
- <source>Uncommited changes</source>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Go back to structure tab</source>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Commit modifications and browse data.</source>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
+ <source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Commit modifications and browse data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
index e07a8d5..7a4d27a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
index b2eba15..4b135af 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<TS version="2.1" language="ru_RU">
<context>
<name>AboutDialog</name>
<message>
@@ -431,8 +431,12 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Collations editor window has uncommited modifications.</source>
- <translation>В редакторе сравнений имеются неподтверждённые изменения.</translation>
+ <translation type="vanished">В редакторе сравнений имеются неподтверждённые изменения.</translation>
</message>
</context>
<context>
@@ -680,17 +684,17 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/columndialog.cpp" line="385"/>
<source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
- <translation type="unfinished"></translation>
+ <translation>Указание размера данных недопустимо для столбцов с типом INTEGER PRIMARY KEY.</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="386"/>
<source>Precision cannot be defined without the scale.</source>
- <translation type="unfinished"></translation>
+ <translation>Точность не может быть задана без указания размера данных.</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="407"/>
<source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
- <translation type="unfinished"></translation>
+ <translation>Указание точности недопустимо для столбцов с типом INTEGER PRIMARY KEY.</translation>
</message>
</context>
<context>
@@ -905,7 +909,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>Конфигурация</translation>
</message>
@@ -967,27 +971,27 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="351"/>
<source>Database dialog window</source>
- <translation type="unfinished"></translation>
+ <translation>Диалоговое окно добавления базы данных</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="357"/>
<source>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;По умолчанию при добавлении базы данных она отмечается как &quot;постоянная&quot; (т.е. сохраняется в конфигурацию). При установке данной опции все добавляемые базы данных по умолчанию НЕ будут отмечены как &quot;постоянные&quot;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="360"/>
<source>Do not mark database to be &quot;permanent&quot; by default</source>
- <translation type="unfinished"></translation>
+ <translation>Не отмечать базу данных как &quot;постоянную&quot; по умолчанию</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="370"/>
<source>&lt;p&gt;When this option is enabled, then files dropped from file manager onto database list will be automatically added to the list, bypassing standard database dialog. If for various reasons automatic process fails, then standard dialog will be presented to the user.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;При выборе данной опции все файлы, перетянутые в список баз данных из файлового менеджера, будут автоматически добавлены в список без отображения диалога добавления базы данных. Если по каким-либо причинам автоматическое добавление не получится, пользователю будет показан стандартный диалог добавления базы данных.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="373"/>
<source>Try to bypass dialog completly when dropping database file onto the list</source>
- <translation type="unfinished"></translation>
+ <translation>Не показывать диалог при перетягивании файла базы данных в список</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="418"/>
@@ -995,38 +999,51 @@ but it&apos;s okay to use it.</source>
<translation>Просмотр и редактирование данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation>Количество строк данных на странице:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation>&lt;p&gt;При загрузке даных в табличный вид ширина столбцов автоматически подстраивается. Этот параметр ограничивает начальную ширину для подстройки, при этом пользователь может вручную изменить ширину столбца сверх данного лимита.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>Ограничить начальную ширину столбца данных (в пикселях):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&amp;lt;p&amp;gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&amp;lt;/p&amp;gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="vanished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&amp;lt;p&amp;gt;Если редактируется ячейка, содержащая NULL, и вводится пустая строка в качестве значения, то эта опция определяет, останется ли в качестве значения ячейки NULL (если опция активирована), или значение будет заменено на пустую строку (если эта опция деактивирована).&amp;lt;/p&amp;gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation>Сохранять значение NULL при вводе пустой тсроки</translation>
+ </message>
+ <message>
+ <source>General.KeepNullWhenEmptyValue</source>
+ <translation type="vanished">General.KeepNullWhenEmptyValue</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если данная опция активирована и пользователь наводит указатель мыши на ячейку в любом режиме просмотра данных (результаты запроса, данные таблицы, данные представления), то будет отображена всплывающая подсказка с информацией о ячейке, в том числе информация о типе данных столбца, ограничениях, значение ROWID и прочее.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
- <translation type="unfinished"></translation>
+ <translation>Показывать всплывающую подсказку с информацией о столбце и строке при просмотре данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation>Вставка новой строки в таблице данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation>Перед текущей выделенной строкой</translation>
</message>
@@ -1035,179 +1052,178 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">General.InsertRowPlacement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation>После текущей выделенной строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation>В конец области просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если опция активирована, окна таблиц будут открываться на вкладке данных вместо вкладки со структурой.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если опция активирована, вкладка &quot;Данные&quot; в окнах таблиц будет первой, а не второй по порядку.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
- <translation type="unfinished"></translation>
+ <translation>Помещать вкладку данных в окнах таблиц первой</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если опция активирована, окна представлений будут открываться на вкладке данных вместо вкладки со структурой.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если опция активирована, вкладка &quot;Данные&quot; в окнах представлений будет первой, а не второй по порядку.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
- <translation type="unfinished"></translation>
+ <translation>Помещать вкладку данных в окнах представлений первой</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>Типы данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation>Доступные редакторы:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation>Выбранные редакторы для этого типа данных:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>Редактирование схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation>Количество сохраняемых в истории изменений DDL.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation>Размер истории DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation>
+ <translation type="vanished">Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>SQL запросы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation>Количество сохраняемых в истории запросов.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation>Размер истории:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation>&lt;p&gt;Если в окне редактора SQL введено более одного запроса, то (если данная опция активирована) будет выполнен лишь один запрос - тот, который находится под текстовым курсором. В противном случае будут исполнены все запросы. Вы можете ограничить выполняемые запросы, выделив их перед вызовом выполнения.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>Выполнять только запрос под курсором</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>Обновления</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>Автоматически проверять обновления при запуске</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>Сессия</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Восстановить предыдущую сессию (активные MDI окна) после запуска</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
- <translation type="unfinished"></translation>
+ <translation>Окно статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Если пользователь вручную закрыл окно статуса, включение данной опции гарантирует, что при появлении новых сообщений окно статуса будет автоматически открыто. Если опция отключена, окно статуса может быть заново открыто только пользователем вручную через меню &quot;Вид&quot;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
- <translation type="unfinished"></translation>
+ <translation>Всегда открывать окно статуса при появлении нового сообщения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Фильтруйте горячие клавиши по имени или комбинации клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation>Действие</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>Комбинация клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Для смены языка потребуется перезапустить приложение.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation>Компактный режим</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation>&lt;p&gt;В компактном режиме все поля и отступы в интерфейсе минимизированы для отображения большего количества данных. Интерфейс станет чуть менее эстетичным, однако это позволит уместить больше данных на экране.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation>Включить компактный режим</translation>
</message>
@@ -1287,7 +1303,22 @@ but it&apos;s okay to use it.</source>
<translation>Отображать в списке системные таблицы и индексы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation>Окна таблиц</translation>
</message>
@@ -1296,12 +1327,12 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Если опция активирована, окно таблицы будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Открывать окна таблиц на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation>Окна представлений</translation>
</message>
@@ -1310,227 +1341,244 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Если опция активирована, окно представления будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation>Открывать окна представлений на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation>Области прикрепления вокруг главного окна</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation>Углы занимают правая и левая области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation>Углы занимают верхняя и нижняя области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation>Скрыть встроенные модули</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation>Текущий стиль:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>Предпросмотр</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>Активно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>Неактивно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation>Активный модуль форматирования</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation>Шрифт редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation>Шрифт списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation>Шрифт дополнительных меток в списке баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation>Шрифт просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation>Шрифт окна статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation>Цвета редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation>Фон текущей строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Строки SQL обрамляются в одинарные кавычки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation>Цвет строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Подстановочные параметры предназначены для значений, которые будут в дальнейшем указаны пользователем. Они определяются одним из следующих способов:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:имя_параметра&lt;/li&gt;&lt;li&gt;$имя_параметра&lt;/li&gt;&lt;li&gt;@имя_параметра&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation>Цвет подстановочных параметров</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation>Фон подсвечиваемых скобок</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Данные типа BLOB — это бинарные данные, представляемые в виде шестнадцатеричных чисел, например:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation>Цвет данных типа BLOB</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation>Стандартный цвет</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation>Фон области нумерации строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation>Цвет ключевого слова</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation>Цвет числа</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation>Цвет комментария</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Распознаваемыми объектами являются имена талиц, индексов, триггеров и представлений, существующих в базе данных SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation>Цвет распознанных объектов</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation>Цвета в окне просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Все изменения данных будут обрамлены этим цветом, пока не будут записаны в базу данных.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Все изменения данных будут обрамлены этим цветом, пока не будут записаны в базу данных.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
- <translation>Цвет обрамления неподтверждённых изменений</translation>
+ <translation type="vanished">Цвет обрамления неподтверждённых изменений</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation>Цвет обрамления ошибочных ячеек</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>Цвет значений NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>Фон удалённых строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>Цвета списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Дополнительные метки содержат информацию о версии SQLite, о количестве объектов в глубине дерева и т.д.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation>Цвет дополнительных меток</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation>Цвета в окне Статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation>Цвет информационного сообщения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>Цвет предупреждения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation>Цвет ошибки</translation>
</message>
@@ -2022,22 +2070,21 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Драйвер базы данных</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation>Сгенерировать автоматически</translation>
+ <translation type="vanished">Сгенерировать автоматически</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation>Опции</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation>Постоянная (сохранить базу в конфигурационном файле)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation>Тест соединения</translation>
</message>
@@ -2060,7 +2107,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>Файл</translation>
</message>
@@ -2070,16 +2117,15 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Имя (в списке)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation>Генерировать имя на основе пути к файлу</translation>
+ <translation type="vanished">Генерировать имя на основе пути к файлу</translation>
</message>
<message>
<source>Permanent</source>
<translation type="obsolete">Запомнить</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation>&lt;p&gt;Активируйте эту опцию для сохранения базы данных в конфигурационном файле и добавления её в список при каждом запуске SQLiteStudio.&lt;/p&gt;</translation>
@@ -2089,17 +2135,17 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="obsolete">Тест соединения с базой данных</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation>Указать существующий файл базы данных на локальном компьютере</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation>Введите уникальное имя базы данных.</translation>
</message>
@@ -2109,33 +2155,36 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Данное имя уже используется. Пожалуйста, укажите уникальное имя.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Автоматическая генерация имени отключена, так как имя было задано вручную. Для автоматической генерации необходимо удалить содержимое из поля имени.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation>Введите путь к базе данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation>Указанная база данных уже находится в списке под именем %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Выберите тип базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
- <translation>Автоматически сгенерировано</translation>
+ <translation type="vanished">Автоматически сгенерировано</translation>
</message>
<message>
<source>The name will be auto-generated</source>
<translation type="obsolete">Имя будет сгенерировано автоматически</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
- <translation>Введите имя</translation>
+ <translation type="vanished">Введите имя</translation>
</message>
</context>
<context>
@@ -2189,23 +2238,24 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="282"/>
<source>Delete objects</source>
- <translation type="unfinished">Удалить объекты</translation>
+ <translation>Удалить объекты</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="283"/>
<source>Are you sure you want to delete following objects:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Вы действительно хотите удалить следующие объекты:
+%1</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="290"/>
<source>Cannot start transaction. Details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно начать транзакцию. Подробности: %1</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="327"/>
<source>Cannot commit transaction. Details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно подтвердить транзакцию. Подробности: %1</translation>
</message>
</context>
<context>
@@ -2422,7 +2472,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation>Удалить данные из таблицы</translation>
</message>
@@ -2440,54 +2490,64 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="339"/>
<source>Generate query for table</source>
- <translation type="unfinished"></translation>
+ <translation>Сгенерировать запрос для этой таблицы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation>Создать группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation>Имя группы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation>Элемент с именем %1 уже входит в группу %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>Удалить группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation>Вы действительно хотите удалить группу %1? Все объекты из данной группы будут перемещены в родительскую группу.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
- <translation type="unfinished"></translation>
+ <translation>Вы действительно хотите удалить базу данных &apos;%1&apos; из списка?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Вы действительно хотите удалить следующие базы данных из списка: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
- <translation type="unfinished"></translation>
+ <translation>Удалить базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
+ <translation>Операция VACUUM (%1)</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2499,14 +2559,14 @@ All objects from this group will be moved to parent group.</source>
<translation type="obsolete">Вы действительно хотите удалить базу данных &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
@@ -2519,67 +2579,65 @@ All objects from this group will be moved to parent group.</source>
<translation type="obsolete">Выполнение команды VACUUM успешно завершено.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
<translation>Проверка целостности (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
<translation>Сброс счётчика автоинкремента</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Вы действительно хотите сбросить счётчик автоинкремента у таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>При попытке сброса счётчика автоинкремента у таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
+ <translation type="vanished">Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>Вы действительно хотите удалить все данные из таблицы &apos;%1&apos;?</translation>
+ <translation type="vanished">Вы действительно хотите удалить все данные из таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>При попытке удаления данных из таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Из таблицы &apos;%1&apos; были удалены все данные.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation>Будут удалены следующие объекты: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation>Из списка будут удалены следующие базы данных: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation>Оставшиеся после удаления группы объекты будут перемещены туда, где ранее располагалась группа.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%11&lt;br&gt;&lt;br&gt;Вы действительно хотите продолжить?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>Удалить объекты</translation>
</message>
@@ -2705,7 +2763,7 @@ All objects from this group will be moved to parent group.</source>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
<source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно автоматически добавить перетянутый файл базы данных &apos;%1&apos;. Необходима ручная настройка.</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
@@ -2852,78 +2910,82 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Создать представление из запроса</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>Предыдущая база данных</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>Следующая база данных</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation>Открыть следующую вкладку</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation>Открыть предыдущую вкладку</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation>Фокус на результатах внизу</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation>Фокус на редакторе SQL сверху</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation>Текущая база данных (%1/%2)</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation>Запрос выполнен за %1 секунд. Затронуто строк: %2</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation>Запрос выполнен за %1 секунд.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation>Очистка истории запросов</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation>Вы действительно хотите удалить всю историю выполнения SQL запросов? Операцию невозможно отменить.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation>В редакторе SQL не выбрана база данных. Невозможно создать представление в неизвестной базе данных.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>В окне редактора &quot;%1&quot; имеются неподтверждённые данные.</translation>
+ <translation type="vanished">В окне редактора &quot;%1&quot; имеются неподтверждённые данные.</translation>
</message>
</context>
<context>
@@ -3379,8 +3441,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
+ <source>Functions editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Functions editor window has uncommited modifications.</source>
- <translation>В окне редактора функций имеются неподтверждённые изменения.</translation>
+ <translation type="vanished">В окне редактора функций имеются неподтверждённые изменения.</translation>
</message>
</context>
<context>
@@ -3532,27 +3598,27 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/indexdialog.ui" line="98"/>
<source>Delete selected indexed expression</source>
- <translation type="unfinished"></translation>
+ <translation>Удалить выбранное индексируемое выражение</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="108"/>
<source>Moves selected index column up in the order, making it more significant in the index.</source>
- <translation type="unfinished"></translation>
+ <translation>Переместить индексируемый столбец выше по списку, увеличивая его значимость в индексе.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="118"/>
<source>Moves selected index column down in the order, making it less significant in the index.</source>
- <translation type="unfinished"></translation>
+ <translation>Переместить индексируемый столбец ниже по списку, снижая его значимость в индексе.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="149"/>
<source>Edit selected indexed expression</source>
- <translation type="unfinished"></translation>
+ <translation>Редактировать выбранное индексируемое выражение</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="169"/>
<source>Add indexed expression</source>
- <translation type="unfinished"></translation>
+ <translation>Добавить индексируемое выражение</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="180"/>
@@ -3572,7 +3638,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/indexdialog.cpp" line="206"/>
<source>Unique index cannot have indexed expressions. Either remove expressions from list below, or uncheck this option.</source>
- <translation type="unfinished"></translation>
+ <translation>Уникальный индекс не может содержать индексируемые выражения. Либо удалите выражения из списка ниже, либо отключите эту опцию.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="207"/>
@@ -3626,42 +3692,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/indexexprcolumndialog.ui" line="14"/>
<source>Indexed expression</source>
- <translation type="unfinished"></translation>
+ <translation>Индексируемое выражение</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.ui" line="20"/>
<source>Expression to index</source>
- <translation type="unfinished"></translation>
+ <translation>Выражение для добавления в индекс</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="60"/>
<source>This expression is already indexed by the index.</source>
- <translation type="unfinished"></translation>
+ <translation>Такое выражение уже присутствует в индексе.</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="66"/>
<source>Column should be indexed directly, not by expression. Either extend this expression to contain something more than just column name, or abort and select this column in index dialog directly.</source>
- <translation type="unfinished"></translation>
+ <translation>Столбец необходимо индексировать напрямую, а не выражением. Либо добавьте в выражение что-либо кроме имени столбца, либо отмените изменения и отметьте столбец непосредственно в окне индекса.</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="76"/>
<source>Column &apos;%1&apos; does not belong to the table covered by this index. Indexed expressions can refer only to columns from the indexed table.</source>
- <translation type="unfinished"></translation>
+ <translation>Столбец &apos;%1&apos; не принадлежит к индексируемой таблице. Индексируемые выражения могут ссылаться только на столбцы индексируемой таблицы.</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="84"/>
<source>It&apos;s forbidden to use &apos;SELECT&apos; statements in indexed expressions.</source>
- <translation type="unfinished"></translation>
+ <translation>Запрещено использовать конструкции SELECT в индексируемых выражениях.</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="105"/>
<source>Enter an indexed expression.</source>
- <translation type="unfinished"></translation>
+ <translation>Введите индексируемое выражение.</translation>
</message>
<message>
<location filename="../dialogs/indexexprcolumndialog.cpp" line="119"/>
<source>Invalid expression.</source>
- <translation type="unfinished"></translation>
+ <translation>Некорректное выражение.</translation>
</message>
</context>
<context>
@@ -3979,9 +4045,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>Неподтверждённые изменения</translation>
+ <translation type="vanished">Неподтверждённые изменения</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -4720,7 +4790,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../sqleditor.h" line="43"/>
<source>Toggle comment</source>
- <translation type="unfinished"></translation>
+ <translation>Комментировать/раскомментировать</translation>
</message>
<message>
<location filename="../uiutils.cpp" line="32"/>
@@ -4912,9 +4982,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>Неподтверждённые изменения</translation>
+ <translation type="vanished">Неподтверждённые изменения</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
@@ -5013,179 +5087,179 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Вырезать</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Вставить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Удалить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Выделить всё</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Отменить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Повторить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Завершить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Форматировать SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Сохранить SQL в файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation>Выбрать файл для сохранения SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Загрузить SQL из файла</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Удалить строчку</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Переместить блок вниз</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Переместить блок вверх</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Копировать блок вниз</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation>Копировать блок вверх</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Найти</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Найти далее</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Найти предыдущее</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Заменить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Комментировать/раскомментировать</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation>SQL-код сохранён в файле %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>Дополнение синтаксиса может быть использовано только после назначения корректной базы данных редактору SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Размер содержимого редактора SQL слишком велико, поэтому обнаружение ошибок и подсветка существующих объектов временно отключена.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>Сохранить в файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для записи: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Скрипты SQL (*.sql);;Все файлы (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>Открыть файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для чтения: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Достигнут конец документа. Нажмите Найти снова для перезапуска поиска.</translation>
</message>
@@ -5217,12 +5291,11 @@ find next</source>
<translation>Ограничения:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
- <translation>Эта ячейка нередактируема, причина: %1</translation>
+ <translation type="vanished">Эта ячейка нередактируема, причина: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Невозможно загрузить данные ячейки, которая ссылается на уже закрытую базу данных.</translation>
</message>
@@ -5230,88 +5303,122 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
- <translation>Невозможно редактировать данную ячейку. Подробности: %2</translation>
+ <translation type="vanished">Невозможно редактировать данную ячейку. Подробности: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
<source>The row is marked for deletion.</source>
<translation>Строка помечена для удаления.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
- <source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished">Невозможно редактировать данную ячейку. Подробности: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
+ <translation>Внешний ключ для столбца %2 имеет более чем %1 возможных значений. Это слишком много для отображения в выпадающем списке. Вам необходимо ввести значение вручную.</translation>
+ </message>
</context>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Одновременно может быть выполнен только один запрос.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
- <translation>Неподтверждённые данные</translation>
+ <translation type="vanished">Неподтверждённые данные</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
- <translation>Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation>
+ <translation type="vanished">Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation>Невозможно подтвердить данные для ячейки, которая ссылается на уже закрытую базу данных.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Невозможно начать транзакцию в базе данных. Подробности: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>При завершении транзакции возникла ошибка: %1</translation>
+ <translation type="vanished">При завершении транзакции возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation>При отмене транзакции возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
<source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation>Попытка подтверждения данных для нередактируемой ячейки (которая тем не менее была изменена и ожидает подтверждения). Это программная ошибка. Пожалуйста, отправьте о ней отчёт.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>При подтверждении данных произошла ошибка: %1</translation>
+ <translation type="vanished">При подтверждении данных произошла ошибка: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Ошибка при выполнении SQL запроса к базе данных &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation>Ошибка при загрузке результатов запроса: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation>Вставить несколько строк</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation>Количество вставляемых строк:</translation>
</message>
@@ -5319,117 +5426,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
- <translation type="unfinished"></translation>
+ <translation>Перейти к связанной строке в...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation>Копировать как...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>Вставить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation>Вставить как...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>Установить значения на NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>Стереть содержимое</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation>Править содержимое в редакторе</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>Подтвердить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>Откатить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation>Подтвердить выбранные ячейки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation>Откатить выбранные ячейки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation>Определить столбцы для сортировки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation>Сбросить указанную сортировку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>Вставить строку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>Вставить несколько строк</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>Удалить выбранную строку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
- <translation type="unfinished"></translation>
+ <translation>Сгенерировать запрос для выбранных ячеек</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation>Не выбраны элементы для вставки в них содержимого буфера обмена.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>Перейти к связанной строке в таблице &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>таблица &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Связанная строка (%1)</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>Править содержимое</translation>
</message>
@@ -5437,12 +5544,16 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
- <translation>Ошибка при подтверждении новой строки: %1</translation>
+ <translation type="vanished">Ошибка при подтверждении новой строки: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Ошибка при удалении строки из таблицы %1: %2</translation>
</message>
@@ -5651,39 +5762,42 @@ but it&apos;s okay to use them anyway.</source>
<source>Primary
Key</source>
<comment>table structure columns</comment>
- <translation type="unfinished"></translation>
+ <translation>Первичный
+ключ</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="307"/>
<source>Foreign
Key</source>
<comment>table structure columns</comment>
- <translation type="unfinished"></translation>
+ <translation>Внешний
+ключ</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="309"/>
<source>Unique</source>
<comment>table structure columns</comment>
- <translation type="unfinished">Уникальность</translation>
+ <translation>Уникальность</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="311"/>
<source>Check</source>
<comment>table structure columns</comment>
- <translation type="unfinished">Проверка</translation>
+ <translation>Проверка</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="313"/>
<source>Not
NULL</source>
<comment>table structure columns</comment>
- <translation type="unfinished"></translation>
+ <translation>Не
+NULL</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="315"/>
<source>Collate</source>
<comment>table structure columns</comment>
- <translation type="unfinished">Сравнение</translation>
+ <translation>Сравнение</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="317"/>
@@ -5706,7 +5820,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation>Данные</translation>
</message>
@@ -5731,194 +5845,194 @@ NULL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Экспортировать таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Импортировать данные в таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Заполнить таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Обновить структуру</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Подтвердить изменения структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Откатить изменения структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Добавить столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Редактировать столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Удалить столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Переместить столбец вверх</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Переместить столбец вниз</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Создать подобную таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Сбросить счётчик автоинкремента</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Добавить ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Редактировать ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Удалить ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Переместить ограничение на таблицу вверх</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Переместить ограничение на таблицу вниз</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Добавить первичный ключ таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Добавить внешний ключ таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Добавить табличное ограничение на уникальность</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation>Добавить проверочное ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Обновить список индексов</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Создать индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Редактировать индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Удалить индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Обновить список триггеров</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Создать триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Редактировать триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Удалить триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Вы действительно хотите удалить столбец &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
@@ -5926,42 +6040,83 @@ Would you like to proceed?</source>
Вы хотите продолжить?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation>Изменение таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation>Невозможно загрузить данные таблицы %1. Подробности ошибки: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation>Не удалось корректно обработать таблицу %1. Невозможно открыть окно таблицы.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation>Невозможно восстановить окно %1, так как в сессии для этого окна не была сохранена база данных или таблица.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как в сессии для этого окна не была сохранена база данных или таблица.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как невозможно определить базу данных %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как таблица %2 не существует в базе данных %3.</translation>
</message>
<message>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Could not restore window, because database %1 could not be resolved.</source>
<translation type="obsolete">Невозможно восстановить окно, так как невозможно определить базу данных %1</translation>
</message>
@@ -5970,180 +6125,172 @@ Would you like to proceed?</source>
<translation type="obsolete">Невозможно восстановить окно, так как таблица %1 не существует в базе данных %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation>Новая таблица %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
<source>Commited changes for table &apos;%1&apos; successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Изменения в таблицу &apos;%1&apos; внесены успешно.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
<source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Изменения в таблицу &apos;%1&apos; (предыдущее название &apos;%2&apos;) внесены успешно.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation>Невозможно подтвердить структуру таблицы. Сообщение об ошибке: %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation>Сброс счётчика автоинкремента</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Вы действительно хотите сбросить счётчик автоинкремента у таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>При попытке сброса счётчика автоинкремента у таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
+ <translation type="vanished">Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation>Пустое имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation>SQLite позволяет таблице иметь пустое имя, хотя это не рекомендуется.
Вы действительно хотите создать таблицу с пустым именем?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation>Невозможно создать таблицу без хотя бы одного столбца.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation>Невозможно создать таблицу %1, если не определён первичный ключ. Отключите %2, либо определите первичный ключ.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation>Невозможно использовать автоинкремент первичного ключа при использовании оператора %1. Отключите либо %2, либо автоинкремент первичного ключа.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Вы действительно хотите удалить ограничение на таблицу &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Удалить ограничение</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation>Неподтверждённые изменения</translation>
+ <translation type="vanished">Неподтверждённые изменения</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура таблицы не подтверждена.
+ <translation type="vanished">Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура таблицы не подтверждена.
Подтвердить структуру таблицы или вернуться на вкладку структуры?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation>Вернуться на вкладку структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation>Подтвердить изменения и перейти к данным.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Уникальность</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Столбцы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation>Условие для частичного индекса</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Событие</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Условие</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Подробности</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
+ <translation type="vanished">В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
+ <translation type="vanished">В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
+ <translation type="vanished">В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
</message>
</context>
<context>
@@ -6158,6 +6305,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation>Столбцы, вызывающие триггер:</translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished">Снять выделение</translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6249,13 +6406,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation>Введите корректный код триггера.</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation>Ошибка</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>При выполнении конструкций SQL произошла ошибка:
@@ -6300,11 +6457,11 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../windows/viewwindow.ui" line="113"/>
<source>Output column names</source>
- <translation type="unfinished"></translation>
+ <translation>Отображаемые имена столбцов</translation>
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation>Данные</translation>
</message>
@@ -6358,220 +6515,249 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation>Новое представление %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Обновить представление</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Подтвердить изменения представления</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Откатить изменения представления</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
- <translation type="unfinished"></translation>
+ <translation>Явные имена столбцов</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
- <translation type="unfinished"></translation>
+ <translation>Сгенерировать отображаемые имена столбцов на основе результирующих столбцов представления.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
- <translation type="unfinished">Добавить столбец</translation>
+ <translation>Добавить столбец</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
- <translation type="unfinished">Редактировать столбец</translation>
+ <translation>Редактировать столбец</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
- <translation type="unfinished">Удалить столбец</translation>
+ <translation>Удалить столбец</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
- <translation type="unfinished">Переместить столбец вверх</translation>
+ <translation>Переместить столбец вверх</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
- <translation type="unfinished">Переместить столбец вниз</translation>
+ <translation>Переместить столбец вниз</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Обновить список триггеров</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Создать новый триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Редактировать выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Удалить выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
+ <translation type="vanished">В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
- <translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
+ <translation type="vanished">В окне представления &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
+ <translation type="vanished">В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation>Невозможно загрузить данные представления %1. Подробности ошибки: %2</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
- <translation>Неподтверждённые изменения</translation>
+ <translation type="vanished">Неподтверждённые изменения</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура представления не подтверждена.
+ <translation type="vanished">Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура представления не подтверждена.
Подтвердить структуру представления или вернуться на вкладку структуры?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Go back to structure tab</source>
<translation>Вернуться на вкладку структуры</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Commit modifications and browse data.</source>
<translation>Подтвердить изменения и перейти к данным.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
<source>Commited changes for view &apos;%1&apos; successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Изменения в представление &apos;%1&apos; внесены успешно.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
<source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">Изменения в представление &apos;%1&apos; (предыдущее название &apos;%2&apos;) внесены успешно.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation>Невозможно подтвердить изменения представления. Сообщение об ошибке: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
- <translation type="unfinished"></translation>
+ <translation>Перезапись столбцов</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
- <translation type="unfinished"></translation>
+ <translation>Заданные столбцы будут перезаписаны. Вы хотите продолжить?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
- <translation type="unfinished"></translation>
+ <translation>Невозможно определить столбцы, возвращаемые представлением. Вероятно запрос неполон или содержит ошибки.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation>Вместо</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Условие</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Подробности</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation>Не удалось корректно обработать представление %1. Невозможно открыть окно представления.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation>Пустое имя</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation>SQLite позволяет представлению иметь пустое имя, хотя это не рекомендуется.
Вы действительно хотите создать представление с пустым именем?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation>Невозможно проанализировать структуру конструкции SELECT. Пожалуйста, исправьте запрос и повторите попытку.
Подробности: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation>Невозможно изменить представление из-за внутренней ошибки SQLiteStudio. Пожалуйста, сообщите о ней!</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation>Невозможно корректно проанализировать структуру представления для выполнения. Это ошибка SQLiteStudio. Пожалуйста, сообщите о ней.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
@@ -6579,7 +6765,7 @@ Would you like to proceed?</source>
Вы хотите продолжить?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation>Изменение представления</translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm
index ac0f46e..6490cf2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
index e6625c1..8703dc7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_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>AboutDialog</name>
<message>
@@ -431,8 +431,12 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Collations editor window has uncommited modifications.</source>
- <translation>Okno editora porovnávaní obsahuje nepotvrdené zmeny.</translation>
+ <translation type="vanished">Okno editora porovnávaní obsahuje nepotvrdené zmeny.</translation>
</message>
</context>
<context>
@@ -509,12 +513,12 @@
<message>
<location filename="../dialogs/columndialog.ui" line="35"/>
<source>Scale</source>
- <translation type="unfinished"></translation>
+ <translation>Rozsah</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="55"/>
<source>Precision</source>
- <translation type="unfinished"></translation>
+ <translation>Presnosť</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="62"/>
@@ -905,7 +909,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>Konfigurácia</translation>
</message>
@@ -967,17 +971,17 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="351"/>
<source>Database dialog window</source>
- <translation type="unfinished"></translation>
+ <translation>Databázové dialógové okno</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="357"/>
<source>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Označením tejto možnosti sa vypne voľba &quot;Zapamätať si databázu&quot; v okne pridávania novej databázy&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="360"/>
<source>Do not mark database to be &quot;permanent&quot; by default</source>
- <translation type="unfinished"></translation>
+ <translation>Nepamätať si databázu</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="370"/>
@@ -995,215 +999,234 @@ but it&apos;s okay to use it.</source>
<translation>Prezeranie a úprava dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation>Počet data riadkov na stranu:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>Datové typy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation>Dostupné editory:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>Úprava schémy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation>Počet DDL zmien uchovávaných v histórii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation>Veľkosť DDL histórie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Nezobrazovať náhľad DDL pri potvrdzovaní zmien v schéme</translation>
+ <translation type="vanished">Nezobrazovať náhľad DDL pri potvrdzovaní zmien v schéme</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>SQL dotazy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation>Počet dotazov uchovávaných v histórii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation>Veľkosť SQL histórie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation>&lt;p&gt;Ak je v SQL editore viacej ako jeden dotaz, potom(ak je táto voľba zapnutá) bude vykonaný iba jeden dotaz - ten, na ktorom je kurzor. Ináč budú vykonané všetky dotazy. Vždy si viete vybrať ktoré dotazy budú vykonané a to ich výberom\označením.&lt;/p&gt; </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>Vykonať len dotaz, na ktorom stojí kurzor</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>Aktualizácie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>Kontrolovať aktualizácie pri štarte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>Sedenie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Obnoviť posledné sedenie (aktívne okná) pri štarte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtrovať podľa názvu alebo klávesovej skratky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation>Akcia</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>Klávesová skratka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>Jazyk</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Je potrebné reštartovať aplikáciu aby sa zmena jazyka prejavila.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
@@ -1279,7 +1302,7 @@ but it&apos;s okay to use it.</source>
<translation>Zobraziť systémové tabuľky a indexy v zozname</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation>Okná tabuľky</translation>
</message>
@@ -1288,12 +1311,12 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie štruktúra tabuľky.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Zobraziť dáta po otvorení tabuľky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation>Okná pohľadov</translation>
</message>
@@ -1302,227 +1325,244 @@ but it&apos;s okay to use it.</source>
<translation type="obsolete">Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie SQL dotaz.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation>Zobraziť dáta po otvorení pohľadu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation>Nezobrazovať interné pluginy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation>Aktuálny štýl:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>Náhľad</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>Zapnutý</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>Vypnutý</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation>Aktívny formátovací plugin</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation>Písmo SQL editora</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation>Font zoznamu databáz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation>Font doplnkového popisku</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation>Font dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation>Font status okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation>Farby SQL editora</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation>Farba BLOB hodnoty</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation>Farby dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Všetky zmeny dát budú ohraničené touto farbou, dokiaľ nebudú potvrdené.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;Všetky zmeny dát budú ohraničené touto farbou, dokiaľ nebudú potvrdené.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
- <translation>Farba rámčeka nepotvrdených dát</translation>
+ <translation type="vanished">Farba rámčeka nepotvrdených dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;V prípade chyby pri potvrdzovaní zmien dát, budú problematické bunky ohraničené touto farbou.&lt;/p&gt;</translation>
+ <translation type="vanished">&lt;p&gt;V prípade chyby pri potvrdzovaní zmien dát, budú problematické bunky ohraničené touto farbou.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation>Farba rámčeka s chybou potvrdenia dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>Farba NULL hodnoty</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>Pozadie vymazaného riadka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>Farby zoznamu databáz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation>Farba doplnkového popisku</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation>Farby status okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation>Farba informačnej správy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>Farba upozornenia</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation>Farba chybovej správy</translation>
</message>
@@ -2014,22 +2054,21 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<translation>Databázový ovládač</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation>Generovať automaticky</translation>
+ <translation type="vanished">Generovať automaticky</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation>Voľby</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation>Zapamätať si databázu</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation>Test spojenia</translation>
</message>
@@ -2052,7 +2091,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>Súbor</translation>
</message>
@@ -2062,16 +2101,15 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<translation>Názov (v zozname)</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation>Generovať názov na základe cesty k súboru</translation>
+ <translation type="vanished">Generovať názov na základe cesty k súboru</translation>
</message>
<message>
<source>Permanent</source>
<translation type="obsolete">Uložiť natrvalo</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation>&lt;p&gt;Databáza sa uloží do konfiguračného súboru a bude obnovená pri každom spustení SQLiteStudia.&lt;/p&gt;</translation>
@@ -2081,17 +2119,17 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<translation type="obsolete">Otestovať spojenie s databázou</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation>Hľadať databázový súbor na lokálnom počítači</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>Prehľadávať</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation>Zadajte názov databázy.</translation>
</message>
@@ -2101,33 +2139,36 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<translation>Tento názov už existuje. Prosím zadajte iný názov.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation>Zadajte cestu k databázovému súboru.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation>Táto databáza už je v zozname pod názvom: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Vyberte typ databázy.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
- <translation>Automaticky vygenerovaný</translation>
+ <translation type="vanished">Automaticky vygenerovaný</translation>
</message>
<message>
<source>The name will be auto-generated</source>
<translation type="obsolete">Názov bude vygenerovaný automaticky</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
- <translation>Zadajte meno</translation>
+ <translation type="vanished">Zadajte meno</translation>
</message>
</context>
<context>
@@ -2415,7 +2456,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation>Vymazať dáta z tabuľky</translation>
</message>
@@ -2436,55 +2477,65 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation>Vytvoriť skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation>Názov skupiny</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation>Položka s názvom %1 už existuje v skupine %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>Vymazať skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation>Ste si istý, že chcete vymazať skupinu %1?
Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
<translation type="obsolete">Odstrániť databázu</translation>
</message>
@@ -2493,14 +2544,14 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<translation type="obsolete">Ste si istý, že chcete odstrániť databázu &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
</message>
@@ -2513,67 +2564,61 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<translation type="obsolete">VACUUM úspešne skončilo.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
<translation>Kontrola integrity (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
<translation>Resetovať autoinkrement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>Ste si istý, že chcete vymazať všetky dáta z tabuľky &apos;%1&apos;?</translation>
+ <translation type="vanished">Ste si istý, že chcete vymazať všetky dáta z tabuľky &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse vymazať dáta z tabuľky &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Všetky dáta z tabuľky &apos;%1&apos; boli vymazané.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation>Nasledujúce objekty budú odstránené: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation>Nasledujúce databázy budú odstránené zo zoznamu: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Ste si istý, že chcete pokračovať?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>Odstránenie objektov</translation>
</message>
@@ -2842,78 +2887,82 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Vytvoriť pohľad z dotazu</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>Predchádzajúca databáza</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>Nasledujúca databáza</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation>Zobraziť nasledujúcu záložku</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation>Zobraziť predchádzajúcu záložku</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation>Aktívna databáza (%1/%2)</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation>Dotaz trval %1 sekúnd. Počet dotknutých riadkov: %2</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation>Dotaz trval %1 sekúnd.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation>Vymazať históriu dotazov</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation>Ste si istý, že chete vymazať celú históriu SQL dotazov? Túto operáciu nieje možné vrátiť späť.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation>Nebola vybraná žiadna databáza v SQL editore. Nemôžem vytvoriť view pre neznámu databázu.</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>Okno editora &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
+ <translation type="vanished">Okno editora &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
</message>
</context>
<context>
@@ -3369,7 +3418,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
- <source>Functions editor window has uncommited modifications.</source>
+ <source>Functions editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3968,9 +4017,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>Nepotvrdené zmeny</translation>
+ <translation type="vanished">Nepotvrdené zmeny</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -4901,9 +4954,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>Nepotvrdené zmeny</translation>
+ <translation type="vanished">Nepotvrdené zmeny</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
@@ -5001,179 +5058,179 @@ nájsť ďalší</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Vystrihnúť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Vložiť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Vymazať</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Vybrať všetko</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Formátovať SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Uložiť SQL do súboru</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Načítať SQL zo súboru</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Vymazať riadok</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Nájsť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Nájsť ďalší</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Nájsť predchádzajúci</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Nahradiť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>Uložiť do súboru</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Nemôžem otvoriť súbor &apos;%1&apos; pre zápis: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>Otvoriť súbor</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Nemôžem otvoriť súbor &apos;%1&apos; na čítanie: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Dosiahnutý koniec súboru. Kliknite na tlačidlo Nájsť pre hľadanie od začiatku súboru.</translation>
</message>
@@ -5205,12 +5262,11 @@ nájsť ďalší</translation>
<translation>Obmedzenia:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
- <translation>Táto bunka nieje editovateľná, pretože: %1</translation>
+ <translation type="vanished">Táto bunka nieje editovateľná, pretože: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -5218,18 +5274,32 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
- <source>Cannot edit this cell. Details: %2</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <source>The row is marked for deletion.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5237,69 +5307,85 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Nemôže byť spustených viacero dotazov súčasne.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
- <translation>Nepotvrdené dáta</translation>
+ <translation type="vanished">Nepotvrdené dáta</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
- <translation>Sú tu nepotvrdené zmeny. Chcete aj napriek tomu pokračovať? Všetky nepotvrdené zmeny budú stratené.</translation>
+ <translation type="vanished">Sú tu nepotvrdené zmeny. Chcete aj napriek tomu pokračovať? Všetky nepotvrdené zmeny budú stratené.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation>Nemôžem potrdiť dáta bunky, ktorá odkazuje na už uzatvorenú databázu.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Nemôžem začať tranzakciu na databáze. Detaily: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>Vyskytla sa chyba počas potvrdzovania tranzakcie: %1</translation>
+ <translation type="vanished">Vyskytla sa chyba počas potvrdzovania tranzakcie: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation>Vyskytla sa chyba počas vracania späť tranzakcie: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
<source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation>Nastal pokus o potvrdenie zmien v bunke, ktorú nieje možné upravovať (napriek tomu bola upravená a čaká na potvrdenie)! Toto je chyba. Prosím nahláste ju.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>Vyskytla sa chyba počas potvrdzovania dát: %1</translation>
+ <translation type="vanished">Vyskytla sa chyba počas potvrdzovania dát: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba počas vykonávania SQL dotazu na databáze &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation>Vyskytla sa chyba počas načítavania výsledkov dotazu: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation>Vložiť viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation>Počet vkládaných riadkov:</translation>
</message>
@@ -5307,117 +5393,117 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation>Kopírovať ako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>Vložiť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation>Vložiť ako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>Nastaviť null hodnoty</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>Vymazať hodnoty</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation>Upraviť hodnotu v editory</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>Potvrdiť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>Vrátiť späť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation>Potvrdiť vybrané bunky</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation>Vrátiť späť vybrané bunky</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation>Vybrať stĺpce na zoradenie podľa</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation>Odstrániť užívateľské triedenie</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>Vložiť riadok</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>Vložiť viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>Vymazať viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation>Neboli vybrané žiadne položky na vloženie obsahu schránky.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>Upraviť hodnotu</translation>
</message>
@@ -5425,12 +5511,16 @@ nájsť ďalší</translation>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
- <translation>Vyskytla sa chyba počas potvrdzovania nového riadka: %1</translation>
+ <translation type="vanished">Vyskytla sa chyba počas potvrdzovania nového riadka: %1</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Vyskytla sa chyba počas mazania riadka z tabuľky %1: %2</translation>
</message>
@@ -5693,7 +5783,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation>Dáta</translation>
</message>
@@ -5718,409 +5808,430 @@ NULL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Exportovať tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Importovať dáta do tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Naplniť tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Obnoviť štruktúru</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Potvrdiť zmeny štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Vrátiť späť zmeny štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Pridať stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Upraviť stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Vymazať stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Posunúť stĺpec hore</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Posunúť stĺpec dole</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Vytvoriť rovnakú tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Resetovať hodnotu autoinkrementu</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Pridať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Upraviť obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Vymazať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Posunúť obmedzenie hore</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Posunúť obmedzenie dole</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Pridať primárny kľúč</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Pridať cudzí kľúč</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Pridať jedinečné obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Obnoviť zoznam indexov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Vytvoriť index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Upraviť index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Vymazať index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Obnoviť zoznam spúšťačov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Vytvoriť spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Upraviť spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Vymazať spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Ste si istý, že chcete vymazať stĺpec &apos;%1&apos; ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation>Resetovať autoinkrement</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
- <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Ste si istý, že chcete vymazať obmedzenie &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Vymazať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished">Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished">Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation>Nepotvrdené zmeny</translation>
+ <translation type="vanished">Nepotvrdené zmeny</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
+ <translation type="vanished">Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation>Choď späť na záložku štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation>Potvrdiť zmeny a prezerať dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Jedinečný</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Stĺpce</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Udalosť</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Podmienka</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Detaily</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry a dáta.</translation>
+ <translation type="vanished">V okne tabuľky %1 sú nepotvrdené zmeny štruktúry a dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation>V okne tabuľky %1 sú nepotvrdené dáta.</translation>
+ <translation type="vanished">V okne tabuľky %1 sú nepotvrdené dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry.</translation>
+ <translation type="vanished">V okne tabuľky %1 sú nepotvrdené zmeny štruktúry.</translation>
</message>
</context>
<context>
@@ -6135,6 +6246,16 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished">Vybrať všetko</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished">Zrušiť výber</translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6226,13 +6347,13 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<translation>Zadajte validný kód spúšťača.</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished">Chyba</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -6280,7 +6401,7 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation>Dáta</translation>
</message>
@@ -6322,226 +6443,247 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<translation>Nový pohľad %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Obnoviť pohľad</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Potvrdiť zmeny v pohľade</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Vrátiť späť zmeny v pohľade</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished">Pridať stĺpec</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished">Upraviť stĺpec</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished">Vymazať stĺpec</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished">Posunúť stĺpec hore</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished">Posunúť stĺpec dole</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Obnoviť zoznam spúšťačov</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Vytvoriť nový spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Upraviť vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Vymazať vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr a dát.</translation>
+ <translation type="vanished">Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr a dát.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
- <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
+ <translation type="vanished">Okno pohľadu &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr.</translation>
+ <translation type="vanished">Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation>Nemôžem načítať dáta z pohľadu %1. Detaily chyby: %2</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
- <translation>Nepotvrdené zmeny</translation>
+ <translation type="vanished">Nepotvrdené zmeny</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
<source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
+ <translation type="vanished">Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Go back to structure tab</source>
<translation>Choď späť na záložku štruktúr</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
<source>Commit modifications and browse data.</source>
<translation>Potvrdiť zmeny a prezerať dáta.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation>Nemôžem potvrdiť zmeny v pohľade. Chyba: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Podmienka</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Detaily</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation>SELECT nemôže byť analyzovaný. Prosím opravte dotaz a skúste to znovu.
Detaily: %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm
index 47beaf2..3201eff 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
index e6a2c1d..53cd968 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="zh_CN">
<context>
<name>AboutDialog</name>
<message>
@@ -433,8 +433,12 @@
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommitted modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Collations editor window has uncommited modifications.</source>
- <translation>排序规则编辑器存在未提交的改动。</translation>
+ <translation type="vanished">排序规则编辑器存在未提交的改动。</translation>
</message>
</context>
<context>
@@ -907,7 +911,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1491"/>
+ <location filename="../dialogs/configdialog.ui" line="1517"/>
<source>Configuration</source>
<translation>配置</translation>
</message>
@@ -997,215 +1001,219 @@ but it&apos;s okay to use it.</source>
<translation>流量和编辑数据</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="485"/>
<source>Number of data rows per page:</source>
<translation>每页的行数:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
- <location filename="../dialogs/configdialog.ui" line="460"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>&lt;p&gt;When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.&lt;/p&gt;</source>
<translation>&lt;p&gt;在以列表方式显示数据时,列宽度会自动调整。该值控制初始列宽度,之后您可以手动调整列宽度,不受此限制。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="453"/>
+ <location filename="../dialogs/configdialog.ui" line="427"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>限制宽度(单位:像素):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="479"/>
+ <location filename="../dialogs/configdialog.ui" line="472"/>
<source>&lt;p&gt;When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="482"/>
+ <location filename="../dialogs/configdialog.ui" line="475"/>
<source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="495"/>
+ <location filename="../dialogs/configdialog.ui" line="492"/>
+ <source>&lt;p&gt;When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="521"/>
<source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="527"/>
<source>Before currently selected row</source>
<translation>在已选列之前</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="517"/>
+ <location filename="../dialogs/configdialog.ui" line="543"/>
<source>After currently selected row</source>
<translation>在已选列之后</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="530"/>
+ <location filename="../dialogs/configdialog.ui" line="556"/>
<source>At the end of data view</source>
<translation>在数据显示区域的末尾</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="578"/>
<source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="591"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="568"/>
+ <location filename="../dialogs/configdialog.ui" line="594"/>
<source>Place data tab as first tab in a Table Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="587"/>
+ <location filename="../dialogs/configdialog.ui" line="613"/>
<source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="600"/>
+ <location filename="../dialogs/configdialog.ui" line="626"/>
<source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="603"/>
+ <location filename="../dialogs/configdialog.ui" line="629"/>
<source>Place data tab as first tab in a View Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="647"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Data types</source>
<translation>数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="685"/>
+ <location filename="../dialogs/configdialog.ui" line="711"/>
<source>Available editors:</source>
<translation>可用的编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="701"/>
+ <location filename="../dialogs/configdialog.ui" line="727"/>
<source>Editors selected for this data type:</source>
<translation>已选的该数据类型编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="737"/>
+ <location filename="../dialogs/configdialog.ui" line="763"/>
<source>Schema editing</source>
<translation>架构编辑</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="749"/>
+ <location filename="../dialogs/configdialog.ui" line="775"/>
<source>Number of DDL changes kept in history.</source>
<translation>数据库定义(DDL)的更改历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="762"/>
+ <location filename="../dialogs/configdialog.ui" line="788"/>
<source>DDL history size:</source>
<translation>数据库定义(DDL)历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>当提交schema变动时不显示数据库定义(DDL)预览对话框</translation>
+ <translation type="vanished">当提交schema变动时不显示数据库定义(DDL)预览对话框</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="808"/>
<source>SQL queries</source>
<translation>SQL查询</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="794"/>
- <location filename="../dialogs/configdialog.ui" line="807"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Number of queries kept in the history.</source>
<translation>查询历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="810"/>
+ <location filename="../dialogs/configdialog.ui" line="836"/>
<source>History size:</source>
<translation>历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <location filename="../dialogs/configdialog.ui" line="843"/>
<source>&lt;p&gt;If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.&lt;/p&gt;</source>
<translation>&lt;p&gt;如果SQL编辑器中有多个语句,如果启用该选项,只执行光标下的语句;反之则执行全部语句。另外您可以选择需要执行的语句来执行&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Execute only the query under the cursor</source>
<translation>只执行光标下的语句</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Updates</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="839"/>
+ <location filename="../dialogs/configdialog.ui" line="865"/>
<source>Automatically check for updates at startup</source>
<translation>在启动时自己检查更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="852"/>
+ <location filename="../dialogs/configdialog.ui" line="878"/>
<source>Session</source>
<translation>会话</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="858"/>
+ <location filename="../dialogs/configdialog.ui" line="884"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>启动后恢复上一次会话。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="871"/>
+ <location filename="../dialogs/configdialog.ui" line="897"/>
<source>Status Field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="877"/>
+ <location filename="../dialogs/configdialog.ui" line="903"/>
<source>&lt;p&gt;When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="880"/>
+ <location filename="../dialogs/configdialog.ui" line="906"/>
<source>Always open Status panel when new message is printed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="922"/>
+ <location filename="../dialogs/configdialog.ui" line="948"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="963"/>
+ <location filename="../dialogs/configdialog.ui" line="989"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="968"/>
+ <location filename="../dialogs/configdialog.ui" line="994"/>
<source>Key combination</source>
<translation>按键编定</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1012"/>
- <location filename="../dialogs/configdialog.ui" line="1481"/>
+ <location filename="../dialogs/configdialog.ui" line="1038"/>
+ <location filename="../dialogs/configdialog.ui" line="1507"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1018"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Changing language requires application restart to take effect.</source>
<translation>更改语言后,重启程序生效。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1035"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1041"/>
+ <location filename="../dialogs/configdialog.ui" line="1067"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1044"/>
+ <location filename="../dialogs/configdialog.ui" line="1070"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,242 +1289,262 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="546"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Keep NULL value when entering empty value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="505"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.&lt;/p&gt;&lt;p&gt;Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="508"/>
+ <source>Use DEFAULT value (if defined), when committing NULL value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="572"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="555"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="607"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="616"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1060"/>
+ <location filename="../dialogs/configdialog.ui" line="795"/>
+ <source>Don&apos;t show DDL preview dialog when committing schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1092"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1086"/>
+ <location filename="../dialogs/configdialog.ui" line="1112"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1208"/>
+ <location filename="../dialogs/configdialog.ui" line="1234"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1237"/>
+ <location filename="../dialogs/configdialog.ui" line="1263"/>
<source>Current style:</source>
<translation>当前风格:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1254"/>
+ <location filename="../dialogs/configdialog.ui" line="1280"/>
<source>Preview</source>
<translation>预览</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1264"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Enabled</source>
<translation>已启用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1437"/>
+ <location filename="../dialogs/configdialog.ui" line="1463"/>
<source>Disabled</source>
<translation>已禁用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1486"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>Active formatter plugin</source>
<translation>启用格式化插件</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1524"/>
+ <location filename="../dialogs/configdialog.ui" line="1550"/>
<source>SQL editor font</source>
<translation>SQL编辑器字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1540"/>
+ <location filename="../dialogs/configdialog.ui" line="1566"/>
<source>Database list font</source>
<translation>数据库字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1556"/>
+ <location filename="../dialogs/configdialog.ui" line="1582"/>
<source>Database list additional label font</source>
<translation>数据库额外标签字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1572"/>
+ <location filename="../dialogs/configdialog.ui" line="1598"/>
<source>Data view font</source>
<translation>数据浏览字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1588"/>
+ <location filename="../dialogs/configdialog.ui" line="1614"/>
<source>Status field font</source>
<translation>状态栏字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1646"/>
+ <location filename="../dialogs/configdialog.ui" line="1672"/>
<source>SQL editor colors</source>
<translation>SQL编辑器颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1652"/>
+ <location filename="../dialogs/configdialog.ui" line="1678"/>
<source>Current line background</source>
<translation>当前行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1659"/>
+ <location filename="../dialogs/configdialog.ui" line="1685"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;单引号内的SQL字符串&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1662"/>
+ <location filename="../dialogs/configdialog.ui" line="1688"/>
<source>String foreground</source>
<translation>字符串颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1765"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1768"/>
+ <location filename="../dialogs/configdialog.ui" line="1794"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1791"/>
+ <location filename="../dialogs/configdialog.ui" line="1817"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1798"/>
+ <location filename="../dialogs/configdialog.ui" line="1824"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1801"/>
+ <location filename="../dialogs/configdialog.ui" line="1827"/>
<source>BLOB value foreground</source>
<translation>BLOB值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1834"/>
<source>Regular foreground</source>
<translation type="unfinished">背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1815"/>
+ <location filename="../dialogs/configdialog.ui" line="1841"/>
<source>Line numbers area background</source>
<translation>行号的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Keyword foreground</source>
<translation>关键字的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1845"/>
+ <location filename="../dialogs/configdialog.ui" line="1871"/>
<source>Number foreground</source>
<translation>数字颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1852"/>
+ <location filename="../dialogs/configdialog.ui" line="1878"/>
<source>Comment foreground</source>
<translation>注释颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1891"/>
+ <location filename="../dialogs/configdialog.ui" line="1917"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1894"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1920"/>
+ <location filename="../dialogs/configdialog.ui" line="1946"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1926"/>
- <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re committed to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1929"/>
- <source>Uncommited data outline color</source>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <source>Uncommitted data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1952"/>
- <source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <source>&lt;p&gt;In case of error while committing data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1955"/>
+ <location filename="../dialogs/configdialog.ui" line="1981"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1978"/>
+ <location filename="../dialogs/configdialog.ui" line="2004"/>
<source>NULL value foreground</source>
<translation>NULL值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2001"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Deleted row background</source>
<translation>已删除行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2027"/>
+ <location filename="../dialogs/configdialog.ui" line="2053"/>
<source>Database list colors</source>
<translation>数据库列表颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2033"/>
+ <location filename="../dialogs/configdialog.ui" line="2059"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2036"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2062"/>
+ <location filename="../dialogs/configdialog.ui" line="2088"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2068"/>
+ <location filename="../dialogs/configdialog.ui" line="2094"/>
<source>Information message foreground</source>
<translation>信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2091"/>
+ <location filename="../dialogs/configdialog.ui" line="2117"/>
<source>Warning message foreground</source>
<translation>警告信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="2114"/>
+ <location filename="../dialogs/configdialog.ui" line="2140"/>
<source>Error message foreground</source>
<translation>错误信息颜色</translation>
</message>
@@ -2007,22 +2035,17 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>数据库驱动</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="95"/>
- <source>Generate automatically</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="108"/>
+ <location filename="../dialogs/dbdialog.ui" line="91"/>
<source>Options</source>
<translation>选项</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="117"/>
+ <location filename="../dialogs/dbdialog.ui" line="100"/>
<source>Permanent (keep it in configuration)</source>
<translation>记住该数据库</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="161"/>
+ <location filename="../dialogs/dbdialog.ui" line="144"/>
<source>Test connection</source>
<translation>测试连接</translation>
</message>
@@ -2041,7 +2064,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="156"/>
+ <location filename="../dialogs/dbdialog.cpp" line="154"/>
<source>File</source>
<translation>文件</translation>
</message>
@@ -2051,28 +2074,23 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.ui" line="92"/>
- <source>Generate name basing on file path</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <location filename="../dialogs/dbdialog.ui" line="97"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="157"/>
+ <location filename="../dialogs/dbdialog.cpp" line="155"/>
<source>Browse for existing database file on local computer</source>
<translation>浏览计算上已存在的文件</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="290"/>
+ <location filename="../dialogs/dbdialog.cpp" line="288"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="469"/>
+ <location filename="../dialogs/dbdialog.cpp" line="467"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,29 +2100,32 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="485"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>&lt;p&gt;Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>Enter a database file path.</source>
<translation>输入数据库文件位置。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="502"/>
<source>This database is already on the list under name: %1</source>
<translation>该数据库已在列表中:%1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>选择数据库类型。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
- <translation>自动产生</translation>
+ <translation type="vanished">自动产生</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
- <translation>输入名字</translation>
+ <translation type="vanished">输入名字</translation>
</message>
</context>
<context>
@@ -2391,7 +2412,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="144"/>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
<source>Erase table data</source>
<translation>擦除该表的数据</translation>
</message>
@@ -2412,55 +2433,65 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Create group</source>
<translation>创建分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1048"/>
<source>Group name</source>
<translation>分组名</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1044"/>
+ <location filename="../dbtree/dbtree.cpp" line="1051"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1062"/>
+ <location filename="../dbtree/dbtree.cpp" line="1069"/>
<source>Delete group</source>
<translation>删除分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1063"/>
+ <location filename="../dbtree/dbtree.cpp" line="1070"/>
<source>Are you sure you want to delete group %1?
All objects from this group will be moved to parent group.</source>
<translation>确认删除组 %1 吗?
删除后该组下的全部内容将被移动到其所属的父分组中。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <location filename="../dbtree/dbtree.cpp" line="1133"/>
<source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <location filename="../dbtree/dbtree.cpp" line="1141"/>
<source>Are you sure you want to remove following databases from the list:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <location filename="../dbtree/dbtree.cpp" line="1143"/>
<source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <location filename="../dbtree/dbtree.cpp" line="1449"/>
<source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1508"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1528"/>
+ <source>Are you sure you want to delete all data from table(s): %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
<translation type="obsolete">删除数据库</translation>
</message>
@@ -2469,14 +2500,14 @@ All objects from this group will be moved to parent group.</source>
<translation type="obsolete">您确定要删除数据库“%1”吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1173"/>
- <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <location filename="../dbtree/dbtree.cpp" line="1180"/>
+ <location filename="../dbtree/dbtree.cpp" line="1373"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1193"/>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <location filename="../dbtree/dbtree.cpp" line="1200"/>
+ <location filename="../dbtree/dbtree.cpp" line="1348"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>未能导出,因为没有导出插件被加载。</translation>
</message>
@@ -2489,67 +2520,65 @@ All objects from this group will be moved to parent group.</source>
<translation type="obsolete">VACUUM 命令执行完成。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1456"/>
+ <location filename="../dbtree/dbtree.cpp" line="1463"/>
<source>Integrity check (%1)</source>
<translation>完整性检查(%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Reset autoincrement</source>
<translation>重置autoincrement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1492"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>您确定要重设“%1”的autoincrement吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1499"/>
+ <location filename="../dbtree/dbtree.cpp" line="1506"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>在重设表“%1”的autoincrement时出现错误:%2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>表“%1”的auincrement重设成功。</translation>
+ <translation type="vanished">表“%1”的auincrement重设成功。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>您确定要删除表“%1”中的全部数据吗?</translation>
+ <translation type="vanished">您确定要删除表“%1”中的全部数据吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1526"/>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>删除表“%1”中的数据时出错:%2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1530"/>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>表“%1”中的数据全部被删除。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1639"/>
+ <location filename="../dbtree/dbtree.cpp" line="1660"/>
<source>Following objects will be deleted: %1.</source>
<translation>以下内容将被删除:%1。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1642"/>
+ <location filename="../dbtree/dbtree.cpp" line="1663"/>
<source>Following databases will be removed from list: %1.</source>
<translation>以下数据库将从列表中移除:%1。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1645"/>
+ <location filename="../dbtree/dbtree.cpp" line="1666"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1647"/>
+ <location filename="../dbtree/dbtree.cpp" line="1668"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;继续?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1649"/>
+ <location filename="../dbtree/dbtree.cpp" line="1670"/>
<source>Delete objects</source>
<translation>删除对象</translation>
</message>
@@ -2813,78 +2842,82 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>从query中创建视图</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="382"/>
+ <location filename="../windows/editorwindow.cpp" line="385"/>
<source>Previous database</source>
<translation>前一个数据库</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="383"/>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
<source>Next database</source>
<translation>下一个数据库</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="386"/>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
<source>Show next tab</source>
<comment>sql editor</comment>
<translation>显示下一个标签</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="387"/>
+ <location filename="../windows/editorwindow.cpp" line="390"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
<translation>显示上一个标签</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="388"/>
+ <location filename="../windows/editorwindow.cpp" line="391"/>
<source>Focus results below</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="389"/>
+ <location filename="../windows/editorwindow.cpp" line="392"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="463"/>
+ <location filename="../windows/editorwindow.cpp" line="466"/>
<source>Active database (%1/%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="503"/>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="507"/>
+ <location filename="../windows/editorwindow.cpp" line="511"/>
<source>Query finished in %1 second(s).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Clear execution history</source>
<translation>清除执行历史</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="609"/>
+ <location filename="../windows/editorwindow.cpp" line="613"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
<translation>确定要删除全部的SQL执行历史吗?删除后不能恢复。</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="621"/>
+ <location filename="../windows/editorwindow.cpp" line="625"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="642"/>
+ <location filename="../windows/editorwindow.cpp" line="646"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/editorwindow.cpp" line="672"/>
+ <location filename="../windows/editorwindow.cpp" line="676"/>
+ <source>Editor window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>编辑器“%1”里有未提交的数据库。</translation>
+ <translation type="vanished">编辑器“%1”里有未提交的数据库。</translation>
</message>
</context>
<context>
@@ -3340,7 +3373,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
- <source>Functions editor window has uncommited modifications.</source>
+ <source>Functions editor window has uncommitted modifications.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3939,9 +3972,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>MdiWindow</name>
<message>
- <location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation>未提交的更改</translation>
+ <translation type="vanished">未提交的更改</translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
@@ -4872,9 +4909,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<context>
<name>QuitConfirmDialog</name>
<message>
- <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation>未提交的更改</translation>
+ <translation type="vanished">未提交的更改</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
@@ -4971,179 +5012,179 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>剪切</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>复制</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>粘贴</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>删除</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>全选</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>撤销</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>恢复</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>完成</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>格式化SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>保存SQL到文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>从文件加载SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>删除行</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>整块下移</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>整块上移</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>查找</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="139"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>查找下一个</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="140"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>查找上一个</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="141"/>
+ <location filename="../sqleditor.cpp" line="142"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>替换</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="142"/>
+ <location filename="../sqleditor.cpp" line="143"/>
<source>Toggle comment</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="256"/>
+ <location filename="../sqleditor.cpp" line="258"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="450"/>
+ <location filename="../sqleditor.cpp" line="452"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="838"/>
+ <location filename="../sqleditor.cpp" line="840"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1073"/>
+ <location filename="../sqleditor.cpp" line="1078"/>
<source>Save to file</source>
<translation>保存到文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="246"/>
+ <location filename="../sqleditor.cpp" line="248"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1085"/>
+ <location filename="../sqleditor.cpp" line="1090"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished">SQL文件 (*.sql);;所有文件 (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1086"/>
+ <location filename="../sqleditor.cpp" line="1091"/>
<source>Open file</source>
<translation>打开文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1095"/>
+ <location filename="../sqleditor.cpp" line="1100"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1304"/>
+ <location filename="../sqleditor.cpp" line="1309"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>已搜索到文档底部。点击查找从头程序开始搜索。</translation>
</message>
@@ -5175,12 +5216,7 @@ find next</source>
<translation>约束:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
- <source>This cell is not editable, because: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="423"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -5188,18 +5224,32 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
- <source>Cannot edit this cell. Details: %2</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
- <source>The row is marked for deletion.</source>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Cannot edit this cell. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/>
+ <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/>
+ <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It&apos;s better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/>
<source>Foreign key for column %2 has more than %1 possible values. It&apos;s too much to display in drop down list. You need to edit value manually.</source>
<translation type="unfinished"></translation>
</message>
@@ -5207,69 +5257,69 @@ find next</source>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="75"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="474"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
- <source>Uncommited data</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="356"/>
+ <source>Cannot commit the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
- <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="364"/>
+ <source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
- <source>Cannot commit the data for a cell that refers to the already closed database.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="435"/>
+ <source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
- <source>Could not begin transaction on the database. Details: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="630"/>
+ <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
- <source>An error occurred while commiting the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="108"/>
+ <source>Uncommitted data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
- <source>An error occurred while rolling back the transaction: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="109"/>
+ <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
- <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="410"/>
+ <source>An error occurred while committing the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
- <source>An error occurred while commiting the data: %1</source>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="656"/>
+ <source>An error occurred while committing the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Insert multiple rows</source>
<translation type="unfinished">插入多行</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5277,117 +5327,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="56"/>
<source>Go to referenced row in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Copy as...</source>
<translation>复制为...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste</source>
<translation>粘贴</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Paste as...</source>
<translation>粘贴为...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Set NULL values</source>
<translation>设置为NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Erase values</source>
<translation>擦除</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Rollback</source>
<translation>回滚</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="89"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert row</source>
<translation>插入行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Insert multiple rows</source>
<translation>插入多行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="98"/>
<source>Delete selected row</source>
<translation>删除已选行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="156"/>
<source>Generate query for selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="313"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="371"/>
<source>Go to referenced row in table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="383"/>
<source>table &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="407"/>
<source>Referenced row (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="672"/>
<source>Edit value</source>
<translation>编辑值</translation>
</message>
@@ -5395,12 +5445,16 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
- <translation>写入新行时发生了错误:%1</translation>
+ <translation type="vanished">写入新行时发生了错误:%1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="82"/>
+ <source>Error while committing new row: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="140"/>
<source>Error while deleting row from table %1: %2</source>
<translation>删除行时发生了错误 %1:%2</translation>
</message>
@@ -5663,7 +5717,7 @@ NULL</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
- <location filename="../windows/tablewindow.cpp" line="1566"/>
+ <location filename="../windows/tablewindow.cpp" line="1574"/>
<source>Data</source>
<translation type="unfinished">数据</translation>
</message>
@@ -5688,409 +5742,417 @@ NULL</source>
<translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="200"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="201"/>
+ <location filename="../windows/tablewindow.cpp" line="203"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="202"/>
+ <location filename="../windows/tablewindow.cpp" line="204"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished">填充表</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="216"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="218"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="219"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="220"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
- <location filename="../windows/tablewindow.cpp" line="309"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="311"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="223"/>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="224"/>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="230"/>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished">创建一个相似的表</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="235"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="236"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="237"/>
+ <location filename="../windows/tablewindow.cpp" line="239"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="238"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="240"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="241"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="242"/>
+ <location filename="../windows/tablewindow.cpp" line="244"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="243"/>
+ <location filename="../windows/tablewindow.cpp" line="245"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="261"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="263"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="267"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished">删除索引</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="271"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="273"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="274"/>
+ <location filename="../windows/tablewindow.cpp" line="276"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="275"/>
+ <location filename="../windows/tablewindow.cpp" line="277"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished">删除触发器</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="308"/>
+ <location filename="../windows/tablewindow.cpp" line="310"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="336"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="338"/>
+ <location filename="../windows/tablewindow.cpp" line="340"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="476"/>
+ <location filename="../windows/tablewindow.cpp" line="478"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="595"/>
+ <location filename="../windows/tablewindow.cpp" line="597"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="650"/>
+ <location filename="../windows/tablewindow.cpp" line="652"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="656"/>
+ <location filename="../windows/tablewindow.cpp" line="658"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="663"/>
+ <location filename="../windows/tablewindow.cpp" line="665"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="672"/>
+ <location filename="../windows/tablewindow.cpp" line="674"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="697"/>
<location filename="../windows/tablewindow.cpp" line="699"/>
+ <location filename="../windows/tablewindow.cpp" line="701"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="824"/>
- <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="828"/>
+ <source>Committed changes for table &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="826"/>
- <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <location filename="../windows/tablewindow.cpp" line="832"/>
+ <source>Committed changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="858"/>
+ <location filename="../windows/tablewindow.cpp" line="897"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1270"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1271"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled.
+Do you want to commit the structure, or do you want to go back to the structure tab?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1616"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1618"/>
+ <source>Table window &quot;%1&quot; has uncommitted data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1620"/>
+ <source>Table window &quot;%1&quot; has uncommitted structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Reset autoincrement</source>
<translation type="unfinished">重置autoincrement</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="880"/>
+ <location filename="../windows/tablewindow.cpp" line="888"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished">您确定要重设“%1”的autoincrement吗?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="887"/>
+ <location filename="../windows/tablewindow.cpp" line="895"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished">在重设表“%1”的autoincrement时出现错误:%2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished">表“%1”的auincrement重设成功。</translation>
+ <translation type="obsolete">表“%1”的auincrement重设成功。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="969"/>
+ <location filename="../windows/tablewindow.cpp" line="977"/>
<source>A blank name for the table is allowed in SQLite, but it is not recommended.
Are you sure you want to create a table with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="978"/>
+ <location filename="../windows/tablewindow.cpp" line="986"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1004"/>
+ <location filename="../windows/tablewindow.cpp" line="1012"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1011"/>
+ <location filename="../windows/tablewindow.cpp" line="1019"/>
<source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1161"/>
+ <location filename="../windows/tablewindow.cpp" line="1169"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1162"/>
+ <location filename="../windows/tablewindow.cpp" line="1170"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished">删除约束</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1216"/>
+ <location filename="../windows/tablewindow.cpp" line="1224"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished">未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1237"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished">未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation type="unfinished">未提交的更改</translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1263"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled.
-Do you want to commit the structure, or do you want to go back to the structure tab?</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">未提交的更改</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1266"/>
+ <location filename="../windows/tablewindow.cpp" line="1274"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1447"/>
+ <location filename="../windows/tablewindow.cpp" line="1455"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1448"/>
+ <location filename="../windows/tablewindow.cpp" line="1456"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished">唯一</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1449"/>
+ <location filename="../windows/tablewindow.cpp" line="1457"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished">字段</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1450"/>
+ <location filename="../windows/tablewindow.cpp" line="1458"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1504"/>
+ <location filename="../windows/tablewindow.cpp" line="1512"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1505"/>
+ <location filename="../windows/tablewindow.cpp" line="1513"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1506"/>
+ <location filename="../windows/tablewindow.cpp" line="1514"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1507"/>
+ <location filename="../windows/tablewindow.cpp" line="1515"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">详情</translation>
</message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1608"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1610"/>
- <source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../windows/tablewindow.cpp" line="1612"/>
- <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>TriggerColumnsDialog</name>
@@ -6104,6 +6166,16 @@ Do you want to commit the structure, or do you want to go back to the structure
<source>Triggering columns:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/>
+ <source>Select all</source>
+ <translation type="unfinished">全选</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/>
+ <source>Deselect all</source>
+ <translation type="unfinished">全不选</translation>
+ </message>
</context>
<context>
<name>TriggerDialog</name>
@@ -6195,13 +6267,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>Error</source>
<comment>trigger dialog</comment>
<translation type="unfinished">错误</translation>
</message>
<message>
- <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <location filename="../dialogs/triggerdialog.cpp" line="428"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished">在执行SQL语句“%1”时发生了错误。</translation>
@@ -6249,7 +6321,7 @@ Do you want to commit the structure, or do you want to go back to the structure
</message>
<message>
<location filename="../windows/viewwindow.ui" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="835"/>
+ <location filename="../windows/viewwindow.cpp" line="837"/>
<source>Data</source>
<translation>数据</translation>
</message>
@@ -6291,224 +6363,228 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="311"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="313"/>
+ <location filename="../windows/viewwindow.cpp" line="315"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="314"/>
+ <location filename="../windows/viewwindow.cpp" line="316"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
<source>Explicit column names</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="324"/>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
<source>Generate output column names automatically basing on result columns of the view.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="325"/>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
<source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="326"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
<source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="327"/>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
<source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="328"/>
+ <location filename="../windows/viewwindow.cpp" line="330"/>
<source>Move column up</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="329"/>
+ <location filename="../windows/viewwindow.cpp" line="331"/>
<source>Move column down</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="334"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="336"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="337"/>
+ <location filename="../windows/viewwindow.cpp" line="339"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="338"/>
+ <location filename="../windows/viewwindow.cpp" line="340"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="359"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../windows/viewwindow.cpp" line="361"/>
- <source>View window &quot;%1&quot; has uncommited data.</source>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="363"/>
- <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <source>View window &quot;%1&quot; has uncommitted data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="560"/>
- <source>Could not load data for view %1. Error details: %2</source>
+ <location filename="../windows/viewwindow.cpp" line="365"/>
+ <source>View window &quot;%1&quot; has uncommitted structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="572"/>
- <source>Uncommited changes</source>
- <translation type="unfinished">未提交的更改</translation>
+ <location filename="../windows/viewwindow.cpp" line="574"/>
+ <source>Uncommitted changes</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="573"/>
- <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled.
+ <location filename="../windows/viewwindow.cpp" line="575"/>
+ <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled.
Do you want to commit the structure, or do you want to go back to the structure tab?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Go back to structure tab</source>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Committed changes for view &apos;%1&apos; successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="576"/>
- <source>Commit modifications and browse data.</source>
+ <location filename="../windows/viewwindow.cpp" line="631"/>
+ <source>Committed changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="627"/>
- <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <location filename="../windows/viewwindow.cpp" line="562"/>
+ <source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="629"/>
- <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <source>Uncommited changes</source>
+ <translation type="obsolete">未提交的更改</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Go back to structure tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="578"/>
+ <source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="640"/>
+ <location filename="../windows/viewwindow.cpp" line="642"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Override columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="782"/>
+ <location filename="../windows/viewwindow.cpp" line="784"/>
<source>Currently defined columns will be overriden. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="805"/>
+ <location filename="../windows/viewwindow.cpp" line="807"/>
<source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="866"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="867"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="868"/>
+ <location filename="../windows/viewwindow.cpp" line="870"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="869"/>
+ <location filename="../windows/viewwindow.cpp" line="871"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">详情</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="909"/>
+ <location filename="../windows/viewwindow.cpp" line="911"/>
<source>Could not process the %1 view correctly. Unable to open a view window.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="956"/>
+ <location filename="../windows/viewwindow.cpp" line="958"/>
<source>A blank name for the view is allowed in SQLite, but it is not recommended.
Are you sure you want to create a view with blank name?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="968"/>
+ <location filename="../windows/viewwindow.cpp" line="970"/>
<source>The SELECT statement could not be parsed. Please correct the query and retry.
Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="976"/>
+ <location filename="../windows/viewwindow.cpp" line="978"/>
<source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1002"/>
+ <location filename="../windows/viewwindow.cpp" line="1004"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1015"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="1017"/>
+ <location filename="../windows/viewwindow.cpp" line="1019"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
index 75ea87d..0f2d17c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
+++ b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
@@ -44,8 +44,8 @@ CFG_CATEGORIES(Ui,
CFG_ENTRY(QColor, SqlEditorBlobFg, Qt::darkCyan)
CFG_ENTRY(QColor, SqlEditorCommentFg, Qt::darkGray)
CFG_ENTRY(QColor, SqlEditorNumberFg, Qt::darkBlue)
- CFG_ENTRY(QColor, DataUncommitedError, Qt::red)
- CFG_ENTRY(QColor, DataUncommited, Qt::blue)
+ CFG_ENTRY(QColor, DataUncommittedError, Qt::red)
+ CFG_ENTRY(QColor, DataUncommitted, Qt::blue)
CFG_ENTRY(QColor, DataNullFg, Qt::gray)
CFG_ENTRY(QColor, DataDeletedBg, Qt::gray)
CFG_ENTRY(QColor, DbTreeLabelsFg, Qt::blue)
@@ -101,6 +101,8 @@ CFG_CATEGORIES(Ui,
CFG_ENTRY(bool, CompactLayout, true)
CFG_ENTRY(int, InsertRowPlacement, Cfg::BEFORE_CURRENT)
CFG_ENTRY(bool, ShowDataViewTooltips, true)
+ CFG_ENTRY(bool, KeepNullWhenEmptyValue, true)
+ CFG_ENTRY(bool, UseDefaultValueForNull, false)
)
)
diff --git a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp
index a2ce9f8..6448259 100644
--- a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp
@@ -40,6 +40,11 @@ void uiMessageHandler(QtMsgType type, const QMessageLogContext &context, const Q
case QtFatalMsg:
msgHandlerThreadProxy->fatal(fatMsg.arg(time, msg));
abort();
+#if QT_VERSION >= 0x050300
+ case QtInfoMsg:
+ msgHandlerThreadProxy->fatal(fatMsg.arg(time, msg));
+ break;
+#endif
}
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp
index c92f6f4..7632c8f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp
@@ -144,12 +144,12 @@ void BugReportHistoryWindow::deleteSelected()
CFG->deleteReport(id);
}
-bool BugReportHistoryWindow::isUncommited() const
+bool BugReportHistoryWindow::isUncommitted() const
{
return false;
}
-QString BugReportHistoryWindow::getQuitUncommitedConfirmMessage() const
+QString BugReportHistoryWindow::getQuitUncommittedConfirmMessage() const
{
return QString();
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h
index e582a48..42e518a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h
@@ -33,8 +33,8 @@ class GUI_API_EXPORT BugReportHistoryWindow : public MdiChild
~BugReportHistoryWindow();
bool restoreSessionNextTime();
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
protected:
QVariant saveSession();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp
index 1d0594d..286924b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp
@@ -378,12 +378,12 @@ void CollationsEditor::changeFont(const QVariant& font)
}
-bool CollationsEditor::isUncommited() const
+bool CollationsEditor::isUncommitted() const
{
return model->isModified();
}
-QString CollationsEditor::getQuitUncommitedConfirmMessage() const
+QString CollationsEditor::getQuitUncommittedConfirmMessage() const
{
- return tr("Collations editor window has uncommited modifications.");
+ return tr("Collations editor window has uncommitted modifications.");
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h
index 62cb281..a75e66b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h
@@ -40,8 +40,8 @@ class GUI_API_EXPORT CollationsEditor : public MdiChild
~CollationsEditor();
bool restoreSessionNextTime();
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
protected:
QVariant saveSession();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp
index 3aeccfb..15b49e5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp
@@ -139,12 +139,12 @@ QToolBar* DdlHistoryWindow::getToolBar(int toolbar) const
}
-bool DdlHistoryWindow::isUncommited() const
+bool DdlHistoryWindow::isUncommitted() const
{
return false;
}
-QString DdlHistoryWindow::getQuitUncommitedConfirmMessage() const
+QString DdlHistoryWindow::getQuitUncommittedConfirmMessage() const
{
return QString();
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.h
index 16a07ce..1a04831 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.h
@@ -24,8 +24,8 @@ class GUI_API_EXPORT DdlHistoryWindow : public MdiChild
~DdlHistoryWindow();
bool restoreSessionNextTime();
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
protected:
void changeEvent(QEvent *e);
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp
index 30fe07b..56ab6fe 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp
@@ -375,6 +375,9 @@ void EditorWindow::createActions()
attachActionInMenu(ui->sqlEdit->getAction(SqlEditor::SAVE_SQL_FILE), ui->sqlEdit->getAction(SqlEditor::SAVE_AS_SQL_FILE), ui->toolBar);
ui->toolBar->addAction(ui->sqlEdit->getAction(SqlEditor::OPEN_SQL_FILE));
ui->toolBar->addSeparator();
+ ui->toolBar->addAction(ui->sqlEdit->getAction(SqlEditor::FIND));
+ ui->toolBar->addAction(ui->sqlEdit->getAction(SqlEditor::REPLACE));
+ ui->toolBar->addSeparator();
actionMap[CURRENT_DB] = ui->toolBar->addWidget(dbCombo);
ui->toolBar->addSeparator();
ui->toolBar->addAction(staticActions[RESULTS_IN_TAB]);
@@ -424,7 +427,7 @@ void EditorWindow::selectCurrentQuery(bool fallBackToPreviousIfNecessary)
int pos = cursor.position();
int queryStartPos;
QString contents = ui->sqlEdit->toPlainText();
- QString query = getQueryWithPosition(contents, pos, dialect, &queryStartPos);
+ QString query = getQueryWithPosition(contents, pos, &queryStartPos);
TokenList tokens = Lexer::tokenize(query, dialect);
tokens.trim();
tokens.trimRight(Token::OPERATOR, ";");
@@ -435,7 +438,7 @@ void EditorWindow::selectCurrentQuery(bool fallBackToPreviousIfNecessary)
pos = contents.lastIndexOf(";", pos - 1);
if (pos > -1)
{
- query = getQueryWithPosition(contents, pos, dialect, &queryStartPos);
+ query = getQueryWithPosition(contents, pos, &queryStartPos);
tokens = Lexer::tokenize(query, dialect);
tokens.trim();
tokens.trimRight(Token::OPERATOR, ";");
@@ -470,6 +473,7 @@ void EditorWindow::execQuery(bool explain)
resultsModel->setDb(getCurrentDb());
resultsModel->setExplainMode(explain);
resultsModel->setQuery(sql);
+ resultsModel->setQueryCountLimitForSmartMode(queryLimitForSmartExecution);
ui->dataView->refreshData();
updateState();
@@ -623,7 +627,7 @@ void EditorWindow::exportResults()
}
QString query = lastSuccessfulQuery.isEmpty() ? getQueryToExecute() : lastSuccessfulQuery;
- QStringList queries = splitQueries(query, getCurrentDb()->getDialect(), false);
+ QStringList queries = splitQueries(query, getCurrentDb()->getDialect(), false, true);
if (queries.size() == 0)
{
qWarning() << "No queries after split in EditorWindow::exportResults()";
@@ -662,12 +666,12 @@ int qHash(EditorWindow::ActionGroup actionGroup)
}
-bool EditorWindow::isUncommited() const
+bool EditorWindow::isUncommitted() const
{
- return ui->dataView->isUncommited();
+ return ui->dataView->isUncommitted();
}
-QString EditorWindow::getQuitUncommitedConfirmMessage() const
+QString EditorWindow::getQuitUncommittedConfirmMessage() const
{
- return tr("Editor window \"%1\" has uncommited data.").arg(getMdiWindow()->windowTitle());
+ return tr("Editor window \"%1\" has uncommitted data.").arg(getMdiWindow()->windowTitle());
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h
index d952b1b..12486a8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h
@@ -93,8 +93,8 @@ class GUI_API_EXPORT EditorWindow : public MdiChild
void execute();
QToolBar* getToolBar(int toolbar) const;
SqlEditor* getEditor() const;
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
protected:
void changeEvent(QEvent *e);
@@ -115,6 +115,8 @@ class GUI_API_EXPORT EditorWindow : public MdiChild
void selectCurrentQuery(bool fallBackToPreviousIfNecessary = false);
void updateShortcutTips();
+ static const int queryLimitForSmartExecution = 100;
+
static ResultsDisplayMode resultsDisplayMode;
static QHash<Action,QAction*> staticActions;
static QHash<ActionGroup,QActionGroup*> staticActionGroups;
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp
index 29163e3..1bfd1f7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp
@@ -621,12 +621,12 @@ QVariant FunctionsEditor::saveSession()
}
-bool FunctionsEditor::isUncommited() const
+bool FunctionsEditor::isUncommitted() const
{
return model->isModified();
}
-QString FunctionsEditor::getQuitUncommitedConfirmMessage() const
+QString FunctionsEditor::getQuitUncommittedConfirmMessage() const
{
- return tr("Functions editor window has uncommited modifications.");
+ return tr("Functions editor window has uncommitted modifications.");
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.h b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.h
index 0fa496e..72455d3 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.h
@@ -48,8 +48,8 @@ class GUI_API_EXPORT FunctionsEditor : public MdiChild
~FunctionsEditor();
bool restoreSessionNextTime();
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
protected:
QVariant saveSession();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
index fd344e8..286aad7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
@@ -176,9 +176,10 @@ void TableWindow::init()
connect(CFG_UI.General.DataTabAsFirstInTables, SIGNAL(changed(const QVariant&)), this, SLOT(updateTabsOrder()));
connect(ui->structureView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(structureViewDoubleClicked(const QModelIndex&)));
connect(ui->tableConstraintsView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(constraintsViewDoubleClicked(const QModelIndex&)));
+ connect(CFG_UI.Fonts.DataView, SIGNAL(changed(QVariant)), this, SLOT(updateFont()));
structureExecutor = new ChainExecutor(this);
- connect(structureExecutor, SIGNAL(success()), this, SLOT(changesSuccessfullyCommited()));
+ connect(structureExecutor, SIGNAL(success(SqlQueryPtr)), this, SLOT(changesSuccessfullyCommitted()));
connect(structureExecutor, SIGNAL(failure(int,QString)), this, SLOT(changesFailedToCommit(int,QString)));
THEME_TUNER->manageCompactLayout({
@@ -191,6 +192,7 @@ void TableWindow::init()
ui->ddlTab
});
+ updateFont();
setupCoverWidget();
updateAfterInit();
}
@@ -797,7 +799,7 @@ void TableWindow::commitStructure(bool skipWarning)
executeStructureChanges();
}
-void TableWindow::changesSuccessfullyCommited()
+void TableWindow::changesSuccessfullyCommitted()
{
modifyingThisTable = false;
@@ -820,10 +822,17 @@ void TableWindow::changesSuccessfullyCommited()
updateNewTableState();
updateWindowTitle();
+ NotifyManager* notifyManager = NotifyManager::getInstance();
if (oldTable.compare(table, Qt::CaseInsensitive) == 0 || oldTable.isEmpty())
- notifyInfo(tr("Commited changes for table '%1' successfly.").arg(table));
+ {
+ notifyInfo(tr("Committed changes for table '%1' successfully.").arg(table));
+ }
else
- notifyInfo(tr("Commited changes for table '%1' (named before '%2') successfly.").arg(table, oldTable));
+ {
+ notifyInfo(tr("Committed changes for table '%1' (named before '%2') successfully.").arg(table, oldTable));
+ notifyManager->renamed(db, database, oldTable, table);
+ }
+ notifyManager->modified(db, database, table);
DBTREE->refreshSchema(db);
@@ -835,7 +844,6 @@ void TableWindow::changesSuccessfullyCommited()
tableModifier->getModifiedTriggers(),
tableModifier->getModifiedViews()
};
- NotifyManager* notifyManager = NotifyManager::getInstance();
foreach (const QStringList& objList, modifiedObjects)
{
foreach (const QString& obj, objList)
@@ -886,7 +894,7 @@ void TableWindow::resetAutoincrement()
if (res->isError())
notifyError(tr("An error occurred while trying to reset autoincrement value for table '%1': %2").arg(table, res->getErrorText()));
else
- notifyInfo(tr("Autoincrement value for table '%1' has been reset successfly.").arg(table));
+ notifyInfo(tr("Autoincrement value for table '%1' has been reset successfully.").arg(table));
}
void TableWindow::addColumn()
@@ -1259,8 +1267,8 @@ void TableWindow::tabChanged(int newTab)
{
if (isModified())
{
- int res = QMessageBox::question(this, tr("Uncommited changes"),
- tr("There are uncommited structure modifications. You cannot browse or edit data until you have "
+ int res = QMessageBox::question(this, tr("Uncommitted changes"),
+ tr("There are uncommitted structure modifications. You cannot browse or edit data until you have "
"table structure settled.\n"
"Do you want to commit the structure, or do you want to go back to the structure tab?"),
tr("Go back to structure tab"), tr("Commit modifications and browse data."));
@@ -1596,23 +1604,23 @@ bool TableWindow::handleInitialFocus()
return false;
}
-bool TableWindow::isUncommited() const
+bool TableWindow::isUncommitted() const
{
- return ui->dataView->isUncommited() || isModified();
+ return ui->dataView->isUncommitted() || isModified();
}
-QString TableWindow::getQuitUncommitedConfirmMessage() const
+QString TableWindow::getQuitUncommittedConfirmMessage() const
{
QString title = getMdiWindow()->windowTitle();
- if (ui->dataView->isUncommited() && isModified())
- return tr("Table window \"%1\" has uncommited structure modifications and data.").arg(title);
- else if (ui->dataView->isUncommited())
- return tr("Table window \"%1\" has uncommited data.").arg(title);
+ if (ui->dataView->isUncommitted() && isModified())
+ return tr("Table window \"%1\" has uncommitted structure modifications and data.").arg(title);
+ else if (ui->dataView->isUncommitted())
+ return tr("Table window \"%1\" has uncommitted data.").arg(title);
else if (isModified())
- return tr("Table window \"%1\" has uncommited structure modifications.").arg(title);
+ return tr("Table window \"%1\" has uncommitted structure modifications.").arg(title);
else
{
- qCritical() << "Unhandled message case in TableWindow::getQuitUncommitedConfirmMessage().";
+ qCritical() << "Unhandled message case in TableWindow::getQuitUncommittedConfirmMessage().";
return QString();
}
}
@@ -1630,3 +1638,18 @@ Db* TableWindow::getAssociatedDb() const
{
return db;
}
+
+void TableWindow::updateFont()
+{
+ QFont f = CFG_UI.Fonts.DataView.get();
+ QFontMetrics fm(f);
+
+ QTableView* views[] = {ui->structureView, ui->tableConstraintsView, ui->indexList, ui->triggerList};
+ for (QTableView* view : views)
+ {
+ view->setFont(f);
+ view->horizontalHeader()->setFont(f);
+ view->verticalHeader()->setFont(f);
+ view->verticalHeader()->setDefaultSectionSize(fm.height() + 4);
+ }
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
index d8738f1..f44af4f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
@@ -118,8 +118,8 @@ class GUI_API_EXPORT TableWindow : public MdiChild
QString getTable() const;
Db* getDb() const;
bool handleInitialFocus();
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
void useCurrentTableAsBaseForNew();
Db* getAssociatedDb() const;
@@ -193,7 +193,7 @@ class GUI_API_EXPORT TableWindow : public MdiChild
void checkIfTriggerDeleted(const QString& object);
void refreshStructure();
void commitStructure(bool skipWarning = false);
- void changesSuccessfullyCommited();
+ void changesSuccessfullyCommitted();
void changesFailedToCommit(int errorCode, const QString& errorText);
void rollbackStructure();
void resetAutoincrement();
@@ -237,6 +237,7 @@ class GUI_API_EXPORT TableWindow : public MdiChild
void nextTab();
void prevTab();
void updateTabsOrder();
+ void updateFont();
public slots:
void updateIndexes();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
index 07c927c..be805af 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
@@ -237,9 +237,10 @@ void ViewWindow::init()
connect(ui->outputColumnsTable->model(), SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), this, SLOT(updateQueryToolbarStatus()));
connect(ui->outputColumnsTable, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(updateQueryToolbarStatus()));
connect(CFG_UI.General.DataTabAsFirstInViews, SIGNAL(changed(const QVariant&)), this, SLOT(updateTabsOrder()));
+ connect(CFG_UI.Fonts.DataView, SIGNAL(changed(QVariant)), this, SLOT(updateFont()));
structureExecutor = new ChainExecutor(this);
- connect(structureExecutor, SIGNAL(success()), this, SLOT(changesSuccessfullyCommited()));
+ connect(structureExecutor, SIGNAL(success(SqlQueryPtr)), this, SLOT(changesSuccessfullyCommitted()));
connect(structureExecutor, SIGNAL(failure(int,QString)), this, SLOT(changesFailedToCommit(int,QString)));
setupCoverWidget();
@@ -253,6 +254,7 @@ void ViewWindow::init()
updateTabsOrder();
+ updateFont();
refreshTriggers();
updateQueryToolbarStatus();
updateTriggersState();
@@ -347,23 +349,23 @@ void ViewWindow::setSelect(const QString &selectSql)
ui->queryEdit->setPlainText(selectSql);
}
-bool ViewWindow::isUncommited() const
+bool ViewWindow::isUncommitted() const
{
- return ui->dataView->isUncommited() || isModified();
+ return ui->dataView->isUncommitted() || isModified();
}
-QString ViewWindow::getQuitUncommitedConfirmMessage() const
+QString ViewWindow::getQuitUncommittedConfirmMessage() const
{
QString title = getMdiWindow()->windowTitle();
- if (ui->dataView->isUncommited() && isModified())
- return tr("View window \"%1\" has uncommited structure modifications and data.").arg(title);
- else if (ui->dataView->isUncommited())
- return tr("View window \"%1\" has uncommited data.").arg(title);
+ if (ui->dataView->isUncommitted() && isModified())
+ return tr("View window \"%1\" has uncommitted structure modifications and data.").arg(title);
+ else if (ui->dataView->isUncommitted())
+ return tr("View window \"%1\" has uncommitted data.").arg(title);
else if (isModified())
- return tr("View window \"%1\" has uncommited structure modifications.").arg(title);
+ return tr("View window \"%1\" has uncommitted structure modifications.").arg(title);
else
{
- qCritical() << "Unhandled message case in ViewWindow::getQuitUncommitedConfirmMessage().";
+ qCritical() << "Unhandled message case in ViewWindow::getQuitUncommittedConfirmMessage().";
return QString();
}
}
@@ -569,8 +571,8 @@ void ViewWindow::tabChanged(int tabIdx)
{
if (isModified())
{
- int res = QMessageBox::question(this, tr("Uncommited changes"),
- tr("There are uncommited structure modifications. You cannot browse or edit data until you have "
+ int res = QMessageBox::question(this, tr("Uncommitted changes"),
+ tr("There are uncommitted structure modifications. You cannot browse or edit data until you have "
"the view structure settled.\n"
"Do you want to commit the structure, or do you want to go back to the structure tab?"),
tr("Go back to structure tab"), tr("Commit modifications and browse data."));
@@ -604,7 +606,7 @@ void ViewWindow::updateQueryToolbarStatus()
actionMap[REFRESH_QUERY]->setEnabled(existingView);
}
-void ViewWindow::changesSuccessfullyCommited()
+void ViewWindow::changesSuccessfullyCommitted()
{
QStringList sqls = structureExecutor->getQueries();
CFG->addDdlHistory(sqls.join("\n"), db->getName(), db->getPath());
@@ -624,9 +626,9 @@ void ViewWindow::changesSuccessfullyCommited()
updateWindowTitle();
if (oldView.compare(view, Qt::CaseInsensitive) == 0)
- notifyInfo(tr("Commited changes for view '%1' successfly.").arg(view));
+ notifyInfo(tr("Committed changes for view '%1' successfully.").arg(view));
else
- notifyInfo(tr("Commited changes for view '%1' (named before '%2') successfly.").arg(view, oldView));
+ notifyInfo(tr("Committed changes for view '%1' (named before '%2') successfully.").arg(view, oldView));
DBTREE->refreshSchema(db);
}
@@ -1044,3 +1046,18 @@ void ViewWindow::executeStructureChanges()
structureExecutor->exec();
widgetCover->show();
}
+
+void ViewWindow::updateFont()
+{
+ QFont f = CFG_UI.Fonts.DataView.get();
+ QFontMetrics fm(f);
+
+ QTableView* views[] = {ui->triggersList};
+ for (QTableView* view : views)
+ {
+ view->setFont(f);
+ view->horizontalHeader()->setFont(f);
+ view->verticalHeader()->setFont(f);
+ view->verticalHeader()->setDefaultSectionSize(fm.height() + 4);
+ }
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
index 65c3260..6144ad8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
@@ -73,8 +73,8 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
QString getDatabase() const;
QString getView() const;
void setSelect(const QString& selectSql);
- bool isUncommited() const;
- QString getQuitUncommitedConfirmMessage() const;
+ bool isUncommitted() const;
+ QString getQuitUncommittedConfirmMessage() const;
Db* getAssociatedDb() const;
static void staticInit();
@@ -147,7 +147,7 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
void executionFailed(const QString& errorMessage);
void tabChanged(int tabIdx);
void updateQueryToolbarStatus();
- void changesSuccessfullyCommited();
+ void changesSuccessfullyCommitted();
void changesFailedToCommit(int errorCode, const QString& errorText);
void updateTriggersState();
void nextTab();
@@ -165,6 +165,7 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
void updateDbRelatedUiElements();
void updateTabsOrder();
void triggerViewDoubleClicked(const QModelIndex& idx);
+ void updateFont();
public slots:
void refreshTriggers();
diff --git a/SQLiteStudio3/lang.tcl b/SQLiteStudio3/lang.tcl
index 4746a8d..d169450 100755
--- a/SQLiteStudio3/lang.tcl
+++ b/SQLiteStudio3/lang.tcl
@@ -71,7 +71,8 @@ switch -- $op {
if {$op == "update"} {
exec lupdate $f
} else {
- exec lrelease $f $::ERR_NULL
+ #exec lrelease $f $::ERR_NULL
+ exec lrelease $f
}
} res
if {$op == "release"} {
@@ -149,15 +150,18 @@ switch -- $op {
}
foreach p [list coreSQLiteStudio guiSQLiteStudio sqlitestudio sqlitestudiocli] {
+ # pro file
set fd [open $p/$p.pro r]
set data [read $fd]
close $fd
set ts "translations/${p}_$lang.ts"
- if {$op == "add"} {
+ if {$op == "add" && [string first $ts $data] == -1} {
set data [string map [list "TRANSLATIONS += " "TRANSLATIONS += $ts \\\n\t\t"] $data]
- } else {
+ } elseif {$op == "remove" && [string first $ts $data] > -1} {
regsub -- "$ts\\s*(\\\\)?\n\\s*" $data "" data
+ } else {
+ continue
}
set fd [open $p/$p.pro w+]
@@ -166,19 +170,46 @@ switch -- $op {
puts "Updated $p.pro"
}
+
+ foreach p [list coreSQLiteStudio guiSQLiteStudio sqlitestudio sqlitestudiocli] {
+ # qrc file
+ set fd [open $p/$p.qrc r]
+ set data [read $fd]
+ close $fd
+
+ set qm "translations/${p}_$lang.qm"
+ if {$op == "add" && [string first $qm $data] == -1} {
+ set data [string map [list "<qresource prefix=\"/msg\">" "<qresource prefix=\"/msg\">\n <file>$qm</file>"] $data]
+ } elseif {$op == "remove" && [string first $qm $data] > -1} {
+ regsub -- "\\s*$qm\\s*\n" $data "" data
+ } else {
+ continue
+ }
+
+ set fd [open $p/$p.qrc w+]
+ puts $fd $data
+ close $fd
+
+ puts "Updated $p.qrc"
+ }
foreach d [glob -directory ../Plugins -tails -nocomplain *] {
if {![file isdirectory ../Plugins/$d]} continue
+ # pro file
set fd [open ../Plugins/$d/$d.pro r]
set data [read $fd]
close $fd
-
+
+ if {[string first "TRANSLATIONS +=" $data] == -1} continue
+
set ts "${d}_$lang.ts"
- if {$op == "add"} {
+ if {$op == "add" && [string first $ts $data] == -1} {
set data [string map [list "TRANSLATIONS += " "TRANSLATIONS += $ts \\\n\t\t"] $data]
- } else {
+ } elseif {$op == "remove" && [string first $ts $data] > -1} {
regsub -- "$ts\\s*(\\\\)?\n\\s*" $data "" data
+ } else {
+ continue
}
set fd [open ../Plugins/$d/$d.pro w+]
@@ -187,6 +218,41 @@ switch -- $op {
puts "Updated $d.pro"
}
+
+ foreach d [glob -directory ../Plugins -tails -nocomplain *] {
+ # qrc file
+ if {![file isdirectory ../Plugins/$d]} continue
+ if {[file exists ../Plugins/$d/$d.qrc]} {
+ set fname ../Plugins/$d/$d.qrc
+ set fnameOnly $d.qrc
+ } elseif {[file exists ../Plugins/$d/[string tolower $d].qrc]} {
+ set fname ../Plugins/$d/[string tolower $d].qrc
+ set fnameOnly [string tolower $d].qrc
+ } else {
+ continue
+ }
+
+ set fd [open $fname r]
+ set data [read $fd]
+ close $fd
+
+ if {[string first "<qresource prefix=\"/msg\">" $data] == -1} continue
+
+ set qm "${d}_$lang.qm"
+ if {$op == "add" && [string first $qm $data] == -1} {
+ set data [string map [list "<qresource prefix=\"/msg\">" "<qresource prefix=\"/msg\">\n <file>$qm</file>"] $data]
+ } elseif {$op == "remove" && [string first $qm $data] > -1} {
+ regsub -- "\\s*$qm\\s*\n" $data "" data
+ } else {
+ continue
+ }
+
+ set fd [open $fname w+]
+ puts $fd $data
+ close $fd
+
+ puts "Updated $fnameOnly"
+ }
}
default {
usage
diff --git a/SQLiteStudio3/sqlitestudio/main.cpp b/SQLiteStudio3/sqlitestudio/main.cpp
index 94ee80e..829d657 100644
--- a/SQLiteStudio3/sqlitestudio/main.cpp
+++ b/SQLiteStudio3/sqlitestudio/main.cpp
@@ -53,6 +53,7 @@ QString uiHandleCmdLineArgs()
QCommandLineOption sqlDebugDbNameOption("debug-sql-db", QObject::tr("Limits SQL query messages to only the given <database>."), QObject::tr("database"));
QCommandLineOption executorDebugOption("debug-query-executor", QObject::tr("Enables debugging of SQLiteStudio's query executor."));
QCommandLineOption listPluginsOption("list-plugins", QObject::tr("Lists plugins installed in the SQLiteStudio and quits."));
+ QCommandLineOption masterConfigOption("master-config", QObject::tr("Points to the master configuration file. Read manual at wiki page for more details."), QObject::tr("SQLiteStudio settings file"));
parser.addOption(debugOption);
parser.addOption(debugStdOutOption);
parser.addOption(debugFileOption);
@@ -60,6 +61,7 @@ QString uiHandleCmdLineArgs()
parser.addOption(sqlDebugOption);
parser.addOption(sqlDebugDbNameOption);
parser.addOption(executorDebugOption);
+ parser.addOption(masterConfigOption);
parser.addOption(listPluginsOption);
parser.addPositionalArgument(QObject::tr("file"), QObject::tr("Database file to open"));
@@ -77,6 +79,9 @@ QString uiHandleCmdLineArgs()
if (parser.isSet(listPluginsOption))
listPlugins = true;
+ if (parser.isSet(masterConfigOption))
+ Config::setMasterConfigFile(parser.value(masterConfigOption));
+
QStringList args = parser.positionalArguments();
if (args.size() > 0)
return args[0];
diff --git a/SQLiteStudio3/sqlitestudio/sqlitestudio.pro b/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
index d8384d8..42aa7dc 100644
--- a/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
+++ b/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
@@ -33,10 +33,10 @@ LIBS += -lcoreSQLiteStudio -lguiSQLiteStudio
SOURCES += main.cpp
-TRANSLATIONS += translations/sqlitestudio_it.ts \
+TRANSLATIONS += translations/sqlitestudio_de.ts \
+ translations/sqlitestudio_it.ts \
translations/sqlitestudio_zh_CN.ts \
translations/sqlitestudio_sk.ts \
- translations/sqlitestudio_de.ts \
translations/sqlitestudio_ru.ts \
translations/sqlitestudio_pt_BR.ts \
translations/sqlitestudio_fr.ts \
@@ -74,3 +74,5 @@ RESOURCES += \
+
+
diff --git a/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc b/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc
index 1abc1e0..9942536 100644
--- a/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc
+++ b/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc
@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/msg">
+ <file>translations/sqlitestudio_de.qm</file>
<file>translations/sqlitestudio_pl.qm</file>
<file>translations/sqlitestudio_ru.qm</file>
<file>translations/sqlitestudio_fr.qm</file>
@@ -7,3 +8,6 @@
<file>translations/sqlitestudio_zh_CN.qm</file>
</qresource>
</RCC>
+
+
+
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
index ff1c85b..fb20723 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
<context>
<name>QObject</name>
<message>
@@ -61,18 +61,28 @@
<translation>Listet die in SQLiteStudio installierten Plugins auf und beendet.</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation>Datei</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation>Zu öffnende Datenbankdatei</translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts
index 0130240..d58025f 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
<context>
<name>QObject</name>
<message>
@@ -59,18 +59,28 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.qm
index 0165b48..9d59c25 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.qm
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.qm
Binary files differ
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts
index 78be06b..fc7e350 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts
@@ -32,7 +32,7 @@
<message>
<location filename="../main.cpp" line="51"/>
<source>Enables Lemon parser debug messages for SQL code assistant.</source>
- <translation>Message de déboguage avec l&rsquo;analyseur Lemon pour un assistant code SQL.</translation>
+ <translation>Message de déboguage avec l’analyseur Lemon pour un assistant code SQL.</translation>
</message>
<message>
<location filename="../main.cpp" line="52"/>
@@ -51,22 +51,37 @@
</message>
<message>
<location filename="../main.cpp" line="54"/>
+ <source>Enables debugging of SQLiteStudio&apos;s query executor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="55"/>
<source>Lists plugins installed in the SQLiteStudio and quits.</source>
<translation>Listes des plugins installés dans SQLiteStudio et quitter.</translation>
</message>
<message>
- <location filename="../main.cpp" line="63"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation>Fichier</translation>
</message>
<message>
- <location filename="../main.cpp" line="63"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation>Fichier de la base de données à ouvrir</translation>
</message>
<message>
- <location filename="../main.cpp" line="86"/>
- <location filename="../main.cpp" line="102"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts
index 9cd5c61..88ce9ce 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="it_IT">
+<TS version="2.1" language="it_IT">
<context>
<name>QObject</name>
<message>
@@ -59,18 +59,28 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm
index 2da6fe3..df5348b 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm
Binary files differ
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts
index 700bb5e..365a823 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pl_PL">
+<TS version="2.1" language="pl_PL">
<context>
<name>QObject</name>
<message>
@@ -59,5 +59,13 @@
<source>Enables debugging of SQLiteStudio&apos;s query executor.</source>
<translation>Włącza debugowanie wykonawcy zapytań w SQLiteStudio.</translation>
</message>
+ <message>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
</TS>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts
index b637de7..95025b4 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<TS version="2.1" language="pt_BR">
<context>
<name>QObject</name>
<message>
@@ -59,18 +59,28 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm
index e6a4c31..b5a73d2 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm
Binary files differ
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts
index 9808fe7..65f0cf4 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<TS version="2.1" language="ru_RU">
<context>
<name>QObject</name>
<message>
@@ -51,7 +51,7 @@
<message>
<location filename="../main.cpp" line="54"/>
<source>Enables debugging of SQLiteStudio&apos;s query executor.</source>
- <translation type="unfinished"></translation>
+ <translation>Включает отладку обработчика запросов SQLiteStudio.</translation>
</message>
<message>
<location filename="../main.cpp" line="55"/>
@@ -59,18 +59,28 @@
<translation>Выводит список установленных в SQLiteStudio модулей и осуществляет выход.</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation>Указывает основной файл конфигурации. Детальная информация содержится в инструкции на wiki-странице.</translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation>Файл настроек SQLiteStudio</translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation>файл</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation>Файл базы данных для открытия</translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation>Ошибка</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts
index 496f44d..6c08225 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_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>QObject</name>
<message>
@@ -59,18 +59,28 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation>Súbor</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation>Chyba</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
index d5b76d7..0417421 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="zh_CN">
<context>
<name>QObject</name>
<message>
@@ -59,18 +59,28 @@
<translation>列出已安装的插件并退出。</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="56"/>
+ <source>Points to the master configuration file. Read manual at wiki page for more details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="56"/>
+ <source>SQLiteStudio settings file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="67"/>
<source>file</source>
<translation>文件</translation>
</message>
<message>
- <location filename="../main.cpp" line="65"/>
+ <location filename="../main.cpp" line="67"/>
<source>Database file to open</source>
<translation>要打开的数据库文件</translation>
</message>
<message>
- <location filename="../main.cpp" line="89"/>
- <location filename="../main.cpp" line="105"/>
+ <location filename="../main.cpp" line="94"/>
+ <location filename="../main.cpp" line="110"/>
<source>Error</source>
<translation>错误</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/cli.cpp b/SQLiteStudio3/sqlitestudiocli/cli.cpp
index 87c4f93..df7e7cd 100644
--- a/SQLiteStudio3/sqlitestudiocli/cli.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/cli.cpp
@@ -202,7 +202,7 @@ bool CLI::isComplete(const QString& contents) const
dialect = getCurrentDb()->getDialect();
bool complete = true;
- splitQueries(contents, dialect, true, &complete);
+ splitQueries(contents, dialect, true, false, &complete);
return complete;
}
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.cpp b/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.cpp
index 3f2c4b3..7ae78e5 100644
--- a/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.cpp
@@ -88,7 +88,6 @@ void CliCommandSql::defineSyntax()
void CliCommandSql::printResultsClassic(QueryExecutor* executor, SqlQueryPtr results)
{
- int metaColumns = executor->getMetaColumnCount();
int resultColumnCount = executor->getResultColumns().size();
// Columns
@@ -105,7 +104,7 @@ void CliCommandSql::printResultsClassic(QueryExecutor* executor, SqlQueryPtr res
{
row = results->next();
i = 0;
- values = row->valueList().mid(metaColumns);
+ values = row->valueList().mid(0, resultColumnCount);
foreach (QVariant value, values)
{
qOut << getValueString(value);
@@ -124,7 +123,6 @@ void CliCommandSql::printResultsFixed(QueryExecutor* executor, SqlQueryPtr resul
{
QList<QueryExecutor::ResultColumnPtr> resultColumns = executor->getResultColumns();
int resultColumnsCount = resultColumns.size();
- int metaColumns = executor->getMetaColumnCount();
int termCols = getCliColumns();
int baseColWidth = termCols / resultColumns.size() - 1;
@@ -157,7 +155,7 @@ void CliCommandSql::printResultsFixed(QueryExecutor* executor, SqlQueryPtr resul
// Data
while (results->hasNext())
- printColumnDataRow(widths, results->next(), metaColumns);
+ printColumnDataRow(widths, results->next(), resultColumnsCount);
qOut.flush();
}
@@ -181,7 +179,6 @@ void CliCommandSql::printResultsColumns(QueryExecutor* executor, SqlQueryPtr res
// Preload data (we will calculate column widths basing on real values)
QList<SqlResultsRowPtr> allRows = results->getAll();
- int metaColumns = executor->getMetaColumnCount();
// Get widths of each column in every data row, remember the longest ones
QList<SortedColumnWidth*> columnWidths;
@@ -199,7 +196,7 @@ void CliCommandSql::printResultsColumns(QueryExecutor* executor, SqlQueryPtr res
{
for (int i = 0; i < resultColumnsCount; i++)
{
- dataLength = row->value(metaColumns + i).toString().length();
+ dataLength = row->value(i).toString().length();
columnWidths[i]->setMinDataWidth(dataLength);
}
}
@@ -232,7 +229,7 @@ void CliCommandSql::printResultsColumns(QueryExecutor* executor, SqlQueryPtr res
printColumnHeader(finalWidths, headerNames);
foreach (SqlResultsRowPtr row, allRows)
- printColumnDataRow(finalWidths, row, metaColumns);
+ printColumnDataRow(finalWidths, row, resultColumnsCount);
qOut.flush();
}
@@ -240,7 +237,7 @@ void CliCommandSql::printResultsColumns(QueryExecutor* executor, SqlQueryPtr res
void CliCommandSql::printResultsRowByRow(QueryExecutor* executor, SqlQueryPtr results)
{
// Columns
- int metaColumns = executor->getMetaColumnCount();
+ int resultColumnCount = executor->getResultColumns().size();
int colWidth = 0;
foreach (const QueryExecutor::ResultColumnPtr& resCol, executor->getResultColumns())
{
@@ -265,7 +262,7 @@ void CliCommandSql::printResultsRowByRow(QueryExecutor* executor, SqlQueryPtr re
i = 0;
rowCntString = " " + rowCntTemplate.arg(rowCnt) + " ";
qOut << center(rowCntString, termWidth - 1, '-') << "\n";
- foreach (QVariant value, row->valueList().mid(metaColumns))
+ foreach (QVariant value, row->valueList().mid(0, resultColumnCount))
{
qOut << columns[i] + ": " + getValueString(value) << "\n";
i++;
@@ -379,11 +376,11 @@ void CliCommandSql::printColumnHeader(const QList<int>& widths, const QStringLis
qOut << line.join("+");
}
-void CliCommandSql::printColumnDataRow(const QList<int>& widths, const SqlResultsRowPtr& row, int rowIdOffset)
+void CliCommandSql::printColumnDataRow(const QList<int>& widths, const SqlResultsRowPtr& row, int resultColumnCount)
{
int i = 0;
QStringList line;
- foreach (const QVariant& value, row->valueList().mid(rowIdOffset))
+ foreach (const QVariant& value, row->valueList().mid(0, resultColumnCount))
{
line << pad(getValueString(value).left(widths[i]), widths[i], ' ');
i++;
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.h b/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.h
index 5423a85..1921063 100644
--- a/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.h
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommandsql.h
@@ -55,7 +55,7 @@ class CliCommandSql : public CliCommand
void printResultsRowByRow(QueryExecutor *executor, SqlQueryPtr results);
void shrinkColumns(QList<SortedColumnWidth*>& columnWidths, int termCols, int resultColumnsCount, int totalWidth);
void printColumnHeader(const QList<int>& widths, const QStringList& columns);
- void printColumnDataRow(const QList<int>& widths, const SqlResultsRowPtr& row, int rowIdOffset);
+ void printColumnDataRow(const QList<int>& widths, const SqlResultsRowPtr& row, int rowIdCount);
QString getValueString(const QVariant& value);
diff --git a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
index 705a00c..9e402d5 100644
--- a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
+++ b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
@@ -27,10 +27,10 @@ linux {
}
}
-TRANSLATIONS += translations/sqlitestudiocli_it.ts \
+TRANSLATIONS += translations/sqlitestudiocli_de.ts \
+ translations/sqlitestudiocli_it.ts \
translations/sqlitestudiocli_zh_CN.ts \
translations/sqlitestudiocli_sk.ts \
- translations/sqlitestudiocli_de.ts \
translations/sqlitestudiocli_ru.ts \
translations/sqlitestudiocli_pt_BR.ts \
translations/sqlitestudiocli_fr.ts \
@@ -126,3 +126,5 @@ RESOURCES += \
+
+
diff --git a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc
index 46f8566..025053f 100644
--- a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc
+++ b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc
@@ -1,5 +1,8 @@
<RCC>
<qresource prefix="/msg">
+ <file>translations/sqlitestudiocli_de.qm</file>
+
+
<file>translations/sqlitestudiocli_pl.qm</file>
<file>translations/sqlitestudiocli_ru.qm</file>
<file>translations/sqlitestudiocli_fr.qm</file>
@@ -7,3 +10,8 @@
<file>translations/sqlitestudiocli_zh_CN.qm</file>
</qresource>
</RCC>
+
+
+
+
+
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
index 1eb52bd..c00f2e6 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
<context>
<name>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
index 3ed0731..7c2d175 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
<context>
<name>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.qm b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.qm
index 289a90f..00760ec 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.qm
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.qm
Binary files differ
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
index 5a505a0..3e4c3e5 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
@@ -6,17 +6,17 @@
<message>
<location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
- <translation>Base de données actuelle: %1</translation>
+ <translation>Base de données actuelle : %1</translation>
</message>
<message>
<location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
- <translation>Aucune base de données en cours n&rsquo;est activée.</translation>
+ <translation>Aucune base de données en cours n’est activée.</translation>
</message>
<message>
<location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
- <translation>Touche %1 pour l&rsquo;aide</translation>
+ <translation>Touche %1 pour l’aide</translation>
</message>
<message>
<location filename="../cli.cpp" line="257"/>
@@ -26,7 +26,7 @@
<message>
<location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
- <translation>Impossible d&rsquo;ajouter la base de données %1 à la liste.</translation>
+ <translation>Impossible d’ajouter la base de données %1 à la liste.</translation>
</message>
<message>
<location filename="../cli.cpp" line="290"/>
@@ -39,7 +39,7 @@
<message>
<location filename="../commands/clicommand.cpp" line="107"/>
<source>Usage: %1%2</source>
- <translation>Uttilisation: %1%2</translation>
+ <translation>Uttilisation : %1%2</translation>
</message>
</context>
<context>
@@ -47,12 +47,12 @@
<message>
<location filename="../commands/clicommandadd.cpp" line="9"/>
<source>Could not add database %1 to list.</source>
- <translation>Impossible d&rsquo;ajouter le base de données %1 à la liste.</translation>
+ <translation>Impossible d’ajouter le base de données %1 à la liste.</translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="14"/>
<source>Database added: %1</source>
- <translation>Base de données ajoutée: %1</translation>
+ <translation>Base de données ajoutée : %1</translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="19"/>
@@ -62,7 +62,7 @@
<message>
<location filename="../commands/clicommandadd.cpp" line="24"/>
<source>Adds given database pointed by &lt;path&gt; with given &lt;name&gt; to list the databases list. The &lt;name&gt; is just a symbolic name that you can later refer to. Just pick any unique name. For list of databases already on the list use %1 command.</source>
- <translation>Ajoutez la base de données pointée par &lt;path&gt;nommée &lt;name&gt;à la liste des baszs de données. Le nom&lt;name&gt;est seulement un nom symbilique que vous pourrez y référer. Choississez un nom unique. Pour une base de données figuant dans la liste utilisez la commande %1.</translation>
+ <translation>Ajoutez la base de données pointée par &lt;chemin&gt; nommée &lt;nom&gt; à la liste des baszs de données. Le &lt;nom&gt;est seulement un nom symbolique que vous pourrez y référer. Choississez un nom unique. Pour une base de données figuant dans la liste utilisez la commande %1.</translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="34"/>
@@ -82,12 +82,12 @@
<message>
<location filename="../commands/clicommandcd.cpp" line="10"/>
<source>Changed directory to: %1</source>
- <translation>Renommer le repertoire en: %1</translation>
+ <translation>Renommer le repertoire en : %1</translation>
</message>
<message>
<location filename="../commands/clicommandcd.cpp" line="12"/>
<source>Could not change directory to: %1</source>
- <translation>Impossible de renommer le répertoire en: %1</translation>
+ <translation>Impossible de renommer le répertoire en : %1</translation>
</message>
<message>
<location filename="../commands/clicommandcd.cpp" line="17"/>
@@ -97,7 +97,7 @@
<message>
<location filename="../commands/clicommandcd.cpp" line="22"/>
<source>Very similar command to &apos;cd&apos; known from Unix systems and Windows. It requires a &lt;path&gt; argument to be passed, therefore calling %1 will always cause a change of the directory. To learn what&apos;s the current working directory use %2 command and to list contents of the current working directory use %3 command.</source>
- <translation>La commande «&nbsp;cd&nbsp;» est connu du système UNIX et Windows. Elle nécessite le paramètre &lt;chemin&gt; passé avant l&rsquo;appel %1 qui occasionnera une modification du répertoire. Pour connaitre qu&rsquo;elle est le répertoire courant utiliser la commande %2 et pour lister le contenu de celui-ci utilisez la commande %3.</translation>
+ <translation>La commande « cd » est connu du système UNIX et Windows. Elle nécessite le paramètre &lt;chemin&gt; passé avant l’appel %1 qui occasionnera une modification du répertoire. Pour connaitre qu’elle est le répertoire courant utiliser la commande %2 et pour lister le contenu de celui-ci utilisez la commande %3.</translation>
</message>
<message>
<location filename="../commands/clicommandcd.cpp" line="33"/>
@@ -111,7 +111,7 @@
<message>
<location filename="../commands/clicommandclose.cpp" line="10"/>
<source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
- <translation>Impossible d&rsquo;appeler %1 lorsqu&rsquo;aucune base de données n&rsquo;est active. Spécifiez la base de données active avec la commande %2 ou par le nom de la base de données par %3.</translation>
+ <translation>Impossible d’appeler %1 lorsqu’aucune base de données n’est active. Spécifiez la base de données active avec la commande %2 ou par le nom de la base de données par %3.</translation>
</message>
<message>
<location filename="../commands/clicommandclose.cpp" line="21"/>
@@ -122,17 +122,17 @@
<message>
<location filename="../commands/clicommandclose.cpp" line="24"/>
<source>No such database: %1. Use %2 to see list of known databases.</source>
- <translation>Aucune base de données:%1. Utilisez %2 pour avoir la liste des bases de données connues.</translation>
+ <translation>Aucune base de données : %1. Utilisez %2 pour avoir la liste des bases de données connues.</translation>
</message>
<message>
<location filename="../commands/clicommandclose.cpp" line="35"/>
<source>closes given (or current) database</source>
- <translation>Fermeture d&rsquo;une de données sélectionnées (ou actuelle)</translation>
+ <translation>Fermeture d’une de données sélectionnées (ou actuelle)</translation>
</message>
<message>
<location filename="../commands/clicommandclose.cpp" line="40"/>
<source>Closes database connection. If the database was already closed, nothing happens. If &lt;name&gt; is provided, it should be name of the database to close (as printed by %1 command). The the &lt;name&gt; is not provided, then current working database is closed (see help for %2 for details).</source>
- <translation>Fermeture de base de données connectée. . Si la base est déjà fermée, aucune action. Si &lt;name&gt; est fourni, c&rsquo;est celle ainsi qui sera close (as printed by %1 command). Si &lt;name&gt; n&rsquo;est pas fourni, la base actuelle est close (voir l&rsquo;aide %2 pour plus de détails).</translation>
+ <translation>Fermeture de base de données connectée. . Si la base est déjà fermée, aucune action. Si &lt;name&gt; est fourni, c’est celle ainsi qui sera close (as printed by %1 command). Si &lt;name&gt; n’est pas fourni, la base actuelle est close (voir l’aide %2 pour plus de détails).</translation>
</message>
<message>
<location filename="../commands/clicommandclose.cpp" line="50"/>
@@ -146,12 +146,12 @@
<message>
<location filename="../commands/clicommanddblist.cpp" line="12"/>
<source>No current working database defined.</source>
- <translation>Aucune base de données actuelle n&rsquo;est définie.</translation>
+ <translation>Aucune base de données actuelle n’est définie.</translation>
</message>
<message>
<location filename="../commands/clicommanddblist.cpp" line="18"/>
<source>Databases:</source>
- <translation>Base de données:</translation>
+ <translation>Base de données :</translation>
</message>
<message>
<location filename="../commands/clicommanddblist.cpp" line="23"/>
@@ -195,7 +195,7 @@
<message>
<location filename="../commands/clicommanddblist.cpp" line="75"/>
<source>Prints list of databases registered in the SQLiteStudio. Each database on the list can be in open or closed state and %1 tells you that. The current working database (aka default database) is also marked on the list with &apos;*&apos; at the start of its name. See help for %2 command to learn about the default database.</source>
- <translation>Imprimez la liste des bases de données enregistrées sous SQLiteStudio. Chaque base se données de la liste peut être ouverte ou close et %1 vous indique lesquellest.La base de données actuelle est aussi marquée dans la liste par «&nbsp;*&nbsp;» en début de nom. Voir l&rsquo;aide la commande %2 pour en savoir plus sur la base de données actuelle.</translation>
+ <translation>Imprimez la liste des bases de données enregistrées sous SQLiteStudio. Chaque base se données de la liste peut être ouverte ou close et %1 vous indique lesquellest.La base de données actuelle est aussi marquée dans la liste par « * » en début de nom. Voir l’aide la commande %2 pour en savoir plus sur la base de données actuelle.</translation>
</message>
</context>
<context>
@@ -205,14 +205,14 @@
<source>No working database is set.
Call %1 command to set working database.
Call %2 to see list of all databases.</source>
- <translation type="unfinished">Aucune base de données de travail n&rsquo;est activée.
+ <translation type="unfinished">Aucune base de données de travail n’est activée.
Appelez la commande %1 pour activer la base de données active.
Appelez %2 pour voir la liste de toutes les bases de données.</translation>
</message>
<message>
<location filename="../commands/clicommanddesc.cpp" line="26"/>
<source>Database is not open.</source>
- <translation type="unfinished">La base de données n&rsquo;est pas ouverte.</translation>
+ <translation type="unfinished">La base de données n’est pas ouverte.</translation>
</message>
<message>
<location filename="../commands/clicommanddesc.cpp" line="35"/>
@@ -277,7 +277,7 @@ Appelez %2 pour voir la liste de toutes les bases de données.</translation>
<source>This is very similar to &apos;dir&apos; command known from Windows and &apos;ls&apos; command from Unix systems.
You can pass &lt;pattern&gt; with wildcard characters to filter output.</source>
- <translation>Ceci est très semblable à la commande «&nbsp;dir&nbsp;» de Windows et à la commande de «&nbsp;ls&nbsp;» de systèmes Unix.
+ <translation>Ceci est très semblable à la commande « dir » de Windows et à la commande de « ls » de systèmes Unix.
You pouvez utiliser les caractères de remplacement &lt;pattern&gt; npour filtrer la sortie.</translation>
</message>
@@ -292,12 +292,12 @@ You pouvez utiliser les caractères de remplacement &lt;pattern&gt; npour filtre
<message>
<location filename="../commands/clicommandexit.cpp" line="12"/>
<source>quits the application</source>
- <translation>Quitter l&rsquo;application</translation>
+ <translation>Quitter l’application</translation>
</message>
<message>
<location filename="../commands/clicommandexit.cpp" line="17"/>
<source>Quits the application. Settings are stored in configuration file and will be restored on next startup.</source>
- <translation>Quittez l&rsquo;apllication. Le paramètrage est stocké dans la configuration et sera restauré au prochain lancement.</translation>
+ <translation>Quittez l’apllication. Le paramètrage est stocké dans la configuration et sera restauré au prochain lancement.</translation>
</message>
</context>
<context>
@@ -305,7 +305,7 @@ You pouvez utiliser les caractères de remplacement &lt;pattern&gt; npour filtre
<message>
<location filename="../commands/clicommandhelp.cpp" line="16"/>
<source>shows this help message</source>
- <translation>Affichagez l&rsquo;aide du message</translation>
+ <translation>Affichagez l’aide du message</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="21"/>
@@ -318,9 +318,9 @@ You can always execute any command with exactly single &apos;--help&apos; option
<translation>Utilisez %1 pour connaitre certaines commandes supportées par la ligne de commande (CLI) de SQLiteStudio.
Pour voir les commandes supportées, saississez %2 sana arguments.
-En utilisant le nom de &lt;command&gt;, vous ajouter le caractère spécial(«&nbsp;%3&nbsp;»).
+En utilisant le nom de &lt;command&gt;, vous ajouter le caractère spécial(« %3 »).
-Vous pouvez exécuter n&rsquo;importe quelle commande avec l&rsquo;option «&nbsp;--help&nbsp;» pour voir l&rsquo;aide pour cette commande. C&rsquo;est une alternative à : %1 &lt;commande&gt;.</translation>
+Vous pouvez exécuter n’importe quelle commande avec l’option « --help » pour voir l’aide pour cette commande. C’est une alternative à : %1 &lt;commande&gt;.</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="33"/>
@@ -331,22 +331,22 @@ Vous pouvez exécuter n&rsquo;importe quelle commande avec l&rsquo;option «&nbs
<message>
<location filename="../commands/clicommandhelp.cpp" line="42"/>
<source>No such command: %1</source>
- <translation>Aucune telle commande: %1</translation>
+ <translation>Aucune telle commande : %1</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="43"/>
<source>Type &apos;%1&apos; for list of available commands.</source>
- <translation>Saisissez «&nbsp;%1&nbsp;» pour la liste des commandes valides.</translation>
+ <translation>Saisissez « %1 » pour la liste des commandes valides.</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="52"/>
<source>Usage: %1%2</source>
- <translation>Utilisation: %1%2</translation>
+ <translation>Utilisation : %1%2</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="62"/>
<source>Aliases: %1</source>
- <translation>Pseudomynes: %1</translation>
+ <translation>Pseudomynes : %1</translation>
</message>
</context>
<context>
@@ -354,12 +354,12 @@ Vous pouvez exécuter n&rsquo;importe quelle commande avec l&rsquo;option «&nbs
<message>
<location filename="../commands/clicommandhistory.cpp" line="23"/>
<source>Current history limit is set to: %1</source>
- <translation>L&rsquo;historique actuel est limité à: %1</translation>
+ <translation>L’historique actuel est limité à : %1</translation>
</message>
<message>
<location filename="../commands/clicommandhistory.cpp" line="39"/>
<source>prints history or erases it</source>
- <translation>Imprimez l&rsquo;historique ou supprimez le</translation>
+ <translation>Imprimez l’historique ou supprimez le</translation>
</message>
<message>
<location filename="../commands/clicommandhistory.cpp" line="44"/>
@@ -368,7 +368,7 @@ Vous pouvez exécuter n&rsquo;importe quelle commande avec l&rsquo;option «&nbs
When the -c or --clear option is passed, then the history gets erased.
When the -l or --limit option is passed, it sets the new history entries limit. It requires an additional argument saying how many entries do you want the history to be limited to.
Use -ql or --querylimit option to see the current limit value.</source>
- <translation>Lorqu&rsquo;aucun argument n&rsquo;est passé,cette commande imprime l&rsquo;histoirique. Chaque entrée est séparée par une ligne vide, permettant une lecture aisée.
+ <translation>Lorqu’aucun argument n’est passé,cette commande imprime l’histoirique. Chaque entrée est séparée par une ligne vide, permettant une lecture aisée.
When the -c or --clear option is passed, then the history gets erased.
When the -l or --limit option is passed, it sets the new history entries limit. It requires an additional argument saying how many entries do you want the history to be limited to.
@@ -387,7 +387,7 @@ Use -ql or --querylimit option to see the current limit value.</translation>
<message>
<location filename="../commands/clicommandhistory.cpp" line="75"/>
<source>Invalid number: %1</source>
- <translation>Nombre invalide: %1</translation>
+ <translation>Nombre invalide : %1</translation>
</message>
<message>
<location filename="../commands/clicommandhistory.cpp" line="80"/>
@@ -400,17 +400,17 @@ Use -ql or --querylimit option to see the current limit value.</translation>
<message>
<location filename="../commands/clicommandmode.cpp" line="9"/>
<source>Current results printing mode: %1</source>
- <translation>Résultats actuels du mode d&rsquo; impression: %1</translation>
+ <translation>Résultats actuels du mode d’ impression : %1</translation>
</message>
<message>
<location filename="../commands/clicommandmode.cpp" line="16"/>
<source>Invalid results printing mode: %1</source>
- <translation>Résultats invalides du mode d&rsquo; impression: %1</translation>
+ <translation>Résultats invalides du mode d’ impression : %1</translation>
</message>
<message>
<location filename="../commands/clicommandmode.cpp" line="21"/>
<source>New results printing mode: %1</source>
- <translation>Résultats actuels du mode d&rsquo; impression: %1</translation>
+ <translation>Résultats actuels du mode d’ impression : %1</translation>
</message>
<message>
<location filename="../commands/clicommandmode.cpp" line="26"/>
@@ -433,7 +433,7 @@ The COLUMNS mode is similar to FIXED mode, except it tries to be smart and make
ATTENTION! The COLUMNS mode reads all the results from the query at once in order to evaluate column widhts, therefore it is dangerous to use this mode when working with huge result sets. Keep in mind that this mode will load entire result set into memory.
The ROW mode is recommended if you need to see whole values and you don&apos;t expect many rows to be displayed, because this mode displays a line of output per each column, so you&apos;ll get 10 lines for single row with 10 columns, then if you have 10 of such rows, you will get 100 lines of output (+1 extra line per each row, to separate rows from each other).</source>
- <translation>Sans argument, le format de sortie actuel de la requête est utilisé. Avec &lt;mode&gt;c&apos;est un de ces mode qui est utilisé:
+ <translation>Sans argument, le format de sortie actuel de la requête est utilisé. Avec &lt;mode&gt;c&apos;est un de ces mode qui est utilisé :
- CLASSIC - columns are separated by a comma, not aligned,
- FIXED - columns have equal and fixed width, they always fit into terminal window width, but the data in columns can be cut off,
- COLUMNS - like FIXED, but smarter (do not use with huge result sets, see details below),
@@ -444,7 +444,7 @@ The CLASSIC mode is recommended if you want to see all the data, but you don&apo
The FIXED mode is recommended if you want a readable output and you don&apos;t care about long data values. Columns will be aligned, making the output a nice table. The width of columns is calculated from width of the console window and a number of columns.
The COLUMNS mode is similar to FIXED mode, except it tries to be smart and make columns with shorter values more thin, while columns with longer values get more space. First to shrink are columns with longest headers (so the header names are to be cut off as first), then columns with the longest values are shrinked, up to the moment when all columns fit into terminal window.
-ATTENTION! The COLUMNS mode reads all the results from the query at once in order to evaluate column widhts, therefore it is dangerous to use this mode when working with huge result sets. Keep in mind that this mode will load entire result set into memory.
+ATTENTION ! The COLUMNS mode reads all the results from the query at once in order to evaluate column widhts, therefore it is dangerous to use this mode when working with huge result sets. Keep in mind that this mode will load entire result set into memory.
The ROW mode is recommended if you need to see whole values and you don&apos;t expect many rows to be displayed, because this mode displays a line of output per each column, so you&apos;ll get 10 lines for single row with 10 columns, then if you have 10 of such rows, you will get 100 lines of output (+1 extra line per each row, to separate rows from each other).</translation>
</message>
@@ -454,17 +454,17 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandnullvalue.cpp" line="9"/>
<source>Current NULL representation string: %1</source>
- <translation>Représentation actuelle d&rsquo;une chaine NULL: %1</translation>
+ <translation>Représentation actuelle d’une chaine NULL : %1</translation>
</message>
<message>
<location filename="../commands/clicommandnullvalue.cpp" line="15"/>
<source>tells or changes the NULL representation string</source>
- <translation>Modifiez la représentation d&rsquo;une chaine NULL</translation>
+ <translation>Modifiez la représentation d’une chaine NULL</translation>
</message>
<message>
<location filename="../commands/clicommandnullvalue.cpp" line="20"/>
<source>If no argument was passed, it tells what&apos;s the current NULL value representation (that is - what is printed in place of NULL values in query results). If the argument is given, then it&apos;s used as a new string to be used for NULL representation.</source>
- <translation>Si on n&rsquo;a passé aucun argument, c&rsquo;est la représentation de valeur NULL actuelle qui est utilisée (ce qui est imprimé à la place de valeurs NULL dans des résultats de requête). Si on donne un argument, il sera utilisé comme une nouvelle chaine représentant NULL.</translation>
+ <translation>Si on n’a passé aucun argument, c’est la représentation de valeur NULL actuelle qui est utilisée (ce qui est imprimé à la place de valeurs NULL dans des résultats de requête). Si on donne un argument, il sera utilisé comme une nouvelle chaine représentant NULL.</translation>
</message>
</context>
<context>
@@ -472,17 +472,17 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandopen.cpp" line="12"/>
<source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
- <translation>Impossible d&rsquo;appeler %1 lorsque aucune base de données n&rsquo;est sélectionnée. Spécifiez la base de données actuelle avec la commande %2 ou nommez la base de données %3.</translation>
+ <translation>Impossible d’appeler %1 lorsque aucune base de données n’est sélectionnée. Spécifiez la base de données actuelle avec la commande %2 ou nommez la base de données %3.</translation>
</message>
<message>
<location filename="../commands/clicommandopen.cpp" line="29"/>
<source>Could not add database %1 to list.</source>
- <translation>Impossible d&rsquo;ajouter la base de données %1 à la liste.</translation>
+ <translation>Impossible d’ajouter la base de données %1 à la liste.</translation>
</message>
<message>
<location filename="../commands/clicommandopen.cpp" line="37"/>
<source>File %1 doesn&apos;t exist in %2. Cannot open inexisting database with %3 command. To create a new database, use %4 command.</source>
- <translation>Le fichier %1 n&rsquo;existe pas dans %2. Impossible d&rsquo;ouvrir une base de données avec la commande %3. Pour créer une nouvelle base de données utilisez la commande %4.</translation>
+ <translation>Le fichier %1 n’existe pas dans %2. Impossible d’ouvrir une base de données avec la commande %3. Pour créer une nouvelle base de données utilisez la commande %4.</translation>
</message>
<message>
<location filename="../commands/clicommandopen.cpp" line="61"/>
@@ -497,7 +497,7 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandopen.cpp" line="71"/>
<source>Opens connection to the database. If no additional argument was passed, then the connection is open to the current default database (see help for %1 for details). However if an argument was passed, it can be either &lt;name&gt; of the registered database to open, or it can be &lt;path&gt; to the database file to open. In the second case, the &lt;path&gt; gets registered on the list with a generated name, but only for the period of current application session. After restarting application such database is not restored on the list.</source>
- <translation>Ouvre la connexion de la base de données. Si aucun argument n&rsquo;est passé, alors la connexion est ouverte comme base de données actuelle (voir l&rsquo;aide %1 pour plus de détails). Cependant si on a passé un argument il peut être le &lt;name&gt; d&rsquo;une base de données enregistrée, ou cela peut être le &lt;chemin&gt; du fichier de base de données. Dans le deuxième cas, le &lt;chemin&gt; est enregistré dans la liste avec un nom généré mais seulement pendant la période de la session actuelle. Après la reprise de la l&rsquo;application une telle base de données n&rsquo;est pas rétablie dans la liste.</translation>
+ <translation>Ouvre la connexion de la base de données. Si aucun argument n’est passé, alors la connexion est ouverte comme base de données actuelle (voir l’aide %1 pour plus de détails). Cependant si on a passé un argument il peut être le &lt;name&gt; d’une base de données enregistrée, ou cela peut être le &lt;chemin&gt; du fichier de base de données. Dans le deuxième cas, le &lt;chemin&gt; est enregistré dans la liste avec un nom généré mais seulement pendant la période de la session actuelle. Après la reprise de la l’application une telle base de données n’est pas rétablie dans la liste.</translation>
</message>
<message>
<location filename="../commands/clicommandopen.cpp" line="83"/>
@@ -522,7 +522,7 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandpwd.cpp" line="18"/>
<source>This is the same as &apos;pwd&apos; command on Unix systems and &apos;cd&apos; command without arguments on Windows. It prints current working directory. You can change the current working directory with %1 command and you can also list contents of the current working directory with %2 command.</source>
- <translation>C&rsquo;est la même commande d&rsquo;un système Unix «&nbsp;pwd&nbsp;» ou «&nbsp;cd&nbsp;» sans arguments de Windows. Ceci imprimele répertoire de travail courant. Vous pouvez changer le répertoire avec le commande %1 et avoir la liste des répertoire de travail avec la commande %2.</translation>
+ <translation>C’est la même commande d’un système Unix « pwd » ou « cd » sans arguments de Windows. Ceci imprimele répertoire de travail courant. Vous pouvez changer le répertoire avec le commande %1 et avoir la liste des répertoire de travail avec la commande %2.</translation>
</message>
</context>
<context>
@@ -530,17 +530,17 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandremove.cpp" line="12"/>
<source>No such database: %1</source>
- <translation>Aucune base de données: %1</translation>
+ <translation>Aucune base de données : %1</translation>
</message>
<message>
<location filename="../commands/clicommandremove.cpp" line="20"/>
<source>Database removed: %1</source>
- <translation>Base de données enlevée: %1</translation>
+ <translation>Base de données enlevée : %1</translation>
</message>
<message>
<location filename="../commands/clicommandremove.cpp" line="26"/>
<source>New current database set:</source>
- <translation>Nouvelle base de données actuelle: </translation>
+ <translation>Nouvelle base de données actuelle :</translation>
</message>
<message>
<location filename="../commands/clicommandremove.cpp" line="35"/>
@@ -550,7 +550,7 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandremove.cpp" line="40"/>
<source>Removes &lt;name&gt; database from the list of registered databases. If the database was not on the list (see %1 command), then error message is printed and nothing more happens.</source>
- <translation>Enlève la base de données &lt;nom&gt; de la liste des bases enregistrées.si la base de données n&rsquo;est pas dans la liste (voir la commande %1), alors message d&rsquo;erreur est imprimé sans aucunes autres lignes.</translation>
+ <translation>Enlève la base de données &lt;nom&gt; de la liste des bases enregistrées.si la base de données n’est pas dans la liste (voir la commande %1), alors message d’erreur est imprimé sans aucunes autres lignes.</translation>
</message>
<message>
<location filename="../commands/clicommandremove.cpp" line="50"/>
@@ -566,14 +566,14 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<source>No working database is set.
Call %1 command to set working database.
Call %2 to see list of all databases.</source>
- <translation>Aucune base de données de travail n&rsquo;est activée.
+ <translation>Aucune base de données de travail n’est activée.
Appelez la commande %1 pour activer la base de données active.
Appelez %2 pour voir la liste de toutes les bases de données.</translation>
</message>
<message>
<location filename="../commands/clicommandsql.cpp" line="29"/>
<source>Database is not open.</source>
- <translation>La base de données n&rsquo;est pas ouverte.</translation>
+ <translation>La base de données n’est pas ouverte.</translation>
</message>
<message>
<location filename="../commands/clicommandsql.cpp" line="64"/>
@@ -583,7 +583,7 @@ Appelez %2 pour voir la liste de toutes les bases de données.</translation>
<message>
<location filename="../commands/clicommandsql.cpp" line="69"/>
<source>This command is executed every time you enter SQL query in command prompt. It executes the query on the current working database (see help for %1 for details). There&apos;s no sense in executing this command explicitly. Instead just type the SQL query in the command prompt, without any command prefixed.</source>
- <translation>Cette commande est exécutée chaque fois vous saississez une requête SQL au prompt de commande. Il exécute la requête sur la base de données actuelle (voir l&rsquo;aide %1 pour des détails). Il n&rsquo;y a aucun sens dans l&rsquo;exécution de cette commande explicitement. Instead just type the SQL query in the command prompt, without any command prefixed.</translation>
+ <translation>Cette commande est exécutée chaque fois vous saississez une requête SQL au prompt de commande. Il exécute la requête sur la base de données actuelle (voir l’aide %1 pour les détails). Il n’y a aucun sens dans l’exécution de cette commande explicitement. Instead just type the SQL query in the command prompt, without any command prefixed.</translation>
</message>
<message>
<location filename="../commands/clicommandsql.cpp" line="85"/>
@@ -592,20 +592,20 @@ Appelez %2 pour voir la liste de toutes les bases de données.</translation>
<translation>SQL</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation>Trop de colonnes à afficher avec le mode %1.</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation>Ligne %1</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
- <translation>Erreur d&rsquo;exécution de la requête: %1</translation>
+ <translation>Erreur d’exécution de la requête : %1</translation>
</message>
</context>
<context>
@@ -613,12 +613,12 @@ Appelez %2 pour voir la liste de toutes les bases de données.</translation>
<message>
<location filename="../commands/clicommandtables.cpp" line="15"/>
<source>No such database: %1. Use %2 to see list of known databases.</source>
- <translation>Aucune base de données: %1. Utilisez %2pour voir la liste des base de données connues.</translation>
+ <translation>Aucune base de données : %1. Utilisez %2pour voir la liste des base de données connues.</translation>
</message>
<message>
<location filename="../commands/clicommandtables.cpp" line="25"/>
<source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
- <translation>Impossible d&rsquo;appeler %1 quand aucune base de données n&rsquo;est active. Spécifiez la base de données active avec la commade %2 ou nommez la base de données avec %3.</translation>
+ <translation>Impossible d’appeler %1 quand aucune base de données n’est active. Spécifiez la base de données active avec la commade %2 ou nommez la base de données avec %3.</translation>
</message>
<message>
<location filename="../commands/clicommandtables.cpp" line="32"/>
@@ -645,8 +645,8 @@ Appelez %2 pour voir la liste de toutes les bases de données.</translation>
<location filename="../commands/clicommandtables.cpp" line="66"/>
<source>Prints list of tables in given &lt;database&gt; or in the current working database. Note, that the &lt;database&gt; should be the name of the registered database (see %1). The output list includes all tables from any other databases attached to the queried database.
When the -s option is given, then system tables are also listed.</source>
- <translation>Imprime la liste des tables d&rsquo;une &lt;database&gt; donnée ou la base de données actuelle. Notez que la &lt;database&gt; devrait être le nom enregistré de la base de données (voir %1). L&rsquo;affichage de la liste inclus toutes les tables d&rsquo;autres bases de données attachées à celle-ci.
-Lorsque l&rsquo;option «&nbsp;-s&nbsp;» est ajouté, les tables système sont aussi listées.</translation>
+ <translation>Imprime la liste des tables de la &lt;base de données&gt; sélectionnée ou de la base de données actuelle. Notez que la &lt;base de données&gt; devrait être le nom enregistré de la base de données (voir %1). L’affichage de la liste inclus toutes les tables d’autres bases de données attachées à celle-ci.
+Lorsque l’option « -s » est ajouté, les tables système sont aussi listées.</translation>
</message>
<message>
<location filename="../commands/clicommandtables.cpp" line="77"/>
@@ -660,7 +660,7 @@ Lorsque l&rsquo;option «&nbsp;-s&nbsp;» est ajouté, les tables système sont
<message>
<location filename="../commands/clicommandtree.cpp" line="12"/>
<source>No current working database is selected. Use %1 to define one and then run %2.</source>
- <translation>Aucune base de données actuelle n&rsquo;est sélectionnée. Utilisez %1 pour en définir uneet lancez avec %2.</translation>
+ <translation>Aucune base de données actuelle n’est sélectionnée. Utilisez %1 pour en définir uneet lancez avec %2.</translation>
</message>
<message>
<location filename="../commands/clicommandtree.cpp" line="54"/>
@@ -699,10 +699,10 @@ Lorsque l&rsquo;option «&nbsp;-s&nbsp;» est ajouté, les tables système sont
When -c option is given, then also columns will be listed under each table.
When -s option is given, then also system objects will be printed (sqlite_* tables, autoincrement indexes, etc).
The database argument is optional and if provided, then only given database will be printed. This is not a registered database name, but instead it&apos;s an internal SQLite database name, like &apos;main&apos;, &apos;temp&apos;, or any attached database name. To print tree for other registered database, call %1 first to switch the working database, and then use %2 command.</source>
- <translation>Imprime tous les objets (tables, index, déclencheurs et vues) qui sont dans la base de données comme un arbre. L&rsquo;arbre est très semblable à celui que vous pouvez voir dans lGUI client de SQLiteStudio.
-Quand on ajoute l&rsquo;option-c, alors aussi les colonnes seront inscrites sous chaque table.
-Quand on ajoute l&rsquo;option-s, alors aussi les objets de système seront imprimés (sqlite_* tables, des index d&rsquo;autoincrément, etc).
-L&rsquo;argument de base de données est facultatif et si fourni, alors seulement la base de données donnée sera imprimée. Ceci n&rsquo;est pas un nom de base de données enregistré, mais au lieu de cela c&rsquo;est un nom de base de données SQLite interne, comme «&nbsp;principal&nbsp;», «&nbsp;temporaire&nbsp;», ou n&rsquo;importe quel nom de base de données attaché. Pour imprimer l&rsquo;arbre pour d&rsquo;autre base de données enregistrée, appelez %1 d&rsquo;abord pour changer la base de données actuelleet utiliser la commande %2.</translation>
+ <translation>Imprime tous les objets (tables, index, déclencheurs et vues) qui sont dans la base de données comme un arbre. L’arbre est très semblable à celui que vous pouvez voir dans lGUI client de SQLiteStudio.
+Quand on ajoute l’option -c, alors les colonnes seront aussi inscrites sous chaque table.
+Quand on ajoute l’option -s, alors les objets de système seront aussi imprimés (sqlite_* tables, des index d’auto-incrément, etc).
+L’argument de base de données est facultatif et si fourni, alors seulement la base de données indiquée sera imprimée. Ceci n’est pas un nom de base de données enregistré, mais au lieu de cela c’est un nom de base de données SQLite interne, comme « principal », « temporaire », ou n’importe quel nom de base de données attaché. Pour imprimer l’arbre pour d’autre base de données enregistrée, appelez %1 d’abord pour changer la base de données actuelleet utiliser la commande %2.</translation>
</message>
</context>
<context>
@@ -716,7 +716,7 @@ L&rsquo;argument de base de données est facultatif et si fourni, alors seulemen
<location filename="../commands/clicommanduse.cpp" line="16"/>
<location filename="../commands/clicommanduse.cpp" line="30"/>
<source>Current database: %1</source>
- <translation>Base de données actuelle: %1</translation>
+ <translation>Base de données actuelle : %1</translation>
</message>
<message>
<location filename="../commands/clicommanduse.cpp" line="23"/>
@@ -741,17 +741,17 @@ The default database can be selected in various ways:
- by passing registered database name to the application startup parameters,
- by restoring previously selected default database from saved configuration,
- or when default database was not selected by any of the above, then first database from the registered databases list becomes the default one.</source>
- <translation>Changet la base de données actuelle &lt;nom&gt;. Si le &lt;nom &gt; de la base de données n&rsquo;est pas enregistrée dans l&rsquo;application, le message d&rsquo;erreur est imprimé et aucun changement n&rsquo;est fait.
+ <translation>Changet la base de données actuelle &lt;nom&gt;. Si le &lt;nom &gt; de la base de données n’est pas enregistrée dans l’application, le message d’erreur est imprimé et aucun changement n’est fait.
-Quel est la base de données actuelle?
-Quand vous saississez une requête SQL à exécuter, celle-ci est exécutée sur la base de données par défaut, que l&rsquo;on connaît aussi comme la base de données actuelle. La plupart de commandes concernant la base de données utilise la base de données de défaut d&rsquo;utilisation, si on n&rsquo;a fourni aucune base de données dans leurs arguments. La base de données actuelle est toujours identifiée par la ligne de commande. La base de données par défaut est toujours définie (à moins qu&rsquo;il n&rsquo;y ait aucune base de données dans la liste).
+Quel est la base de données actuelle ?
+Quand vous saississez une requête SQL à exécuter, celle-ci est exécutée sur la base de données par défaut, que l’on connaît aussi comme la base de données actuelle. La plupart de commandes concernant la base de données utilise la base de données de défaut d’utilisation, si on n’a fourni aucune base de données dans leurs arguments. La base de données actuelle est toujours identifiée par la ligne de commande. La base de données par défaut est toujours définie (à moins qu’il n’y ait aucune base de données dans la liste).
-La base de données par défaut peut être choisie de diverses manières:
-- Utilisation de la commande%1,
-- En passant nom de fichier de base de données aux paramètres de démarrage d&rsquo;application,
-- En passantle nom la base de données enregistrée aux paramètres de démarrage d&rsquo;application,
+La base de données par défaut peut être choisie de diverses manières :
+- Utilisation de la commande %1,
+- En passant nom de fichier de base de données aux paramètres de démarrage d’application,
+- En passantle nom la base de données enregistrée aux paramètres de démarrage d’application,
- En restaurant la base de données par défaut précédemment choisie dans la configuration sauvée,
-- Ou quand la base de données par défaut n&rsquo;a été choisie par aucun du susdit, l&rsquo;alors première base de données de la liste de bases de données enregistrée devient le par défaut.</translation>
+- Ou quand la base de données par défaut n’a été choisie par aucun du susdit, l’alors première base de données de la liste de bases de données enregistrée devient le par défaut.</translation>
</message>
<message>
<location filename="../commands/clicommanduse.cpp" line="63"/>
@@ -765,18 +765,18 @@ La base de données par défaut peut être choisie de diverses manières:
<message>
<location filename="../clicommandsyntax.cpp" line="155"/>
<source>Insufficient number of arguments.</source>
- <translation>Nombre d&rsquo;arguments insuffisant.</translation>
+ <translation>Nombre d’arguments insuffisant.</translation>
</message>
<message>
<location filename="../clicommandsyntax.cpp" line="325"/>
<source>Too many arguments.</source>
- <translation>Trop d&rsquo;arguements.</translation>
+ <translation>Trop d’arguements.</translation>
</message>
<message>
<location filename="../clicommandsyntax.cpp" line="347"/>
<source>Invalid argument value: %1.
Expected one of: %2</source>
- <translation>Valeur invalide de l&rsquo;arguement %1. Exepté l&rsquo;un d&rsquo;eux: %2</translation>
+ <translation>Valeur invalide de l’arguement %1. Excepté l’un d’eux : %2</translation>
</message>
<message>
<location filename="../clicommandsyntax.cpp" line="383"/>
@@ -788,13 +788,13 @@ Expected one of: %2</source>
<location filename="../clicommandsyntax.cpp" line="394"/>
<source>Option %1 requires an argument.</source>
<comment>CLI command syntax</comment>
- <translation>L&rsquo;option %1 nécessite un argument.</translation>
+ <translation>L’option %1 nécessite un argument.</translation>
</message>
<message>
<location filename="../commands/clicommandnullvalue.cpp" line="31"/>
<source>string</source>
<comment>CLI command syntax</comment>
- <translation>Chaine</translation>
+ <translation>Chaîne</translation>
</message>
<message>
<location filename="../main.cpp" line="22"/>
@@ -804,12 +804,12 @@ Expected one of: %2</source>
<message>
<location filename="../main.cpp" line="26"/>
<source>Enables debug messages on standard error output.</source>
- <translation>Messages de débogage valides sur sortie d&rsquo;erreur standard.</translation>
+ <translation>Messages de débogage valides sur sortie d’erreur standard.</translation>
</message>
<message>
<location filename="../main.cpp" line="27"/>
<source>Enables Lemon parser debug messages for SQL code assistant.</source>
- <translation>Permet le débogage avec l&rsquo;analyseur syntaxique de Lemo pour l&rsquo;assistant SQL.</translation>
+ <translation>Permet le débogage avec l’analyseur syntaxique de Lemon pour l’assistant SQL.</translation>
</message>
<message>
<location filename="../main.cpp" line="28"/>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts
index 5ef2bff..ede41bc 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="it_IT">
+<TS version="2.1" language="it_IT">
<context>
<name>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm
index 6af2684..5334188 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm
Binary files differ
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
index e1dfd31..5b4d6fb 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pl_PL">
+<TS version="2.1" language="pl_PL">
<context>
<name>CLI</name>
<message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
index f874e9b..490addf 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<TS version="2.1" language="pt_BR">
<context>
<name>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
index ef35f51..379b0e0 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<TS version="2.1" language="ru_RU">
<context>
<name>CLI</name>
<message>
@@ -590,18 +590,18 @@ Call %2 to see list of all databases.</source>
<translation>sql</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation>Слишком много столбцов для отображения в режиме %1.</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation>Строка %1</translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation>Ошибка выполнения запроса: %1</translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts
index 8f71f1d..e7e2933 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_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>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
index 072f362..7cf3e27 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="zh_CN">
<context>
<name>CLI</name>
<message>
@@ -564,18 +564,18 @@ Call %2 to see list of all databases.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="136"/>
- <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <location filename="../commands/clicommandsql.cpp" line="134"/>
+ <location filename="../commands/clicommandsql.cpp" line="176"/>
<source>Too many columns to display in %1 mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <location filename="../commands/clicommandsql.cpp" line="253"/>
<source>Row %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <location filename="../commands/clicommandsql.cpp" line="403"/>
<source>Query execution error: %1</source>
<translation type="unfinished"></translation>
</message>