Commit Graph

2844 Commits

Author SHA1 Message Date
mgrojo
ef90d30cf1 Give appropriate compilation instruction for extension-formats
See PR #1716
2019-03-06 21:30:53 +01:00
apjarvis
c8318a17ec New extension for decoding base64 and plist data (#1716)
Added an SQLite extension for data format conversions with the current features:

* encode and decode of base64
* decode 'plist' data structures.

Decoding of base64 checks whether it is entirely ascii and if so create
a text object otherwise create a blob.

It can be loaded as an SQLite extension and be invoked via a custom
'Edit display format'. 

The extension provides the following SQL functions:
- plist
- unBase64
- toBase64
2019-03-06 20:43:53 +01:00
Scott Furry
543b98ec55 Enable build against external QCustomPlot (#1784)
* Enable build against external QCustomPlot

Source-base distribution has stand-alone QCustomPlot library package.
Feature request is to modify the build instructions to enable use of
external library, rather than building internal supplied library,
with cmd-line switch.

If unable to locate external library, fallback to building internal QCustomPlot.
Build internal is on by default.

* Enable build against external QCustomPlot #1784 - revised

Invert naming/logic:
FORCE_INTERNAL_QCUSTOMPLOT=ON(default) will build QCustomPlot library provided sources
(consistent with current processes)

FORCE_INTERNAL_QCUSTOMPLOT=OFF will search for external QCustomPlot library on system and
fall back to internal if not found.

[github #1784]
2019-03-06 12:29:42 +01:00
Martin Kleusberg
61e13aec03 Fix possible crash when sorted column does not exist anymore
When sorting a table or a view by a column, then removing enough columns
from that table, that view, or the underlying table of the view so that
the column index get out of bound, and then going back to browse that
table the application crashes. This commit makes sure to ignore such
columns which would cause a crash.

See issue #1774.
2019-03-06 12:01:39 +01:00
Cristian Lupascu
db17cd9e4f Add Insert for Views using AddRecordDialog (#141) 2019-03-06 11:13:56 +01:00
Scott Furry
b4af221ee1 Improve FindQScintilla.cmake functioning
Changes depend on successful find_package(Qt5...) call and when
building against external QScintilla.

Modified FindQScintilla.cmake providing extra hints of locations
to search for needed header files. Hints include paths based on
where Qt5 is installed. Presuming Unix/Linux distributions will
put QScintilla header files under Qt5 header folders.
2019-03-06 10:27:28 +01:00
Justin Clift
1cf95ec9f9 Merge pull request #1786 from scottfurry/iccp_img_fix
Supress libpng warning messages
2019-03-05 16:39:20 +11:00
Scott Furry
caff4bd683 Supress libpng warning messages
Warning messages from libpng are printed when running SQLiteBrowser.
Messages state:

libpng warning: iCCP: known incorrect sRGB profile

Five messages are printed at once during execution and were isolated
to when preferences dialog was called. Problem was isolated to the
select flag images.

Opening ./src/translations/flags/{cn,de,fr,ru,us}.png images in GIMP
a warning about the iccp profile was produced. Profile was ID'd as:

sRGB IEC61966-2.1
IEC 61966-2.1 Default RGB colour space - sRGB
Manufacturer: IEC http://www.iec.ch
Copyright: Copyright (c) 1998 Hewlett-Packard Company

Opening ./images/sqlitebrowser.png image in GIMP also produced a
warning about the iccp profile. Profile was ID'd as:

HD 709-A
Copyright: Copyright Apple Computer, Inc., 2010

Pull Request corrects these images. Each affected image was run through
imagemagic convert command (convert <file.png> --strip <file.png>).

Images appear normal during program execution.
2019-03-04 19:48:57 -07:00
mgrojo
1b414b7e35 Avoid style-sheet inheritance in colour chooser boxes in Preferences
This avoid propagating the style-sheet to other widgets. For example, to
the tool-tip shown in the frame. But it could also fixed the problem
reported for Windows in issue #1493:
"Editing color preferences dialog background takes the last chosen color."
"Color dialog becomes obscured by the changing color patterns of each
selection."
2019-03-04 21:17:02 +01:00
mgrojo
e9d8af6059 Removed code for changing the default Qt behaviour for read-only+selectable
This code was added for #1123 but it isn't working well, some times the
read-only style is used when the cell is writable and vice versa. It has
also problems in the Dark Style mode.

So it is better to remove this code, the read-only characteristic is
hinted by the non-blinking caret. The same should be done for the
QScintilla editors, but it does not have such method.

See issue #1493
2019-03-04 20:42:53 +01:00
mgrojo
baaeea8844 Fix table header issues in a more portable way
This undoes 9e2f8e5ede and try to solve the
issues present in Linux with Qt 5.9 and the one in Windows with the Dark
Style at the same time.

I think both issues come from using the filter box height as y offset. The
real offset has to be the original table header height. In Windows+Dark the
box is apparently shorter, so after moving, part of the header is clipped.
In Linux+Qt5.9, the original header height is shorter than the filter box,
so moving by the filter box height clips the filter box at the bottom.

The new height increment for the table header is also reduced to 4, so the
margin is 2 in both the bottom and the top of the filter boxes.
See issue #1493
2019-03-03 20:29:59 +01:00
mgrojo
4b5b5c6238 Detect data with embedded zeros as binary also for ISO-8859
See issues #1772 and #1773
2019-03-03 14:26:16 +01:00
Martin Kleusberg
bede43f76c Fix in-memory databases bein read only
This problem was introduced in 5c727e8b70.
2019-03-03 12:18:28 +01:00
Martin Kleusberg
fa203c4c61 Fix multiple problems in 0f6946c19d
Fix multiple problems which were introduced in commit
0f6946c19d. They all are about detection
of transaction statements. First it turned out that the commit slightly
changed the behaviour of the dirty parameter which, although there did
not seem to be any consequences of this, was turned back into the old
behaviour. Then the detection of transaction statements depended on the
structure updated flag which is totally wrong and needed to be fixed.
Next, it turned out that SQLite executed ";COMMIT;" as one statement
instead of two. This means we need to skip until after the first
semicolon and not until before it. And finally, after skipping until
after the semicolon we should perform the check for transaction
statements again before blindly giving the next statement to SQLite.

See issue #1777.
2019-03-03 12:04:56 +01:00
mgrojo
9e2f8e5ede Fix for table header filters under Ubuntu Linux 18.04 and Qt 5.9.5
The filter box was clipped one or two pixels for both the follow-desktop
mode and the dark-style mode. This fixes it, but not sure if it will fix
the problem reported in issue #1493 in Windows.
2019-03-02 19:05:24 +01:00
mgrojo
0adb0af133 Fix text detection for blobs containing bytes in ASCII range up to a zero
Despite we provide a length for toUnicode() the validity/decode is being
performed only up to the first null character, so it passes as text blobs
containing bytes in the ASCII range, followed by a zero and anything else
after.

See issue #1772
2019-03-02 13:51:31 +01:00
Manuel
a7fc1ab541 Update issue templates
Improve comment with instructions.
2019-03-01 21:52:19 +01:00
mgrojo
230c40e8ee New setting allowing to set a dark style using a style-sheet
A new setting allows to follow the system style or set a new dark style
based on a the style-sheet provided by
https://github.com/ColinDuquesnoy/QDarkStyleSheet
The style-sheet is licensed under the MIT license. Images contained in
that project are licensed under CC-BY license.

* Set colours using style-sheet in Data Browser tab of Preferences

The colours of the frame and text-lines previewing the settings in Data
Browser tab need to have being set using a style-sheet, otherwise they
are eclipsed by the dark style-sheet when in use.

* Update preference colours when the application style is changed

In order to have matching colours in all the preferences, the individual
colour settings in Data Browser and SQL tabs are reset to default values
matching the corresponding style setting (dark stylesheet or follow desktop,
which could be dark or light as always).

Additionally, several problems with colour settings in QScintilla have
been fixed:
- We don't use indentation guides
- both sets of lexer colour settings must be used, otherwise the result is
inconsistant and unpredictable:
    * lexer->setDefaultColor|Paper and lexer->setColor|Paper

See issues #1751 #1493 and #1738
2019-03-01 21:07:44 +01:00
mgrojo
1a90acc52f Add license of ColinDuquesnoy/QDarkStyleSheet 2019-03-01 20:45:23 +01:00
Martin Kleusberg
85cdb59e08 Fix crash in f3a54e4c71
Also add a new helper function which makes the code a bit easier
understand.
2019-03-01 16:26:29 +01:00
Martin Kleusberg
f3a54e4c71 Add support for sorting by multiple columns in the Browse Data tab
This allows sorting by multiple columns (as in ORDER BY Field1, Field2)
by holding the Control key while clicking on another column header in
the Browse Data tab.

See issue #1761.
2019-03-01 11:32:38 +01:00
Martin Kleusberg
00bc7db5c0 Always set sort direction to ascending when sorting a new column
When changing the sort column in the Browse Data tab we always toggled
the sort direction too. So when Field1 was sorted in ascending order,
clicking on Field2 would sort it in descending order. If Field1 was
sorted in descending order, clicking on Field2 would sort it in
ascending order. Now in both cases Field2 is sorted in ascending order
first.
2019-03-01 10:34:55 +01:00
mgrojo
cc67969d73 Update preference colours when the application style is changed
In order to have matching colours in all the preferences, the individual
colour settings in Data Browser and SQL tabs are reset to default values
matching the corresponding style setting (dark stylesheet or follow desktop,
which could be dark or light as always).

Additionally, several problems with colour settings in QScintilla have
been fixed:
- We don't use indentation guides
- both sets of lexer colour settings must be used, otherwise the result is
inconsistant and unpredictable:
    * lexer->setDefaultColor|Paper and lexer->setColor|Paper
2019-02-28 00:02:47 +01:00
Martin Kleusberg
e52f2054f2 grammar: Fix keywords as table name and keywords as column name
SQLite allows some keywords to be used for table names and some other
keywords to be used for column names without using any quotes. Our
grammar parser needs to know which keywords are allowed and which are
not. In the two lists (one for table names and one for column names)
there were a few errors and omissions. This commit should fix them.

This was pointed out in #1716.
2019-02-27 12:24:44 +01:00
Martin Kleusberg
fcdcfbdc79 Fix bug in 0f6946c19d
Fix a stupid mistake in commit 0f6946c19d.
Apparently I wasn't able to count to 6.
2019-02-27 11:57:38 +01:00
Cristian Lupascu
ff455c7038 Enable 'Edit Database Cell' when view is editable (#1756) 2019-02-25 19:38:54 +01:00
Martin Kleusberg
0f6946c19d Fix transaction detection in SQL import
Fix a couple of problems in the detection of transaction statements
during the SQL import. Before this the detection was case-dependent as
well as dependent on the number of spaces you use. Also it did not
detect 'END TRANSACTION', 'COMMIT TRANSACTION', or 'BEGIN <qualifier>
TRANSACTION' at all. Finally, it could modify your statements if you
embed string in them which look like transaction statements. All of this
is, hopefully, fixed in this commit.

See issue #1764.
2019-02-25 19:30:49 +01:00
mgrojo
e436cb2516 Move query in results panel of Execute SQL to the bottom
This gives precedence to the results of the query. It also removes the
comment characters that only made sense in the SQL User log. The text is
splitted so the texts are only translated once. The output of a multi-query
execution is also improved, because the results and line are constant
while the query part is quickly changing.

After the execution of a multi-query text, the final text is not separated
by a blank line so the result message is visible in the second.

For users wanting more space in the editor and query table, the results
panel is now collapsible, since the SQL Log can be used instead.

See issues #1709 and #1670.
2019-02-23 21:22:12 +01:00
mgrojo
dfb7974d27 Reduce (and unify) margins in the main tabs and in Execute SQL widgets
The margins have been set to 3 for the layouts of all the main tabs. It has
been generally reduced from the default (9), except for the DB Structure
which was set to 0 and now has been increased to 3 for uniformity with the
other tabs.

The margins of interior widgets in Execute SQL tab has also been reduced to
3 from the default.

See issues #1762 and #620.
2019-02-23 17:08:54 +01:00
mgrojo
e84589b12e Reduce (and unify) margins in the main tabs and in Execute SQL widgets
The margins have been set to 3 for the layouts of all the main tabs. It has
been generally reduced from the default (9), except for the DB Structure
which was set to 0 and now has been increased to 3 for uniformity with the
other tabs.

The margins of interior widgets in Execute SQL tab has also been reduced to
3 from the default.

See issues #1762 and #620.
2019-02-23 16:58:23 +01:00
Justin Clift
c7dd272ec6 Force DB4S to be displayed in light mode on macOS
We don't yet support Dark Mode on macOS Mojave (or above), so need
to keep in light mode.  Without this, DB4S is unusable.

Thanks to @jsejcksn for pointing us in the right direction. :)

See #1751 for for more details.
2019-02-23 18:28:51 +11:00
mgrojo
20c3e9d97d Set colours using style-sheet in Data Browser tab of Preferences
The colours of the frame and text-lines previewing the settings in Data
Browser tab need to have being set using a style-sheet, otherwise they
are eclipsed by the dark style-sheet when in use.
2019-02-23 00:23:12 +01:00
mgrojo
ed178689a4 New setting allowing to set a dark style using a style-sheet
A new setting allows to follow the system style or set a new dark style
based on a the style-sheet provided by
https://github.com/ColinDuquesnoy/QDarkStyleSheet
The style-sheet is licensed under the MIT license. Images contained in
that project are licensed under CC-BY license.

Pending issues:

- Use of stylesheets is incompatible to QPalette. Some colours for
previewing settings in the Preferences dialog are eclipsed by the style-
sheet
See https://github.com/ColinDuquesnoy/QDarkStyleSheet/issues/48

- Changing the style should select matching background and foreground
colours for the Browse Data and SQL tabs in Preferences.

See issues #1751 #1493 and #1738
2019-02-22 22:15:19 +01:00
Martin Kleusberg
a7a50c5e4c Fix crash when attaching an unencrypted database in the SQLCipher build
In builds with SQLCipher support enabled, attaching an unencrypted
database crashed the application.

See issue #1758.
2019-02-21 15:25:27 +01:00
Martin Kleusberg
5c727e8b70 Use the same code for creating new DBs as for opening existing DBs
We didn't install all the collations and callbacks we have when creating
a new database. They were only installed when opening an existing
database.

To avoid issues like this the code for creating a new database is
stripped down to a bare minimum. After the database is created, we
immediately close it now and open it again through the standard open
code.
2019-02-21 14:19:48 +01:00
Martin Kleusberg
282387ced7 Add new logging section for SQLite's error log
Add a new logging section to the SQL log panel called "Error Log".
Register a callback to receive errors and warnings from SQLite and add
them to the new error log section.

See issue #1754.
2019-02-21 14:19:47 +01:00
Martin Kleusberg
042e925f9f Make ExtendedScintilla widget run without a lexer
When using an ExtendedScintilla widget without setting a lexer, the
application would easily crash. This is improved by this commit.
2019-02-21 14:19:47 +01:00
Justin Clift
ee8f243623 Add GEOPOLY & RTREE compile time options to Win64 SQLite & SQLCipher builds 2019-02-21 22:32:30 +11:00
mgrojo
8ddfa75929 Disable word wrapping in the Browse Data table when using Qt 5.2.x
In order to work around #1658 (QTBUG-73721) the word wrapping is disabled
when compiling with Qt 5.12.x. This workaround will also allow compiling
with better macOS dark theme support by using Qt 5.12 (see issues #1493 and
#1751 and Qt bug reports: QTBUG-68891 and QTBUG-71020) without affecting
builds using previous versions of Qt.
2019-02-20 23:26:43 +01:00
Navdeep Singh Sidhu
49ed66b466 Merge branch 'master' into master 2019-02-20 04:35:22 -06:00
Martin Kleusberg
fbe4f167be Simplify code 2019-02-20 10:14:41 +01:00
Justin Clift
3822144770 Update currentrelease file for 3.11.1 2019-02-20 15:17:08 +11:00
Navdeep Singh Sidhu
5155ae43c6 Fixed other occurrences as well 2019-02-19 17:54:18 -06:00
Navdeep Singh Sidhu
8006d67e5b Updated linuxdeployqt link
Continuous version of linuxdeployqt was causing build failures, testing it with stable one.
2019-02-19 17:25:09 -06:00
Martin Kleusberg
a75acc01ef Move the automatic update check back into the main window class
See issue #1595.
2019-02-18 17:54:02 +01:00
Martin Kleusberg
c6567f910c Add 3.11.1 to README.md and to the issue templates 2019-02-18 17:34:07 +01:00
Martin Kleusberg
abac190e76 Make early network accesses more reliable when using WLAN
The automatic update check is performed early during the application
start. It turns out that, when using a Wifi connection, the Qt
networking code is not ready yet at this point which leads to an
"Network inaccessible" error. This commit delays the automatic update
check until the network configuration is loaded completely.

See issue #1595.
2019-02-17 13:45:10 +01:00
Justin Clift
1bfb97fb65 Add SQLITE_ENABLE_STAT4 to the nightly Windows builds
For the windows component of #1161.
2019-02-16 18:03:38 +11:00
Manuel
3b455afccf Allow custom display formats (#1720)
Allow user to define their own display formats. The SQL code is editable
and the combo box changes automatically to custom if the user edits one
of the predefined formats.

The display format (either custom or predefined) is validated with a 
case-insensitive regex so at least it contains a function applied to the column
name. 

Added a new callback for executeSQL following the model of sqlite3_exec.
Using this, the number of columns is got from a checking query execution. If
it is not one, the custom display format is also rejected.

Note that these validations might still be fooled in some unforeseen way, but
the users should know what they're doing.

See issue #573
2019-02-15 20:10:52 +01:00
Martin Kleusberg
14c82ea817 Fix alterTable() function
Fix a few issues in the alterTable() code. One type of issue would
happen if there are any keys or constraints in the table. Because the
check whether more changes are needed did not work as expected, we would
try to edit the table again, even though it is already correct. The
second type of issue (which can be triggered independently but which can
also be a follow-up issue to the first one) tries to access the table by
its old name even though it might already have been renamed.

See issue #1725.
2019-02-15 17:05:53 +01:00