Age | Commit message (Collapse) | Author |
|
* Remove all uses of `using namespace std` from header files (although a
few specific cases of things like `using std::vector` remain)
* Move all existing uses of `using namespace std` in cpp files to after the
header includes
* Make coordinating changes so it builds again.
Qt6 builds on Windows were breaking because of namespace collision between
std::byte and some version of `byte` in one of Qt's namespaces. That breakage
is now fixed.
It would be good to systematically clean up all `using` declarations in header
files to ensure nothing is leaking out, but that's for another time.
|
|
The cmake file now takes a QT_VERSION string setting. The first
character of the string is “6”, then cmake calls find_package
on Qt6…otherwise, it calls find_package on Qt5.
Qt 6.5.2 builds added to the GitHub Actions build matrix.
|
|
|
|
QTextStream::setCodec() is no longer a thing in Qt6. Most of
our call are to set the codec to UTF-8, which happens to be the
default encoding in Qt6. So make a macro so this can compile
in both Qt5 and Qt6.
|
|
I think these changes would still be fine in Qt5, but
are required for Qt6.
Also DataLocation was deprecated in v6, AppLocalDataLocation
is the same for both Qt5 and Qt6.
|
|
* Replace std::random_shuffle() with std::shuffle().
* Populate switch statements which were checking the
Move enums, but not Move::PlaceError.
* endl -> Qt::endl for QTextStream usage.
* QString::SkipEmptyParts -> Qt::SkipEmptyParts
* QLabel::pixmap() now takes Qt::ReturnByValue
* Use QElapsedTimer where appropriate.
|
|
When reading, leave ISO-8859-1 as the default, and only change stream encoding if #character-encoding present. When writing, set encoding to UTF-8 and write #character-encoding pragma at the top of the .gcg file.
|
|
I may add it back later as an option.
|
|
Mostly signed/unsigned/size_t mismatches, except for one
case treating a bool as an integer.
|
|
Building on macOS right now. cmake will soon replace qmake
as the supported build system. Some notes about the
implementation:
* libquackle and libquackleio can be separately built as before.
* quacker still links to the static libraries for libquackle and libquackleio,
but quacker's cmake file includes those projects, which means
everything builds at once. No more need to run separate builds
of everything to get a GUI. And debugging is easier now that
the libraries are incorporated into the quacker project.
* I tried to get cmake to build the macOS app bundle, but cmake
is unable, by conventional means, to build a non-flat Resources
directory (which many people have complained about). Right
now, the default build just builds the binary, and you have to run
it from the command-line. But -DBUNDLE=ON will build a shell
of a bundle. It won't work, but I intend to create an Xcode project
from it for building the bundle, to make it easier for me to deliver
a code-signed and notarized app bundle.
* I've got CMakeLists.txt files for the resources, but they're not
really doing anything right now. Maybe later.
* Minimum macOS version for the cmake build is 10.10.
|
|
Most are Qt4-isms, except where noted.
* Replaced QFontMetrics::width with QFontMetrics::horizontalAdvance,
conditionally as the latter wasn't even introduced until Qt 5.11.
* QColor::light and dark instead of QColor::light and dark.
* QString() instead of QString::null.
* std::sort instead of qSort
* QTreeWidgetItem::setSelected instead of QTreeWidget::setItemSelected.
* QFileDialog::setOption(QFileDialog::DontConfirmOverwrite) instead
of QFileDialog::setConfirmOverwrite(false).
* QDrag::exec instead of QDrag::start.
|
|
|
|
Also, extend copyright to 2019.
|
|
Xcode now wants an asset catalog thing
with proper .png files rather than a .icns
thing. Bits shuffled accordingly.
Also, higher res icon. Slightly different
design. Only on Mac for now.
Also, move minimum macOS to 10.9.
Also fix 1.0.4 update versioning oversight.
|
|
Also, add a bit of parallelization, do a few other cleanups
on the yml and .pro files. And push C++14 flags everywhere
into the build system.
|
|
Now builds on Qt 5.9.1, and works on Mac, Windows, Linux.
|
|
Port quackle to Qt 5.5
|
|
Not perfect, but it now does a decent job of not corrupting GCGs when
it loads one where players have messed up tile counts/drawing in the
end-game. It also tries to annotate these for the player and in any
GCG file that's round-tripped.
Also, a lot of C++11-izing of ranged iterators.
|
|
This reverts part of commit bb2decabe18056b1aaaab29eebbc0f80e1f5e7ab.
|
|
|
|
Generate Python, Lua and Go bindings through SWIG
|
|
Found a crash where you enter "ex 4" twice,
and it would crash. This led me to look up
how this was implemented, and it wasn't
very robust. It also didn't save properly in
the GCG. So I created a new move type
which I called a BlindExchange and implemented
it throughout the system.
|
|
A checkbox in the preferences dialog now allows
you to configure Quackle so that plays with illegal
words which are left unchallenged score zero.
Obviously, off by default. But useful for entering
games as part of the Marty Gabriel/Scott Garner
world record scoring attempt. This is apparently
what the Guinness folks are looking for.
|
|
A few character encoding things that had still been
missed, and preliminary support for
#character-encoding in GCG files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I wanted to throw this in a background thread, and I
will, but for now, we need to get something out the
door, and this seems sensible anyway.
Couple of other bug fixes...
* Add a copyright.
* Popup menu says "Add new lexica..." but should say
"Add new lexicon...".
* Copyrights were refusing to wordwrap, thus forcing
the settings pane to be wide.
|
|
* Start using g++ 4.8 and clang.
* Fix missing -std=c++11 flags.
* Builds which failed torched remaining builds, which meant more iteration.
Now, they recover and continue correctly.
* Remove some clang compiler warnings generated by Qt files out of my control.
|
|
|
|
* Fix a number of remaining bugs in the lexicon dialog.
* Fix an error reading the v1 DAWG.
* Improve the word counting mechanism.
* Make sure the lexicn dialog properly selects and loads
its dictionary after it's done.
* Implement deleting of user dictionaries.
* Clean up dictionary info text in lexicon dialog.
* Disable gaddag generation...still have to fix that up
to happen at sensible times and with user notification.
|
|
Get enables and disables right, efficient computation
of word counts, etc.
|
|
Now prints better stats. Now loads the
dictionary you're editing. Now disables the
Delete button at appropriate times.
|
|
Words are loaded and hashed. Duplicates are
discovered. Alphabets are dealt with. Merging
of multiple word lists works. This is good stuff.
Saving the resulting dictionaries has not been
tried, yet, and the gui code for saving needs to
be finished off, yet.
|
|
V1 DAWGs now include an alphabet.
Begin creating DAWGs which extend other DAWGs.
In general, laying the groundwork for plain text import
to DAWG.
|
|
Need to add a user interface, but gaddags are now
auto-generated if they can't be found.
Some specific improvements here:
* FixedLengthString gained a pop_back member.
* Add code to allow v1 gaddags and v0 dawgs to work
together.
* Change memory allocation of dawgs and gaddags to
be dynamic (the old limit didn't accommodate the
ridiculously large Polish dictionary in the gaddag)
* The Settings class now knows a bit about generating
gaddags. This will be important for giving UI feedback.
* Fixed several places using filenames which should be
using string, not UVString.
* Dawg/GaddagFactory should have been using
UVString, not QString. My misunderstanding.
|
|
|
|
Basically the same thing I just did to the DAWG files,
now done to GADDAGs. Also, add hashing, and
make sure GADDAGs only load if their hash matches
that of the DAWG files.
|
|
Make reader and writer for the new format, while
maintaing compatibility with the old. Things to
note of the new format...
* Now has a header, with version number, MD5, and word count.
* No longer has terminator bit. Nodes are terminated by
a non-zero playability.
* Which means letters have one more bit. So we can now
support more than 32 letters. Important for Slovak alphabet.
Also, various cleanups and refactorings.
|
|
Same thing I just did for the gaddag code I'm now doing
for the dawg code. While I was at it, I made some
improvements to the dawg code...
* Instead of adding multiple cross-checks for various
kinds of node metadata, there's now only one cross-
check...a hash applied to each node.
* Some useless variables/members have been excised.
* Add ability to do a word count (cryptohash coming soon).
* Make it possible to call generate() and writeIndex()
multiple times without corrupting the dictionary.
|
|
A few things from my last commit needed to be
fixed or improved.
|
|
Prepping to build the gaddag maker into the quacker ui.
Built a new class called GaddagFactory to do this and
cleaned up the code a bit.
makegaddag still builds exactly as it did before.
|
|
* Fix compiler warnings
* Add Visual Studio 2013 solution
* Tweak .pro files
* Most importantly, rename main 'quackle' project to
'libquackle' to avoid solution-level name conflict. This
only affects the VS build.
|
|
Not a very interesting commit...only changes in comments.
|
|
We'll be incorporating the Norwegian dictionary which is covered
under GPL3, so that's the reason for the move.
|
|
|