diff --git a/src/PreferencesDialog.cpp b/src/PreferencesDialog.cpp index 7285c662..3d919b3a 100644 --- a/src/PreferencesDialog.cpp +++ b/src/PreferencesDialog.cpp @@ -17,6 +17,8 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) { ui->setupUi(this); ui->treeSyntaxHighlighting->setColumnHidden(0, true); + ui->labelDatabaseDefaultSqlText->setVisible(false); + ui->editDatabaseDefaultSqlText->setVisible(false); ui->fr_bin_bg->installEventFilter(this); ui->fr_bin_fg->installEventFilter(this); @@ -61,6 +63,7 @@ void PreferencesDialog::loadSettings() ui->checkHideSchemaLinebreaks->setChecked(getSettingsValue("db", "hideschemalinebreaks").toBool()); ui->foreignKeysCheckBox->setChecked(getSettingsValue("db", "foreignkeys").toBool()); ui->spinPrefetchSize->setValue(getSettingsValue("db", "prefetchsize").toInt()); + ui->editDatabaseDefaultSqlText->setText(getSettingsValue("db", "defaultsqltext").toString()); ui->comboDataBrowserFont->setCurrentIndex(ui->comboEditorFont->findText(getSettingsValue("databrowser", "font").toString())); ui->spinDataBrowserFontSize->setValue(getSettingsValue("databrowser", "fontsize").toInt()); @@ -108,6 +111,7 @@ void PreferencesDialog::saveSettings() setSettingsValue("db", "hideschemalinebreaks", ui->checkHideSchemaLinebreaks->isChecked()); setSettingsValue("db", "foreignkeys", ui->foreignKeysCheckBox->isChecked()); setSettingsValue("db", "prefetchsize", ui->spinPrefetchSize->value()); + setSettingsValue("db", "defaultsqltext", ui->editDatabaseDefaultSqlText->text()); setSettingsValue("checkversion", "enabled", ui->checkUpdates->isChecked()); @@ -219,6 +223,10 @@ QVariant PreferencesDialog::getSettingsDefaultValue(const QString& group, const if(group == "db" && name == "prefetchsize") return 50000; + // db/defaultsqltext? + if(group == "db" && name == "defaultsqltext") + return ""; + // MainWindow/geometry? if(group == "MainWindow" && name == "geometry") return ""; diff --git a/src/PreferencesDialog.ui b/src/PreferencesDialog.ui index 5bc30a1b..efdda118 100644 --- a/src/PreferencesDialog.ui +++ b/src/PreferencesDialog.ui @@ -233,6 +233,46 @@ + + + Advanced + + + + :/icons/down:/icons/down + + + true + + + + + + + + 20 + 0 + + + + + 16777215 + 200 + + + + + + + + SQL to execute after opening database + + + editDatabaseDefaultSqlText + + + + Qt::Horizontal @@ -884,6 +924,14 @@ + + + SqlTextEdit + QWidget +
sqltextedit.h
+ 1 +
+
tabWidget comboDefaultLocation @@ -927,8 +975,8 @@ saveSettings() - 269 - 395 + 275 + 488 155 @@ -943,8 +991,8 @@ reject() - 337 - 395 + 343 + 488 286 @@ -960,7 +1008,7 @@ 571 - 103 + 99 245 @@ -976,7 +1024,7 @@ 571 - 141 + 137 245 @@ -1016,6 +1064,38 @@ + + buttonDatabaseAdvanced + toggled(bool) + labelDatabaseDefaultSqlText + setVisible(bool) + + + 367 + 189 + + + 205 + 220 + + + + + buttonDatabaseAdvanced + toggled(bool) + editDatabaseDefaultSqlText + setVisible(bool) + + + 376 + 191 + + + 331 + 219 + + + saveSettings() diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index 8997e824..4bad4641 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -2,6 +2,7 @@ #include "sqlite.h" #include "sqlitetablemodel.h" #include "CipherDialog.h" +#include "PreferencesDialog.h" #include #include @@ -143,6 +144,14 @@ bool DBBrowserDB::open(const QString& db) QFileInfo fid(fi.absoluteDir().absolutePath()); isReadOnly = !fi.isWritable() || !fid.isWritable(); + // Execute default SQL + if(!isReadOnly) + { + QString default_sql = PreferencesDialog::getSettingsValue("db", "defaultsqltext").toString(); + if(!default_sql.isEmpty()) + executeMultiSQL(default_sql, false, true); + } + curDBFilename = db; return true; } else { @@ -360,6 +369,11 @@ bool DBBrowserDB::create ( const QString & db) executeSQL("DROP TABLE notempty;", false, false); executeSQL("COMMIT;", false, false); + // Execute default SQL + QString default_sql = PreferencesDialog::getSettingsValue("db", "defaultsqltext").toString(); + if(!default_sql.isEmpty()) + executeMultiSQL(default_sql, false, true); + curDBFilename = db; isEncrypted = false; isReadOnly = false;