aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/constraints
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-01-30 17:00:07 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-01-30 17:00:07 -0500
commit016003905ca0e8e459e3dc33e786beda8ec92f45 (patch)
tree34aba2d2e0d66fbf2c3821ee8358f56e40c4c95e /SQLiteStudio3/guiSQLiteStudio/constraints
parent724c012ada23ef480c61fe99e3c9784b91aeb1ca (diff)
Imported Upstream version 3.0.2upstream/3.0.2
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/constraints')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columncollatepanel.ui24
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp245
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.h16
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.ui2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.ui8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.ui35
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columnuniqueandnotnullpanel.ui24
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/constraintcheckpanel.ui6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.ui8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.ui2
12 files changed, 262 insertions, 113 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columncollatepanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/columncollatepanel.ui
index a481875..0c3478e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columncollatepanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columncollatepanel.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -23,7 +23,16 @@
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
- <property name="margin">
+ <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>
@@ -46,7 +55,16 @@
<item>
<widget class="QWidget" name="namedWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="margin">
+ <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>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
index 3d7090a..4f402b2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
@@ -1,9 +1,9 @@
#include "columndefaultpanel.h"
#include "ui_columndefaultpanel.h"
-#include "parser/ast/sqlitecreatetable.h"
#include "parser/parser.h"
#include "parser/keywords.h"
#include "uiutils.h"
+#include "schemaresolver.h"
#include <QDebug>
ColumnDefaultPanel::ColumnDefaultPanel(QWidget *parent) :
@@ -34,6 +34,22 @@ void ColumnDefaultPanel::changeEvent(QEvent *e)
bool ColumnDefaultPanel::validate()
{
+ if (!ui->exprEdit->isSyntaxChecked())
+ {
+ setValidState(ui->exprEdit, false, tr("Enter a default value expression."));
+ currentMode = Mode::ERROR;
+ return false;
+ }
+
+ // First check if we already validated this text.
+ // This method is called twice, by both errors checking and syntax highlighting,
+ // because signal for textChange() is connected with call to updateValidation().
+ QString text = ui->exprEdit->toPlainText();
+ if (!lastValidatedText.isNull() && lastValidatedText == text)
+ return lastValidationResult;
+
+ lastValidatedText = text;
+
bool nameOk = true;
if (ui->namedCheck->isChecked() && ui->namedEdit->text().isEmpty())
nameOk = false;
@@ -41,12 +57,40 @@ bool ColumnDefaultPanel::validate()
bool exprOk = !ui->exprEdit->toPlainText().trimmed().isEmpty() &&
!ui->exprEdit->haveErrors();
- bool exprCheckedOk = exprOk && ui->exprEdit->isSyntaxChecked();
+ QString exprError;
+ if (exprOk)
+ {
+ // Everything looks fine, so lets do the final check - if the value is considered constant by SQLite.
+ static QString tempDdlLiteralTpl = QStringLiteral("CREATE TABLE temp.%1 (col DEFAULT %2);");
+ static QString tempDdlExprTpl = QStringLiteral("CREATE TABLE temp.%1 (col DEFAULT (%2));");
+ static QString dropTempDdl = QStringLiteral("DROP TABLE IF EXISTS temp.%1;");
+
+ QString tableName = getTempTable();
+ QString tempDdl = tempDdlExprTpl.arg(tableName, ui->exprEdit->toPlainText());
+ SqlQueryPtr res = db->exec(tempDdl);
+ if (res->isError())
+ {
+ tempDdl = tempDdlLiteralTpl.arg(tableName, ui->exprEdit->toPlainText());
+ res = db->exec(tempDdl);
+ if (res->isError())
+ {
+ exprOk = false;
+ exprError = tr("Invalid default value expression: %1").arg(res->getErrorText());
+ }
+ else
+ currentMode = Mode::LITERAL;
+ }
+ else
+ currentMode = Mode::EXPR;
+
+ db->exec(dropTempDdl.arg(tableName));
+ }
- setValidState(ui->exprEdit, exprOk, tr("Enter a default value expression."));
+ setValidState(ui->exprEdit, exprOk, exprError);
setValidState(ui->namedEdit, nameOk, tr("Enter a name of the constraint."));
- return exprCheckedOk && nameOk;
+ lastValidationResult = (exprOk && nameOk);
+ return lastValidationResult;
}
bool ColumnDefaultPanel::validateOnly()
@@ -69,18 +113,99 @@ void ColumnDefaultPanel::storeConfiguration()
if (constraint.isNull())
return;
+ if (currentMode == Mode::ERROR)
+ {
+ qCritical() << "Call to ColumnDefaultPanel::storeConfiguration() while its mode is in ERROR state.";
+ return;
+ }
+
SqliteCreateTable::Column::Constraint* constr = dynamic_cast<SqliteCreateTable::Column::Constraint*>(constraint.data());
constr->type = SqliteCreateTable::Column::Constraint::DEFAULT;
- SqliteExprPtr expr = parseExpression(ui->exprEdit->toPlainText());
- SqliteExpr* newExpr = new SqliteExpr(*expr.data());
- newExpr->setParent(constraint.data());
- constr->expr = newExpr;
+ switch (currentMode)
+ {
+ case Mode::EXPR:
+ storeExpr(constr);
+ break;
+ case Mode::LITERAL:
+ storeLiteral(constr);
+ break;
+ case Mode::ERROR:
+ return;
+ }
if (ui->namedCheck->isChecked())
constr->name = ui->namedEdit->text();
}
+void ColumnDefaultPanel::storeExpr(SqliteCreateTable::Column::Constraint* constr)
+{
+ QString text = ui->exprEdit->toPlainText();
+ clearDefault(constr);
+ if (text.toUpper() == "NULL")
+ {
+ // We will just use literal null, no need to create expression with null.
+ constr->literalNull = true;
+ return;
+ }
+
+ Parser parser(db->getDialect());
+ SqliteExpr* newExpr = parser.parseExpr(text);
+ newExpr->setParent(constraint.data());
+ constr->expr = newExpr;
+}
+
+void ColumnDefaultPanel::storeLiteral(SqliteCreateTable::Column::Constraint* constr)
+{
+ QString text = ui->exprEdit->toPlainText();
+
+ Parser parser(db->getDialect());
+ SqliteCreateTablePtr createTable = parser.parse<SqliteCreateTable>("CREATE TABLE tab (col DEFAULT "+text+");");
+ if (!createTable || createTable->columns.size() == 0 || createTable->columns.first()->constraints.size() == 0)
+ {
+ qCritical() << "ColumnDefaultPanel::storeLiteral(): create table not parsed! Cannot store literal. Expression was:" << text;
+ return;
+ }
+
+ SqliteCreateTable::Column::Constraint* parsedConstr = createTable->columns.first()->constraints.first();
+ if (parsedConstr->type != SqliteCreateTable::Column::Constraint::Type::DEFAULT)
+ {
+ qCritical() << "ColumnDefaultPanel::storeLiteral(): parsed constraint not a DEFAULT! Cannot store literal. Expression was:" << text;
+ return;
+ }
+
+ clearDefault(constr);
+ if (!parsedConstr->id.isNull())
+ constr->id = parsedConstr->id;
+ else if (!parsedConstr->ctime.isNull())
+ constr->ctime = parsedConstr->ctime.toUpper();
+ else if (parsedConstr->expr)
+ {
+ qWarning() << "ColumnDefaultPanel::storeLiteral(): parsed constraint turned out to be an expression. This should be handled by ColumnDefaultPanel::storeExpr."
+ << "Expression was:" << text;
+ constr->expr = parsedConstr->expr;
+ parsedConstr->expr = nullptr;
+ constr->expr->setParent(constr);
+ }
+ else if (parsedConstr->literalNull)
+ constr->literalNull = true;
+ else
+ constr->literalValue = parsedConstr->literalValue;
+}
+
+void ColumnDefaultPanel::clearDefault(SqliteCreateTable::Column::Constraint* constr)
+{
+ if (constr->expr)
+ {
+ delete constr->expr;
+ constr->expr = nullptr;
+ }
+ constr->literalNull = false;
+ constr->literalValue = QVariant();
+ constr->id = QString();
+ constr->ctime = QString();
+}
+
void ColumnDefaultPanel::init()
{
setFocusProxy(ui->exprEdit);
@@ -101,101 +226,49 @@ void ColumnDefaultPanel::readConstraint()
SqliteCreateTable::Column::Constraint* constr = dynamic_cast<SqliteCreateTable::Column::Constraint*>(constraint.data());
if (constr->expr)
+ {
ui->exprEdit->setPlainText(constr->expr->detokenize());
+ currentMode = Mode::EXPR;
+ }
else if (!constr->literalValue.isNull())
- ui->exprEdit->setPlainText(constr->literalValue.toString());
-
- if (!constr->name.isNull())
{
- ui->namedCheck->setChecked(true);
- ui->namedEdit->setText(constr->name);
+ ui->exprEdit->setPlainText(constr->literalValue.toString());
+ currentMode = Mode::LITERAL;
}
-}
-
-void ColumnDefaultPanel::updateVirtualSql()
-{
- ui->exprEdit->setDb(db);
-
- SqliteCreateTable::Column* column = dynamic_cast<SqliteCreateTable::Column*>(constraint->parentStatement());
- SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(column->parentStatement());
-
- createTable->rebuildTokens();
- TokenList tokens = createTable->tokens;
- TokenList colTokens = column->tokens;
- if (createTable->columns.indexOf(column) == -1)
+ else if (!constr->id.isNull())
{
- if (createTable->columns.size() == 0)
- {
- // No columns. Cannot get any context info.
- return;
- }
-
- colTokens = createTable->columns.last()->tokens;
+ ui->exprEdit->setPlainText(constr->id);
+ currentMode = Mode::LITERAL;
}
-
- if (colTokens.size() == 0)
+ else if (!constr->ctime.isNull())
{
- qWarning() << "CREATE TABLE tokens are invalid (0) while call to ColumnDefaultPanel::updateVirtualSql().";
- return;
+ ui->exprEdit->setPlainText(constr->ctime);
+ currentMode = Mode::LITERAL;
}
-
- int idx = tokens.lastIndexOf(colTokens.last());
- if (idx == -1)
+ else if (constr->literalNull)
{
- qWarning() << "CREATE TABLE tokens are invalid while call to ColumnDefaultPanel::updateVirtualSql().";
- return;
+ ui->exprEdit->setPlainText("NULL");
+ currentMode = Mode::LITERAL;
}
- idx++;
-
- TokenList newTokens;
- newTokens << TokenPtr::create(Token::SPACE, " ")
- << TokenPtr::create(Token::KEYWORD, "DEFAULT")
- << TokenPtr::create(Token::SPACE, " ");
- if (constraint->dialect == Dialect::Sqlite3)
- {
- newTokens << TokenPtr::create(Token::PAR_LEFT, "(")
- << TokenPtr::create(Token::OTHER, "%1")
- << TokenPtr::create(Token::PAR_RIGHT, ")");
- }
- else
+ if (!constr->name.isNull())
{
- newTokens << TokenPtr::create(Token::OTHER, "%1");
+ ui->namedCheck->setChecked(true);
+ ui->namedEdit->setText(constr->name);
}
-
- tokens.insert(idx, newTokens);
- QString sql = tokens.detokenize();
-
- ui->exprEdit->setVirtualSqlExpression(sql);
}
-SqliteExprPtr ColumnDefaultPanel::parseExpression(const QString& sql)
+void ColumnDefaultPanel::updateVirtualSql()
{
- Parser parser(db->getDialect());
- if (!parser.parse("SELECT "+sql))
- return SqliteExprPtr();
-
- QList<SqliteQueryPtr> queries = parser.getQueries();
- if (queries.size() == 0)
- return SqliteExprPtr();
-
- SqliteQueryPtr first = queries.first();
- if (first->queryType != SqliteQueryType::Select)
- return SqliteExprPtr();
-
- SqliteSelectPtr select = first.dynamicCast<SqliteSelect>();
- if (select->coreSelects.size() < 1)
- return SqliteExprPtr();
-
- SqliteSelect::Core* core = select->coreSelects.first();
- if (core->resultColumns.size() < 1)
- return SqliteExprPtr();
-
- SqliteSelect::Core::ResultColumn* resCol = core->resultColumns.first();
- if (!resCol->expr)
- return SqliteExprPtr();
+ static QString sql = QStringLiteral("CREATE TABLE tab (col DEFAULT %1)");
+ ui->exprEdit->setDb(db);
+ ui->exprEdit->setVirtualSqlExpression(sql.arg(db->getDialect() == Dialect::Sqlite3 ? "(%1)" : "%1"));
+}
- return resCol->expr->detach().dynamicCast<SqliteExpr>();
+QString ColumnDefaultPanel::getTempTable()
+{
+ SchemaResolver resolver(db);
+ return resolver.getUniqueName("temp", "sqlitestudio_temp_table");
}
void ColumnDefaultPanel::updateState()
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.h b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.h
index 933c2dd..3cdd962 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.h
@@ -4,6 +4,7 @@
#include "constraintpanel.h"
#include "parser/ast/sqliteconflictalgo.h"
#include "guiSQLiteStudio_global.h"
+#include "parser/ast/sqlitecreatetable.h"
#include <QWidget>
namespace Ui {
@@ -27,12 +28,25 @@ class GUI_API_EXPORT ColumnDefaultPanel : public ConstraintPanel
void storeConfiguration();
private:
+ enum class Mode
+ {
+ EXPR,
+ LITERAL,
+ ERROR
+ };
+
void init();
void readConstraint();
void updateVirtualSql();
- SqliteExprPtr parseExpression(const QString& sql);
+ QString getTempTable();
+ void storeExpr(SqliteCreateTable::Column::Constraint* constr);
+ void storeLiteral(SqliteCreateTable::Column::Constraint* constr);
+ void clearDefault(SqliteCreateTable::Column::Constraint* constr);
Ui::ColumnDefaultPanel *ui = nullptr;
+ QString lastValidatedText;
+ bool lastValidationResult = false;
+ Mode currentMode = Mode::ERROR;
private slots:
void updateState();
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.ui
index fdf55b0..0026fdb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp
index cf234f7..f4eb3eb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp
@@ -217,7 +217,7 @@ void ColumnForeignKeyPanel::storeConfiguration()
storeCondition(SqliteForeignKey::Condition::DELETE, ui->onDeleteCombo->currentText());
if (ui->onUpdateCheckBox->isChecked())
- storeCondition(SqliteForeignKey::Condition::UPDATE, ui->onDeleteCombo->currentText());
+ storeCondition(SqliteForeignKey::Condition::UPDATE, ui->onUpdateCombo->currentText());
if (ui->matchCheckBox->isChecked())
storeMatchCondition(ui->matchCombo->currentText());
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.ui
index c442967..23e2300 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.ui
@@ -17,7 +17,7 @@
</size>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -61,7 +61,7 @@
<item row="0" column="0">
<widget class="QCheckBox" name="onUpdateCheckBox">
<property name="text">
- <string>ON UPDATE</string>
+ <string notr="true">ON UPDATE</string>
</property>
</widget>
</item>
@@ -71,14 +71,14 @@
<item row="1" column="0">
<widget class="QCheckBox" name="onDeleteCheckBox">
<property name="text">
- <string>ON DELETE</string>
+ <string notr="true">ON DELETE</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="matchCheckBox">
<property name="text">
- <string>MATCH</string>
+ <string notr="true">MATCH</string>
</property>
</widget>
</item>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.ui
index bedabca..d6c15d4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.ui
@@ -17,7 +17,7 @@
</size>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -30,7 +30,16 @@
<item>
<widget class="QWidget" name="sortOrderWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
- <property name="margin">
+ <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>
@@ -56,7 +65,16 @@
<item>
<widget class="QWidget" name="namedWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="margin">
+ <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>
@@ -75,7 +93,16 @@
<item>
<widget class="QWidget" name="conflictWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="margin">
+ <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>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnuniqueandnotnullpanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/columnuniqueandnotnullpanel.ui
index 16efc89..7a60f40 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnuniqueandnotnullpanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnuniqueandnotnullpanel.ui
@@ -17,13 +17,22 @@
</size>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="namedWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
- <property name="margin">
+ <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>
@@ -42,7 +51,16 @@
<item>
<widget class="QWidget" name="conflictWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="margin">
+ <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>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/constraintcheckpanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/constraintcheckpanel.ui
index 58f58e6..e7021b4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/constraintcheckpanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/constraintcheckpanel.ui
@@ -7,17 +7,17 @@
<x>0</x>
<y>0</y>
<width>400</width>
- <height>197</height>
+ <height>211</height>
</rect>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="exprGroup">
<property name="title">
- <string>The expression</string>
+ <string>The condition</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
index 60da220..7354997 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp
@@ -327,7 +327,6 @@ void TableForeignKeyPanel::storeConfiguration()
QCheckBox* check = nullptr;
QComboBox* combo = nullptr;
SqliteIndexedColumn* idxCol = nullptr;
- QString name;
for (int i = 0; i < totalColumns; i++)
{
// Local column
@@ -352,7 +351,7 @@ void TableForeignKeyPanel::storeConfiguration()
storeCondition(SqliteForeignKey::Condition::DELETE, ui->onDeleteCombo->currentText());
if (ui->onUpdateCheckBox->isChecked())
- storeCondition(SqliteForeignKey::Condition::UPDATE, ui->onDeleteCombo->currentText());
+ storeCondition(SqliteForeignKey::Condition::UPDATE, ui->onUpdateCombo->currentText());
if (ui->matchCheckBox->isChecked())
storeMatchCondition(ui->matchCombo->currentText());
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.ui
index 8917381..7ecbe06 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.ui
@@ -17,7 +17,7 @@
</size>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -129,7 +129,7 @@ but it's okay to use them anyway.</string>
<item row="0" column="0">
<widget class="QCheckBox" name="onUpdateCheckBox">
<property name="text">
- <string>ON UPDATE</string>
+ <string notr="true">ON UPDATE</string>
</property>
</widget>
</item>
@@ -139,14 +139,14 @@ but it's okay to use them anyway.</string>
<item row="1" column="0">
<widget class="QCheckBox" name="onDeleteCheckBox">
<property name="text">
- <string>ON DELETE</string>
+ <string notr="true">ON DELETE</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="matchCheckBox">
<property name="text">
- <string>MATCH</string>
+ <string notr="true">MATCH</string>
</property>
</widget>
</item>
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.ui b/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.ui
index 9453d3c..52c5af1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>PrimaryKeyOrUniquePanel</string>
+ <string notr="true">PrimaryKeyOrUniquePanel</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">