This adds three new settings to the cipher dialog: KDF iterations, HMAC
algorithm, and KDF algorithm. To simplify things we also add two presets
for all the encryption settings: SQLCipher3 defaults and SQLCipher4
defaults. The preselected default is chosen depending on the SQLCipher
version which we use.
This should work with any combination of SQLCipher3 and SQLCipher4 and
any database created by either. It should also work with DotEnv files as
expected. Again, the defaults which are used for missing values in the
DotEnv files are chosen depending on the SQLCipher version we use.
We don't go a git pull of the sqlitebrowser repo for the SQLCipher
build, else the SQLite and SQLCipher builds could differ in the
commits they'd done with.
Foreign key combo-box in table browser
This adds a combo-box for the editor delegate when the associated column
has a foreign key constraint. In this way the user can choose the key value
based from a combo-box.
To minimise possible performance problems, the model only loads the foreign
key field, instead of the whole related table.
Except for not-null columns, a NULL value is given as possible value in
the foreign-key combo-box.
See issue #614
When no table is selected in the Browse Data tab, either because the
current database is empty or because no database is opened, we would
forever show the "determining row count" message even though nothing is
to be determined at this point. This commit makes sure to show a better
"0 - 0 of 0" message as we did before.
See issue #1654.
When renaming a column using SQLite >= 3.25 and changing something else
in the table, you would lose all the data in the renamed column. This is
because the second part of the alterTable() function (the part after the
renaming) didn't know about the new column name and so assumed it still
to be the old one.
See issue #1650.
There are three reasons for not hard-coding the shortcut names in tool-tips
or other texts inside the UI elements:
- Qt uses portable names for the shortcuts, that are translated to different
key combinations depending on the operating system, e.g. Ctrl is translated
to Cmd in MacOS.
- An eventual change in a shortcut is propagated to user strings affecting
translations.
- If we ever allow configuring the shortcuts in Preferences, the text
would be incoherent.
The shortcuts are added programmatically to the tool-tips and consequently
they are removed from the UI files. The translation files have been updated
semi-automatically so the translated strings aren't lost.
Shortcuts have been added to actions that lacked them (because they are
implemented through other means) so they can be used. The WidgetShortcut
scope prevents in those cases any interference with the current shortcut
logic.
In the case of Ctrl+Return for "Execute all/selected SQL", it has been
moved from code to UI file, since it no longer made sense.
See issue #721
This translation was working for Ubuntu 16.04, because it matched the
official Qt translation for Shift, but in Qt5.9.5 (Ubuntu 18.04) the
translation is no longer abbreviated (Mayúsculas) and the former
translation breaks the shortcuts. Using the original English terms should
work for all versions and it is automatically translated in the display.
NSIS was used up to v3.10.1 and then we moved to MSI. The Windows Installer will now be able to detect if a previous version was installed using NSIS and uninstall it before installing the new version.
See issue #1642.
This shows a short text in the Remote dock when no certificates are
configured yet. This text contains links to the dbhub.io page and gives
at least some information on the overall process. As soon as the first
certificate is imported, the old view is shown instead.
Change the path of used libraries to a cache entry instead of a normal variable. More info https://cmake.org/cmake/help/latest/command/set.html#set-cache-entry
If you are automating Windows build, you have to change the path of every library in CMakeLists.txt, to match your system, after every update to DB4S source.
This commit will set every library path to a cache entry instead of a normal value so it can be changed from the commandline using the `-D` flag.
For example, to change Qt5 path run `cmake -DQT5_PATH=/path/to/qt5 ...` to let CMake use this path instead of the one in CMakeLists.txt. This doesn't affect the current used paths and they will continue to work, and be used, if they are not replaced on the commandline.
All the new committed files are the same as the current files, but have "_new" suffix so they can be tested without breaking the current build system. Once tested, the old files can be removed and the new ones renamed.
See issue #1630.
This fixes a bug in the code to modify multiple table columns in one go.
We were accidentally adding more tracked columns when adding a new
column and then changing its name.
See issue #1627.
The POSIX flag is passed to QScintilla for stardardisation of the regex
implementation. This only changes the syntax for sub-expressions. Before
this change it was '\( \)'. With the POSIX flag it is simply '( )' for
sub-expressions, consequently \( and \( have to be used for matching
parenthesis.
Both the Qt implementation (used in filters and REGEXP operator) and the
C++11 standard (possibly used in the future for the editor, if QScintilla
add support) use the the new syntax for sub-expressions.
References:
https://en.cppreference.com/w/cpp/regex/syntax_option_type
> If no grammar is chosen, ECMAScript is assumed to be selected.
https://en.cppreference.com/w/cpp/regex/ecmascript
> The Atom ( Disjunction ) is marked subexpression
Qt also uses subexpressions in the POSIX style.
http://doc.qt.io/qt-5/qregexp.html#capturing-parentheses
See issue #1625
The *.qm translations files were missing from being bundled with the installer, so the default strings weren't translated and were defaulting to English.
See #1592.
Commit 7394640 added a workaround for a bug in QNetworkAccessManager about a year ago but the required DLL "qgenericbearer.dll" for it wasn't included with the build which was causing "The network is not accessible" error.
The required file is now included till the bug is fixed and probably
should be removed when it is no longer needed.
See https://bugreports.qt.io/browse/QTBUG-40332
See also #1592.