2011-09-01 17:09:53 +00:00
|
|
|
Half-arsed divelog software in C.
|
|
|
|
|
2011-09-03 15:53:05 +00:00
|
|
|
I'm tired of java programs that don't work etc.
|
2011-09-01 17:09:53 +00:00
|
|
|
|
|
|
|
License: GPLv2
|
2011-09-03 15:53:05 +00:00
|
|
|
|
2011-09-08 18:23:11 +00:00
|
|
|
You need libxml2-devel, gtk2-devel and GConf2-devel to build this.
|
2011-09-03 15:53:05 +00:00
|
|
|
|
2011-09-12 21:05:44 +00:00
|
|
|
You also need to have libdivecomputer installed, which goes something like this:
|
|
|
|
|
|
|
|
git clone git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
|
|
|
|
cd libdivecomputer
|
|
|
|
autoreconf --install
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
|
2011-09-03 15:53:05 +00:00
|
|
|
Usage:
|
|
|
|
|
|
|
|
make
|
2011-09-15 16:43:14 +00:00
|
|
|
./subsurface dives/*.xml
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
|
|
to see my dives (with no notes or commentary).
|
|
|
|
|
2011-09-12 21:05:44 +00:00
|
|
|
Or, if you have a dive computer supported by libdivecomputer (and
|
|
|
|
connected to /dev/ttyUSB0), you can just do
|
|
|
|
|
|
|
|
make
|
2011-09-15 16:43:14 +00:00
|
|
|
./subsurface
|
2011-09-12 21:05:44 +00:00
|
|
|
|
|
|
|
and select "Import" from the File menu, tell it what dive computer you
|
|
|
|
have, and hit "OK".
|
|
|
|
|
|
|
|
There's a lot of duplicates in the XML files that come as an example,
|
2011-09-15 16:43:14 +00:00
|
|
|
and subsurface will de-duplicate the ones that are exactly the same
|
|
|
|
(just because they were imported multiple times). But at least two of
|
|
|
|
the dives have duplicates that were edited by Dirk in the Suunto Dive
|
2011-09-12 21:05:44 +00:00
|
|
|
Manager, so they don't trigger the "exact duplicates" match.
|
2011-09-03 15:53:05 +00:00
|
|
|
|
2011-09-20 19:40:34 +00:00
|
|
|
Implementation details:
|
|
|
|
|
|
|
|
main.c - program frame
|
|
|
|
dive.c - creates and maintaines the internal dive list structure
|
|
|
|
libdivecomputer.c
|
|
|
|
uemis.c
|
|
|
|
parse-xml.c
|
|
|
|
save-xml.c - interface with dive computers and the XML files
|
|
|
|
profile.c - creates the data for the profile and draws it using cairo
|
|
|
|
|
|
|
|
A first UI has been implemented in gtk and an attempt has been made to
|
|
|
|
separate program logic from UI implementation.
|
|
|
|
|
|
|
|
gtk-gui.c - overall layout, main window of the UI
|
|
|
|
divelist.c - list of dives subsurface maintains
|
|
|
|
equipment.c - equipment / tank information for each dive
|
|
|
|
info.c - detailed dive info
|
|
|
|
print.c - printing
|
|
|
|
|
2011-09-03 15:53:05 +00:00
|
|
|
WARNING! I wasn't kidding when I said that I've done this by reading
|
|
|
|
gtk2 tutorials as I've gone along. If somebody is more comfortable with
|
|
|
|
gtk, feel free to send me (signed-off) patches.
|
|
|
|
|
|
|
|
Just as an example of the extreme hackiness of the code, I don't even
|
|
|
|
bother connecting a signal for the "somebody edited the dive info"
|
|
|
|
cases. I just save/restore the dive info every single time you switch
|
|
|
|
dives. Christ! That's truly lame.
|
|
|
|
|
|
|
|
Also, I don't actually integrate directly with libdivecomputer, I just
|
|
|
|
read the XML files it can spit out. But I included my own raw dive
|
|
|
|
profile xml files for anybody who isn't a diver, but decides that they
|
|
|
|
want to educate me in gtk.
|
|
|
|
|
|
|
|
NOTE! Some of the dives are pretty pitiful. All the last dives are from
|
|
|
|
my divemaster course, so they are from following open water students
|
|
|
|
along (many of them the confined*water dives). There a lot of the
|
|
|
|
action is at the surface, so some of the "dives" are 4ft deep and 2min
|
|
|
|
long.
|
2011-09-06 19:32:51 +00:00
|
|
|
|
|
|
|
Contributing:
|
|
|
|
|
|
|
|
Please either send me signed-off patches or a pull request with
|
|
|
|
signed-off commits. If you don't sign off on them, I will not accept
|
|
|
|
them. This means adding a line that says "Signed-off-by: Name <email>"
|
|
|
|
at the end of each commit, indicating that you wrote the code and have
|
|
|
|
the right to pass it on as an open source patch.
|
|
|
|
|
|
|
|
See: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
|
|
|
|
|
2011-09-06 21:58:05 +00:00
|
|
|
Also, please write good git commit messages. A good commit message
|
|
|
|
looks like this:
|
|
|
|
|
|
|
|
header line: explaining the commit in one line
|
|
|
|
|
|
|
|
Body of commit message is a few lines of text, explaining things
|
|
|
|
in more detail, possibly giving some background about the issue
|
|
|
|
being fixed, etc etc.
|
|
|
|
|
|
|
|
The body of the commit message can be several paragrahps, and
|
|
|
|
please do proper word-wrap and keep columns shorter than about
|
|
|
|
74 characters or so. That way "git log" will show things
|
|
|
|
nicely even when it's indented.
|
|
|
|
|
|
|
|
Reported-by: whoever-reported-it
|
|
|
|
Signed-off-by: Your Name <youremail@yourhost.com>
|
|
|
|
|
|
|
|
where that header line really should be meaningful, and really should be
|
|
|
|
just one line. That header line is what is shown by tools like gitk and
|
|
|
|
shortlog, and should summarize the change in one readable line of text,
|
|
|
|
independently of the longer explanation.
|