summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2012-05-02Don't close config file when changing preferencesGravatar Linus Torvalds
On Linux and MacOS the subsurface_close_conf() doesn't really close the config file (it flushes writes on MacOS), but on Windows it does actually close the registry hkey. Which is bad, if you change the settings multiple times - we assume that the config file is open the whole time. So add a "subsurface_flush_conf()" function, and call *that* when changing configuration parameters. And call the close function only at the very end. Alternatively, maybe we should just open the config file separately every time. I don't much care, maybe somebody else does. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-02Make subsurface compile with current libdivecomputer git treeGravatar Linus Torvalds
libdivecomputer has the absolute worst interfaces to any library *ever*, and randomly changes those crappy interfaces when it adds support for new dive computers. It would have been much better if the interface was just a "open this device" with a device descriptor structure pointer, so that when Jef adds support for new devices, the old descriptors still stay around and work the same way - there's just a new descriptor structure that you *can* use if you want. Along with a data structure to name the devices and their descriptors, this would actually mean that users could just support pretty much any random device that LD supports. But no, that's not how libdivecomputer works. It has random enums and crazy different ad-hoc interfaces for different dive computers. Or, like in this case, crazy different ad-hoc interfaces for the *same*old* dive computer. Right now, for example, the support for the new Heinrichs Weikamp "Frog" computer added a flag to the interface for the old OSTC_2 support. Breaking any libdivecomputer users even if you didn't need Frog support. And is there a version number in the header files to check for? Yes, there's a version number. But no, it's not useful, since it doesn't actually change with the interface changes. This time, Jef actually did change the version number (from 0.1.0 to 0.2.0) as part of new development version, but there's no reason to believe that it will change in the future as the interfaces change - it never has before. So it's actually safer - and easier to understand - to check for the existence of the new header file inclusion mechanism. A new version of libdivecomputer that supports the HW Frog computer will include the "ostc_frog.h" header file when you include the libdivecomputer device.h file, and that will result in HW_FROG_H being defined. So we can check whether libdivecomputer has the new interface and supports the Frog by doing an "#ifdef HW_FROG_H" hack. Ugh. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-24Make sure to update dive info when it is editedGravatar Linus Torvalds
We used to not properly update the dive info until we switched to another dive when we edited it. This should fix it. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-23Fix edit callback for weight systemGravatar Dirk Hohndel
Linus found this embarrassing bug: double clicking on a weight system in order to edit it launched the edit function for the first cylinder instead. Oops. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-04-02Renumber dives when deleting a diveGravatar Linus Torvalds
... but only do it if the numbering of subsequent dives was consecutive to begin with. Note that we do accept unnumbered dives (and will stop the sequence check if we find one), but in order to renumber dives on delete, we require that starting with the dive we delete, the subsequent numbered dives have to be a nice incrementing series. If that is the case, then we fix up that numbering as we delete the dive. Put another way: if the dive numbering was an incrementing sequence before the delete, then it will be a sane incrementing sequence after it too. But if you had missing dives before the delete, we will turn the delete into just another missing dive. The basic rule is that we never renumber any dives unless that renumbering is "obviously correct". It's better to leave old numbers as-is (and expect that the user is going to do an explicit re-numbering operation) than it is to change dive numbers in a sequence that we don't understand. I do suspect that we should possibly check the dive number "backwards" too, but this doesn't do that. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-02Add the ugliest 'delete dive' model everGravatar Linus Torvalds
This interface works the same way the "edit dive" menu item does: it's a text entry meny item on the dive text entries (ie buddy/divemaster/notes sections). Except you pick the "Delete" entry rather than the "Edit" entry. It kind of works, but it really is a pretty horrible interface. I'll need to add a top-level dive menu entry for just deleting all selected dives instead. And it would be good to be able to get a drop-down menu from the divelist instead of having to do it from the dive text entries, which is just insane. But that requires gtk work. I'm not quite ready to get back into that. Thus the "exact same insane interface as the explicit 'Edit' mode". Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-01Fix reference tank information for LP steel tanks.Gravatar Linus Torvalds
Commit f9bb3f79106b ("Clean up reference tank information table") had cleaned up the tank info list so that you could sanely do tanks in liters and with a working pressure in bar. But the LP steel cylinders had somehow missed out on the ".psi =" part of the equation, and as a result, what was supposed to be their working pressure instead ended up being interpreted as their size in milli-liters. Oops. Fix that, and also make the standard tank info filling code actually verify the sanity of the reference tank table, so that if this happens again, it will complain loudly instead of using nonsensical values. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-03-29Fix broken average SAC calculationGravatar Miika Turkia
old_sac_time was always 0 when calculating average air consumption. Thus the results were incorrect. Move the counter to stats_t structure as suggested by Linus. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-03-25Added support for Mares Darwin, M1, M2, ... from latest libdivecomputer.Gravatar Björn Spruck
Only M1 has been tested. Darwin Air will most likely not work as an additional model flag seems to be needed. This is not foreseen in current GUI.
2012-03-23Merge branch 'weight' of git://subsurface.hohndel.org/subsurfaceGravatar Linus Torvalds
Pull weight management from Dirk Hohndel: "This is the fifth or sixth version of this code, I'm begining to lose track. I still struggle with the balance between code duplication and unnecessary indirectness and complexity. Maybe I'm just not finding the right level of abstraction. Maybe I'm just trying too hard. The code here is reasonably well tested. Works for me :-) It can import DivingLog xml files with weight systems and correctly parses those. It obviously can read and write weight systems in its own file format. It adds a KG/lbs unit default (and correctly stores that). The thing I still worry about is the code in equipment.c. You'll see that I tried to abstract things in a way that weight systems and cylinders share quite a bit of code - but there's more very similar code that isn't shared as my attempts to do so turned into ugly and hard to read code. It always felt like trying to write C++ in C..." * 'weight' of git://subsurface.hohndel.org/subsurface: Add weight system tracking Fix up some trivial conflicts due to various renaming of globals and simplification in function interfaces.
2012-03-24Add weight system trackingGravatar Dirk Hohndel
- supports multiple weight systems per dive - supports multiple weight system types - supports import of weight as tracked by DivingLog Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-03-22user-manual: fix a few annoying typosGravatar Miklos Vajna
Signed-off-by: Miklos Vajna <vmiklos@vmiklos.hu>
2012-03-16Show statistics of selected divesGravatar Miika Turkia
If at least 2 dives are selected, show statistics of these dives on Overall Stats. Otherwise, show the statistics of all dives. Temperature is also added to the shown statistics. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Minor change to avoid adding statistics.h (moved the global variable and external function declaration to display-gtk.h). Another minor change to the text displayed for the "Stats" notebook page. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-27Cochran: fix up dive data descramblingGravatar Linus Torvalds
This seems to do the dive data descrambling right for both files I have access to. Except it uses a hardcoded (different) offset for the two. I have yet to figure out how to automatically detect the offset itself properly, so you have to compile for the right file. I'll figure it out, but I'm committing this as a reasonable point in the process. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27Fix up Cochran dive header decoding offsetGravatar Linus Torvalds
It turns out the odd "different CAN files have different header offsets" came from the fact that the decode block was different lengths, and I had not picked the correct place to start - and instead had found two different places that were at different offsets due to the decode block length differences. This fixes that up, and it looks like the dive header is correctly descrambled (but what the data *means* is unclear, although there is now an ASCII date and time visible, so at least one part of it is pretty obvious). The actual dive data unscrambling is still different for the two test-files I have to play with, I do not know why. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27cochran: do a partial header de-scrambleGravatar Linus Torvalds
This descrambles at least parts of the header data. Some of it has the same pattern of data 4kB apart, it may be that there is a dive hiding in there too (ie what I currently call a "header" may in fact be a header _plus_ a dive). But the 4kB thing may well be an artifact of the crazy scrambling code itself. Who knows what kind of chunking the Cochran Analyst "encryption" uses. As with the dive data, there seems to be some offset differences between different CAN files. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27cochran: do the full de-scramble for one caseGravatar Linus Torvalds
So this descrambles all the dives in *one* of my cochran test files. I still don't know what the dive data *means*, but it's not a random jumble of bytes any more: there are very clear patterns. However, the magic offsets that work for that particular CAN file are not generic, because they don't work for another. So there is some magic dynamic decoding that I don't know about. There is probably more decode information in the initial decode block, over and beyond just the scrambling bytes. (The scrambling array is 234 bytes starting at 0x40001, but the first actual *dive* data starts at 0x45e03, so there's tons of unknown stuff in the file even outside the dives themselves) Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27Make cochran debug output a bit easier to use directlyGravatar Linus Torvalds
Just do the hex-dump in the program, and print all the results to standard output. Avoid the need to do 'od' by hand etc to see what happens when you play with the decoder. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27Add some initial cochran CAN file parsingGravatar Linus Torvalds
It's broken, and currently only writes out a debug output file per dive. I'm not sure I'll ever really be able to decode the mess that is the Cochran ANalyst stuff, but I have a few test files, along with separate depth info from a couple of the dives in question, so in case this ever works I can at least validate it to some degree. The file format is definitely very intentionally obscured, though. Annoying. It's not like the Cochran software is actually all that good (it's really quite a horribly nasty Windows-only app, I'm told). Cochran Analyst is very much not the reason why people would buy those computers. So Cochran making their computers harder to use with other software is just stupid. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27Import: always open and read the file before checking the filename extensionGravatar Linus Torvalds
Most of the parsers will want the content in memory, so keep them simple. The fact that the Suunto parser uses "libzip" that has to re-open the file is annoying and causes us to re-open the file etc. But it's the odd man out, so don't design the "open_by_filename()" function around it. Pretty much everybody else will want to avoid having to cook up their own IO routines. Also, when reading the file, NUL-terminate the buffer. This allows us to just treat text files as large strings if we want to, and doesn't matter for binary files (we still pass in the length explicitly). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-27Fix typo ('suundo' instead of 'suunto')Gravatar Linus Torvalds
I apparently was so congested that it affected my typing too when I wrote that, and then copy-paste meant that the use and declaration matched despite the misspelling. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-26Add "native" Suunto SDE zip file readingGravatar Linus Torvalds
You need to have libzip-devel installed, and pkg-config needs to know about it for the build to pick up on it. On at least Fedora, a simple "yum install libzip-devel" will make things work, although you may need to force a rebuild of subsurface too (the "file.o" file in particular - the Makefile doesn't track system dependencies). Then, you can just do subsurface my-dives.SDE to read the data directly from the SDE file. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-26Split up file reading from 'parse-xml.c' into 'file.c'Gravatar Linus Torvalds
We're going to eventually import non-xml files too, so let's begin splitting the logic up. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-17Merge branch 'info-split' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
* 'info-split' of git://git.hohndel.org/subsurface: Add statistics for longest, shortest, and shallowest dive Create separate single dive and total stats pages Separate out single dive statistics and total statistics
2012-01-15Link with libm for 'pow()'Gravatar Cristian Ionescu-Idbohrn
Solves suddenly revealed linking error: divelist.c:400: error: undefined reference to 'pow' Signed-off-by: Cristian Ionescu-Idbohrn <cii@axis.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-15Add statistics for longest, shortest, and shallowest diveGravatar Dirk Hohndel
I don't really like calling the shallowest dive "min depth", but all other texts that I could come up with that were reasonably short weren't any better... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-15Create separate single dive and total stats pagesGravatar Dirk Hohndel
No additional statistics added, yet. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-15Separate out single dive statistics and total statisticsGravatar Dirk Hohndel
Right now this just changes the infrastructure - nothing outside of statistics.c is modified. This is simply in preparation to split out the single dive info and the total dive statistics in the future (as we are creating more info and more stats and they will overflow the screen area available - so this will turn into two notebook tabs). This commit does not change any functionality. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-05Avoiding some potentially confusing name space clashesGravatar Dirk Hohndel
We have local variables or function arguments with the same names as function static variables (or in one case, function arguments). While all the current code was correct, it could potentially cause confusion when chasing bugs or reviewing patches. This should make things clearer. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-05More removal of unused argumentsGravatar Dirk Hohndel
Just trying to clean up the code a bit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-05Oddly, finishing a sample doesn't require a sampleGravatar Dirk Hohndel
So let's not pass it around Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-03More Mac improvementsGravatar Henrik Brautaset Aronsen
The startup shell script workaround isn't needed anymore. The preferences hotkey didn't work. Remove left-over menu separators. Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
2012-01-03Even more Mac-i-nessGravatar Dirk Hohndel
Move the About and Preferences menu item to the App menu. Switch the accelerator key to be Meta (i.e., Command) instead of Control This required a bit of restructuring of the code, but it's all for a good cause. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-03Adding the right header file for R_OK on WindowsGravatar Dirk Hohndel
Dang, I should have compile tested this on Windows before the last commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-02Only set the window icon if the icon file existsGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-02Correctly free the GSList in file_openGravatar Dirk Hohndel
Passing a value that is known to be NULL to g_slist_free seems like the wrong approach... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-02Use the right function to get resource path on MacGravatar Dirk Hohndel
Much better than hacking together my own... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-02Use a more standard approach to save preferences on MacOSXGravatar Henrik Brautaset Aronsen
CFPreferences* seems to be the proper way to handle preferences on MacOSX. This approach also eliminates a problem where the hard coded preferences path couldn't be read. Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> [ fixed small coding style issues ] Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-01More AsciiDoc updatesGravatar Dirk Hohndel
Add missing internal links Work on better visual representation of structured data Start creating quoted text (instead of styled text) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-01Update asciidoc headers and deal with internal linksGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-01-01First try at converting user-manual to AsciiDocGravatar Linus Torvalds
You can do "make doc" in the main directory to create the html version, and if you want to play around with it, do "make show" in the Documentation subdirectory to start firefox on the end result. It's by no means perfect, but it gives somewhat reasonable results, and this is enough initial work for people to play around with, I think. NOTE! You need "asciidoc" installed to do this: it's a python program, so it should be pretty easy even on non-Linux platforms. And on Linux, most distributions package it, so you just have to do something like yum install asciidoc to get it (replace with apt-get/zypper/whatever). Asciidoc can generate other output too (man-pages, LaTeX, etc), maybe people want to play with that part too. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-01Merge branch 'mac' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
* 'mac' of git://git.hohndel.org/subsurface: Turn subsurface into a real Mac application
2012-01-01Turn subsurface into a real Mac applicationGravatar Dirk Hohndel
To do this a few things needed to move into the os specific files, but the overall change is fairly small and the difference on the Mac is amazing. Subsurface now becomes a Mac app with Mac toolbar and useful default fonts. Changed the CFBundleIdentifier to be the reverse DNS of the subsurface site (sadly, 'torvalds' is not yet a TLD). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-12-31Define O2 permille for air in one spotGravatar Henrik Brautaset Aronsen
Having the O2 permille defined once is more readable. Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
2011-12-31Display OTU for dives using airGravatar Henrik Brautaset Aronsen
Zero o2 means 20.9% o2, which can be confusing... Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
2011-12-30Move the gasmix cleanups from XML parsing to the generic dive fixup stageGravatar Linus Torvalds
Right now we do certain cylinder info operations only when importing from an XML file, which is wrong. In particular, we do the "is the gasmix air" or "what is the standard cylinder name" only at XML read time, which means that if you import a dive directly from the dive computer, it won't have the air sanitization or the proper default cylinder names. Of course, most dive computers don't actually save enough cylinder information for us to do the cylinder name lookup anyway, but some do. And all Nitrox-capable dive computers do have that O2 percentage that needs cleanup too. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-12-28Make icon file name OS helper functionGravatar Dirk Hohndel
This way we can load the correct icon on the Mac without ugly hacks in the OS independent code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-12-27Merge branches 'windows', 'docs' and 'forlinus' of ↵Gravatar Linus Torvalds
git://git.hohndel.org/subsurface * 'windows' of git://git.hohndel.org/subsurface: Fixes for the Windows installer * 'docs' of git://git.hohndel.org/subsurface: Version 0.0.7 of user manual * 'forlinus' of git://git.hohndel.org/subsurface: Remove unused return value
2011-12-26Remove unused return valueGravatar Dirk Hohndel
We never use the number of decimals that this function returns. So we might as well not return them to begin with. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-12-26Version 0.0.7 of user manualGravatar Jacco van Koll
Added chapter 14: The menu and sub-menus Signed-off-by: Jacco van Koll <jko@haringstad.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>