This updates the qmake and cmake files to enable C++14 support in the
compiler. It also simplifies a function by using a new function
introduced in C++14.
Install the SVG logo as scalable icon in the global hicolor icon theme:
this way, application launchers/browsers that show icons bigger than
256 pixels can show a good-looking icon from the SVG logo instead of
upscaling the 256px PNG icon.
* Initial Dutch (nl) translation for v3.12.1
* Added missing translation phrase for AddRecordDialog and fixed a typo
* Added the proper references in configuration files to compile the Dutch translation into the build.
* Amended translations with changes requested in review 504832399.
* Fix CMakeLists.txt
* Correct one untranslated item
Co-authored-by: SeongTae Jeong <seongtaej98@gmail.com>
DbStructureQItemViewFacade provides a simple read only interface to a
QAbstractItemView (e.g. QTreeView) that holds a model() of type
DBStructureModel.
It is designed to simplify the access to the actual selected node.
The Class follows the facade design pattern.
But it doesn't control the lifecycle of the itemView it is connected to.
This changes the different tabs in the Browse Data tab to docks. Docks
can be tabbed as well (which is also the default now) but also allow
free floating windows or split views.
See issues #756, #1465, #1905, #2229, #2283.
This splits up the RemoteDatabase class into two classes, RemoteDatabase
and RemoteNetwork. The first is for managing the directory of cloned
databases while the second is for network handling only. Moving the
network code into a separate class requires some rewriting but should
make the code easier to maintain and extend.
When opening a clone of a remote database show a list of all branches,
releases, and tags in the Remote dock and show the commit list when
selecting one of them.
The Remote dock shows a list of all databases on dbhub.io. Double
clicking a database downloads and opens it. If the database has already
been downloaded before, the local file is simply opened. This only works
for a small number of databases: To open the database you want, you just
search for it and double click it. But for a larger number of databases
on dbhub.io this does not perform very well since finding a database can
be very difficult. Because of this this commit adds a new view which
shows all checked out databases, i.e. those databases which are already
downloaded. Double clicking one of these opens it without trying to
update it first.
In the future this might also provide a place to add extra options like
deleting local copies.
Correct text case usage in local FindXXX.cmake and CMakeLists.txt files.
During usage, warning messages appear due to differences in file name/library name case.
Resolution is to match file name case with variable name case where it appears in all CMake files.
i.e. file name - QCustomPlot.cmake
variable name QCustomPlot_{LIBRARIES, INCLUDE_DIRS, et al}
Affects CMakeLists.txt and cmake/FindXXX.cmake files.
The canonical location for AppStream XML files has been changed to
/usr/share/metainfo four years ago at least, with /usr/share/appdata
left as legacy location. It is time to switch to the right location.
Replace the Antlr lexer and parser for CREATE INDEX statements a new
lexer and parser generated with flex and bison. This commit is a first
step towards replacing all Antlr-realted parts of the parser. Until then
the new bison-generated parser is only used for CREATE INDEX statements
and the old Antlr-generated parser is used for CREATE TABLE statements.
These are the main reasons for replacing all of the Antlr parser:
- Getting rid of the Antlr runtime library as a dependency.
- Not depending on an old piece of sotware (we are depending on Antlr2
while Antlr4 is available at the moment. However, migrating to Antlr4
is as bad as migrating to bison).
- Better handling of expressions in statements. This proved to be a
consistent source of problems over the last couple of years.
- Somewhat better Unicode support.
- Reentrant code / multithreading support.
- I can finally uninstall Java from my computer.
See #1990.
This adds a new widget called TableBrowser which does everything the
Browse Data tab did before. All the UI data and all the code related to
this tab is moved into the new widget class. The main window now simply
uses the new widget instead of implementing all this stuff itself.
I mainly see three benefits from this change:
1) The main window class becomes smaller and starts looking less like a
master class which manages all of the application. This should make it
easier for new developers to find their way around the code.
2) A better separation of the table browser and the remaining main
window makes it clearer which class class is responsible for what. Again
this makes it easier to maintain the code when it grows.
3) If we ever want to have split views, multiple Browse Data tabs, or
something similar this is an absolute prerequisite.
This commit obviously changes a lot of code. So be prepared for
unintended changes and consider doing some extra testing.
See issue #1972.
This adds support for modifying the columns a constraint is applied on
in the Constraints tab of the Edit Table dialog. This is a major step
towards full constraint editing capabilities (adding new constraints,
modifying constraint type, and editing constraint type-dependent
parameters are the other missing pieces).
The reasoning behind the popup dialog is to not introduce another full
dialog on top of the Edit Table dialog. After opening the Edit Table
dialog, then switching to the Constraints tab, then opening another
modal dialog, I felt like losing track of what I am currently editing.
The popup dialog is certainly not great but feels a bit less intrusive.
Any suggestions regarding this are appreciated.
While testing the original database from issue #1892 which contains
hundreds of tables and fields, I noticed how long the loading of the
database structure takes. This is especially problematic since it needs
to be reloaded on various occasions, e.g. running most statements in the
Execute SQL tab, which stalls the application every time.
According to a profiler it is the QIcon constructor which requires most
of the time. By introducing this small icon cache class we can reduce
the time for loading icons to almost nothing.
While still not perfect the UI already feels much more responsive with
this patch.
From upstream source, QHexEdit is intended to be a modular widget
for Qt5. (README @ https://github.com/Simsys/qhexedit2)
Add ability for platforms that already have QHexEdit installed to
build DB4S against installed (external to DB4S) QHexEdit library.
Current version of library available is consistent with version
contained in DB4S project `libs` folder.
(see https://repology.org/project/qhexedit2/versions)
Default of CMake flag FORCE_INTERNAL_QHEXEDIT is ON (enabled) so
as to minimize impact to current development workflow and other
platforms. Using flag is left as an option to package managers.
Problem identified in Github Issue #1910.
Update to CMake had policy warning of AUTOMOC usage.
See https://cmake.org/cmake/help/latest/policy/CMP0071.html
Commit adds instructions to silence the warning.
Affect of AUTOMOC behaviour with 'new' needs further study.
This adds a new dialog, accessible from the Remote tab in the Preferences
Dialog, which allows the user to configure the proxy to use for all
network connections.
The new default is to use the system-wide proxy settings.
See issue #979.
Include path used for QHexEdit in EditDialog.cpp is "implementation specific"
to how DB4S uses the QHexEdit library. Change is to make usage of library
more generic.
A new dialog for editing conditional formats that can be invoked from the
filter line editor or from the data browser contextual menus. The dialog
allows adding and removing conditional formats, changing the priority order
and editing foreground colour, background colour and filter condition.
The conditional formats have been expanded to allow defining the foreground
colour. By default is the setting configured by user.
This is a continuation of the functionality introduced in PR #1503.
This is so the new JSON library we're using doesn't break things. :)
Note also the "8.1" added to the end of the vcvars line in the batch
file, so the correct SDK is selected.
Without it, when both MSVC 2015 & MSVC 2017 are installed, the MSVC
2015 installation (by default) will be unable to find rc.exe.
Replace Qt's own JSON library functions by Niels Lohmann's JSON library
in the Export JSON dialog. This was necessary because for very large
JSON objects Qt's library functions generated incomplete JSON exports.
See issue #1789.
* 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]
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.
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
* Add warnings to cmake compilation
Use the same set of warning flags that are used for qmake compilation.
See comments in #1718.
* Add condition for warning flags not supported by GCC 5.5
Satisfy Travis build by adding the unrecognised warning flags only when
the compiler version is greater or equal 7.0. Maybe those flags are
available in previous versions, but I don't know when they were introduced.
Tested with GCC 7.3.
* CMake option for enabling GCC warnings
This option follows the qmake configuration, where the same all_warnings
option exist. This allows users to select compiling with or without
warnings using "cmake -DALL_WARNINGS=ON" or OFF.
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.