The $(@D) (equivalent to $(dir $@)) tells us what the directory the
target is in. We could also have used the one for the source. They're
equivalent there.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
If you run
make V=1
Then we'll output the full command-line. It's useful for debugging
problems with the build.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
We use the -MG preprocessor option to the compiler to ask it to check
all #includes and tell us what's missing. Then our own rules will
generate the moc and uic files that the .cpp #include.
Unfortunately, our rules make uic generate output in qt-ui/ for
qt-ui/*.ui, while the compiler generates rules for no directory. We
need to fake it by forcing the generation.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Instead of listing objects, let's list sources. This matches also what
qmake and most other buildsystems do. The notable exception is the
kernel.
The reason that listing the sources will be interesting is because I'm
about to add rules to create the dependency files.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Similar to the qmake variable of the same name, this lists (at least)
the headers that may need moc to be run on. Adding more headers is not
a problem.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Since we're caching the include flags and linker flags, we should also
cache the exact helper binaries we're running. This avoids getting
errors because the environment changed.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
You may have noticed that running make is a little slow. Every time
that it is loaded, it will try to detect everything again. So,
instead, save the output and reload it the next time.
This is implemented by adding a rule that (re-)creates the
config.cache file, which is included by make. If the file doesn't
exist yet, make will first run the rule which creates it, then reload
itself.
You can also cause it to reconfigure by running "make configure".
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Configure.mk contains the detection rules, whereas Rules.mk contains
the rules to actually build Subsurface. This simplifies Makefile
greatly, which is the file that should be actually modified during
regular updates to the codebase.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Create three sections:
1) the detection rules
2) the main rules, what we usually edit
3) the build rules, which we usually don't change
Signed-off-by: Thiago Macieira <thiago@macieira.org>
A very simple to use widget:
StarWidget *stars = new StarWidget( windowParent);
stars->setMaximumStars(10);
stars->setCurrentStars( rand()%10);
stars->show();
connect(stars, SIGNAL(valueChanged(int)), someObj, SLOT(starsChangedValue(int)));
It currently uses a 'star.svg' file on the same folder as the binary.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Moves the DiveTrip model related code to models.h
The DiveTripModel was implemented in three parts:
DiveTripModel.h
DiveTripModel.cpp
MainWindow.cpp (the code to populate the model)
This patch changes the DiveTripModel from it's original
implementation to the file models.h, wich should store
all models (Dirk requested the Qt developers to not create
2 files per class, but instead to use a file for functionality,
and data-models are one functionality.)
Besides that, this code cleans up a bit the style:
removed operator<< for .push_back, const references where they apply,
moved the internal DiveItem class to the .cpp since it should be visible
only to the DiveTripModel class, and redesigned the current interface of
the model to be identical of the GTK one (used the UTF8-star and 2
subscribed, for instance).
Amit (the creator of the original code) should comment here if it's ok
with my changes.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This will take the DM4 XSLT into use.
In the future it is quite likely that we will have to start using
something more specific on top of the root element name to identify dive
log formats. But as "Dive" is currently a unique root element name for
us, this suffices for now.
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This XSLT can be used when exporting single dives from DM4 and importing
them to Subsurface.
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The events that had same time stamp were reversed in order on every new
load of the log file. This patch will keep the order static. (Changing
order is annoying when using version control to store the logs.)
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This literally just creates the dialog and does not hook things up with
the dive list.
The idea is to abstract out the idea behind the invalid dives to allow the
user to select / deselect all kinds of dives and then do statistics on
the selected ones.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Add dives from dive_table to the model/view using the functions provided
to extract the dives.
We do not yet handle trips.
Formatting of date/time, depth and duration need attention.
Relies on earlier patch to delay Qt ui construction.
We should look at the signals we publish to link to other widgets etc..
[Dirk Hohndel: use for_each_dive -- clean up some white space]
Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The Qt ui will need to read the dive_table to populate widgets with
dives. Gtk functionality in init_ui is required to parse the dives.
Split init_ui to allow parsing to proceed and complete before Qt ui
mainwindow constructor is called.
Play with qDebug()'s printf style (Thiago!)
Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fairly straight forward, so far just one tiny bit of code restructuring,
everything else separated cleanly.
Added statistics-gtk.c and statistics.h
This should make no difference to functionality.
Cherry-picked from Qt branch; fixed merge issues mostly caused by
dive_tags and Makefile changes.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Surprisingly straight forward, just a couple of places where we really mix
significant logic with UI code (for example setting the window title).
I had to move amount_selected from display-gtk.h to display.h - I guess
the number of dives that are selected is UI independent. But I wonder if
we still will track this as a global variable in a Qt UI (since the Gtk
selection logic is the main reason this existed in the first place).
Added a new info.h files for the necessary declarations.
This should make no difference to functionality.
Cherry-picked from Qt branch; fixed merge issues mostly caused by
dive_tags and Makefile changes.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added the code that will load and populate the Tank Info
ComboBox that`s used by the user to select the Cylinder
description.
Code curerntly implements more than the GTK version since
the GTK version of it was a plain-list, this one is a
table based model that can be used in ListViews ( like
we use now in the ComboBox ) but also in TableViews
( if there`s a need in the future to see everything
that`s catalogued in the Tank Info struct. )
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
dive_trip_list is simply a global variable, declared in dive.h.
The clear_trip_indexes() helper is purely logic and was moved to
divetrip.c - but then not deleted in divetrip-gtk.c
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
dive_trip_list is simply a global variable, declared in dive.h.
The clear_trip_indexes() helper is purely logic and was moved to
divetrip.c - but then not deleted in divetrip-gtk.c
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fairly straight forward, so far just one tiny bit of code restructuring,
everything else separated cleanly.
Added statistics-gtk.c and statistics.h
This should make no difference to functionality.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Surprisingly straight forward, just a couple of places where we really mix
significant logic with UI code (for example setting the window title).
I had to move amount_selected from display-gtk.h to display.h - I guess
the number of dives that are selected is UI independent. But I wonder if
we still will track this as a global variable in a Qt UI (since the Gtk
selection logic is the main reason this existed in the first place).
Added a new info.h files for the necessary declarations.
This should make no difference to functionality.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The Qtr_ hack isn't needed as in commit 720fc15b2dcd ("Introduce
QApplication") had already made sure that we are using gettext.
I didn't revert the two commits as I wanted to keep the added header
comments and fix the tooling in the Makefile as well.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Removed the use of operator<<() in a bunch of lines to do direct calls
this way the code will not scare non-c++ hearted people. :)
s
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This should wrap gettext nicely and replace the "_()" macros we use in C
code.
Also added comments to the top of all the new files.
Suggested-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
1 - Open File already open files, it tries to not break the Gtk version,
but some methods on the GTK version still need to be called inside Qt
because the code is too tight-coupled.
2 - Close file already close files, same comments for the open file dialog
applies here.
3 - The code for adding new cylinders in the cylinder dialog is done,
already works and it's integrated with the system. There's a need to
implement the edit and delete now, but it will be easyer since I'm
starting to not get lost on the code.
4 - Some functions that were used to convert unities have been moved to
convert.h ( can be changed later, put there because it's easyer to
find something that converts in a convert.h =p ) because they were
static functions that operated in the GTK version but I need those
functions in the Qt version too.
[Dirk Hohndel: lots and lots of whitespace and coding style changes]
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Add files for dive list model/view implementation. Replace TableView
with the custom list view. Amendments to makefile to match.
Note: we don't yet handle trips and may want to add additional columns
to describe the dive.
A single, dummy dive is added to show how this works (get root; item is
child of root). Purely to illustrate - needs proper integration etc.
Amend member names for dive list view components
Various naming changes to conform to coding style. Required changes to
members (remove prefix) and methods (avoid clash with members).
Clean up indentation (swap spaces for tabs). Code for model/view was
written with a different editor which had different settings :-/
[Dirk Hohndel: minor whitespace cleanup]
Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This is the downside of having to track our own selection state. We now
have a class of dives that potentially isn't known to Gtk as we aren't
adding them to the TreeView. So we need to make sure that their selection
state is consistent by deselecting them (either when they are marked as
invalid OR when we change preferences to no longer show invalid dives).
And because Gtk sends out another set of selection events when clearing
the TreeView (not sure why), we also need to make sure that their
selection state isn't reset to selected by mistake when the divelist is
recreated.
A bit of a pain, but it seems to work now and be consistent.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This is trivially true if there is only one dive.
With this change the logic which tags apply after editing is much easier
to understand.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This makes the code much cleaner and also reuses the strings in the
dtag_names array. This means the tag names are all lower case everywhere,
but that seems like an acceptable trade-off.
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Suggested-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>