New button and key sequence (ESC) to close the search bar.
Clear selection (by not avoiding the search) when the text to search is
deleted, as expected by @pamtbaau at #1220.
Exporting SQL files crashed because of the multi-threaded loading of
data which also affects the SQL export. Because the table models were
destructed relatively quickly during the export's progress estimation,
their threads were still running and trying to access invalid data
structures.
See issue #1228.
When fetching data from an empty table or from an SQL query which
doesn't return any rows, we didn't emit the finishedFetch() signal which
is used to indicate that the fetching is completed. This is fixed by
this commit, so that the signal is always emitted no matter the number
of rows returned.
This fixes (probably besides other things) the current row numbers at
the bottom of the Browse Data tab when changing from a non-empty table
to an empty one.
Deactivate all menu actions in the context menu in the Browse Data tab
if no database file is opened. Without a database the read-only actions
were still enabled and would lead to a crash.
See issue #1228.
The Column Field is resized to the content.
The dummy column has been removed and the header no longer stretches the
last section property.
The table has alternating row colors for easy following of the field
checks.
Ctrl+H invokes the Copy with Headersers action in the Extended Table Widget
as suggested in #1058.
The following options in context menu display now their shortcuts:
Set to Null, Copy, Copy with Headers and Paste.
Some other shortcuts are now displayed in the corresponding tooltips.
The following scroll width functionalities are added to QScintilla:
setScrollWidth, getScrollWidth, setScrollWidthTracking and
getScrollWidthTracking.
This allows setting a lower value for the initial scroll width (default is
2000 pixels). Consequently, the horizontal scroll is only visible if the
SQL lines become bigger than window width.
The scroll width, though, is never reduced by Scintilla for performance
reasons.
See this for explanation:
https://github.com/jacobslusser/ScintillaNET/issues/216
And see this for a possible implementation of a fully adjusted scroll
width with fixed-width fonts:
https://groups.google.com/forum/#!topic/scintilla-interest/ly8u7mVDgyQ
The user is now able of selecting a range of contiguous points in any of
the graphs of the plot, through rectangle selection or click in single
point. This selection triggers automatically the selection of the
corresponding lines in the browsed table. In this way the user can analyse
the plot in detail.
Two other minor improvements: spelling error fixed and the dummy column in
the plot selection table has now transparent foreground (intends to avoid
wondering of the user about what functionality provides this column).
If multiple SQL tabs are opened, show or hide the find bar for all of
them when changing the check state of the button. Also apply the find
bar state to newly opened SQL tabs.
This also fixes a crash which would happen if you click the Find button
prior to opening any SQL tabs, i.e. before opening the first database
file.
The find operations in QScintilla are used for implementing a find frame
in the SQL Editor of the main window. A checkable tool button is added
in the SQL Editor toolbar for showing and hiding this frame.
There are check boxes for Whole Words, Case Sensitive and Regular
Expressions. The QScintilla facilities in the findFirst method are used
for the implementation.
Avoid querying the position in the text stream using Qt's pos() function
to update the progress dialog. Instead keep track of the stream position
manually. This is possible here because we don't ever seek in the file.
In result, this speeds up the CSV import dramatically.
A new option in the context menu of the table widget is added for copying
to clipboard the content of the selected cells prepended with the
appropiate column names.
See issue #1058
The Colum Display Format Dialog recognizes now the current format in the
combo instead of falling back to Custom.
The display format items have been reorganized in groups with separators
in between. This is because the strict alphabetical order looses sense in
the translations.
QProgressDialog only takes an int as the maximum value and the current
value. So using the number of bytes parsed so far isn't going to work
for very large files when an int will overflow. This commit changes this
by precalculating a progress indicator and handing that over to the
QProgressDialog object.
See issue #1212.
This fixes a regression which recently was introduced by commit
955848f957. Because the status message was
overwritten by a version without the returned row count, you would never
see the intended status message when running SELECT statements in the
Execute SQL tab.
See issue #1211.
QScintilla was incorrectly converting the text of the calltips to Latin1
although the encoding was set to UTF-8.
This fixes#1107 (Russian) and #1206 (Korean).
Add special filters "=''" and "<>''" to the filter row in the Browse
Data tab for filtering for empty string and non-empty-string fields. The
latter also excludes all NULL fields because that's how SQLite works.
See issue #1189.
Don't use the QSettings class directly. This keeps the code more
consistent and makes it a bit easier to read. It also means that all
parts of the code profit from the settings cache that we have
implemented in the Settings class.
This should hopefully build just like before but reduce the number of
packages download when setting up the build environment. This way we
should get our Travis results faster and reduce the number of falsely
reported build errors, too.
This improves the BLOB detection in the Browse Data tab which was
working pretty poorly because it was only looking for null bytes, not
for any other non-printable characters.
See issue #1201.