summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2012-12-19Initial Russian translation for Subsurface.Gravatar Sergey Starosek
Some acronyms (SAC, OLF, OTU) were not translated since there's no settled/common ones in russian. Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-19Prevent bleeding deco/ndl for XML files without divecomputer entriesGravatar Linus Torvalds
Miika's xslt patch creates correct XML data without divecomputer entries. What happens is that the stop information at xml parse time is only cleared by the divecomputer entries, so if the XML lacks them, we will bleed stop data from one dive to the next. This patch makes sure that the deco/ndl information is cleared even if the dive has no divecomputer entry. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-19Convert deco info from JDiveLog to SubsurfaceGravatar Miika Turkia
This patch correctly converts the available deco data from JDiveLog files. In order for this to work correctly the next patch from Linus is needed as well. Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-17Add a "View next dive computer" menu itemGravatar Linus Torvalds
This adds the capability to actually view all your dive computers, by adding a menu item under "Log"->"View"->"Next DC" to show the next dive computer. Realistically, if you actually commonly use this, you'd use the accelerator shortcut. Which right now is Ctrl-C ("C for Computer"), which is probably a horrible choice. I really would want to have nice "next/prev dive" accelerators too, because the cursor keys don't work very well with the gtk focus issues. Being able to switch between dives would also make the "just the dive profile, maam" view (ctrl-2) much more useful. The prev/next dive in the profile view should probably be done with a keyboard action callback, which also avoids some of the limitations of accelerators (ie you can make any key do the action). Some gtk person, please? Anyway, this commit only does the dive computer choice thing, and only using the accelerators. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Improve visual appearance of horizontal marker linesGravatar Dirk Hohndel
This changes two things to improve the appearance of the profile: - the partial pressure scale is now in 0.5 increments if the total is <= 4 and in 1.0 increments if it is > 4. - the depth marker lines end slightly below the depth chart so that we no longer have overlap between the depth scale and the partial pressure scale. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Attempt to free plot data entries in each call to create_plot_info()Gravatar Lubomir I. Ivanov
In profile.c:create_plot_info(), store the last address in which memory was allocated for the plot data entries in the static variable "last_pi_entry". If "last_pi_entry" isn't a NULL pointer in each call to create_plot_info(), free memory at that address. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Clear associated tooltip texts when calling expose_event()Gravatar Lubomir I. Ivanov
In gtk-gui.c:expose_event(), right before clearing the list of tooltips, we also want to free memory for the associated texts for each one of them. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Fixed some memory leaks related to subsurface_get_conf()Gravatar Lubomir I. Ivanov
In gtk-gui.c:init() we retrieve the configuration values for PO2, PN2, PHE thresholds but have to also free the values once done parsing with sscanf(). Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Fixed a couple of memory leaks related to the download dialogGravatar Lubomir I. Ivanov
In render_dc_vendor() and render_dc_product(), there is no need to allocate memory for the texts that are about to be added in the combo box trees. Most GTK widgets seem to make copies of the passed text to them, using g_strdup() and automatically release said memory when a widget is destroyed. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Properly remove redundant dive computer informationGravatar Linus Torvalds
We had logic to remove duplicate dive computer information after merging dives, but it didn't actually work. Why? Because we had used the 'res' dive computer pointer to traverse the list of dive computers, so it no longer actually pointed to the first dive computer in the result list any more, and so the "remove redundant" code only removed redundant dive computers from a limited and incomplete list. Oops. Also, before checking the whole event and sample list, check if it's the exact same dive computer using our new "match_one_dc()" helper function, and don't even bother checking for sample details if it is. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Use dive ID for matching dives during downloadsGravatar Linus Torvalds
If we have a dive computer model and dive ID, use that to match newly downloaded dives against the existing dives. Otherwise fall back to "exact date match" again, like we've always done. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Use dive computer model/ID when trying to merge divesGravatar Linus Torvalds
If we havd divecomputer model and dive ID information available, use that to match existing dives when trying to merge them. Otherwise fall back to the fuzzy time-based merging logic. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-16Make sure that the user entered nickname is never truncatedGravatar Lubomir I. Ivanov
If the sizes of the two char buffers in set_dc_nickname() (nickname) and remember_dc() (buffer) are at least twice the size of the allowed maximum number of characters (sizeof(gunichar) = 2) set by gtk_entry_set_max_length() for the user nickname, no truncation will accur then calling snprintf() and cleanedup_nickname() on said buffers. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-15Deal with some trip issues when editing dive timestampsGravatar Dirk Hohndel
The idea behind editing timestamps had of course been the typical "oops, I forgot to set my time correctly" which shifts a dive (or a few of them) by a few hours but keeps the overall order of dives the same). But reasonable people might argue that they can envision a scenario where more dramatic changes are being made. And we need to deal with the impact this has on dive trips. Here we handle a couple of simple cases: - this is the only dive in a trip; just update the trip (this can still cause problems if the new time is in the middle of an existing trip). - this dives moves before the start of the trip it is in; let's remove it from that trip (this response is a bit simplistic - but as I tried to say, I don't expect this to be a common use case; and removing it at least doesn't lead to entirely unexpected behavior). - this dive moves past the end of this trip into the range of a different trip (in this case we remove the dive from the current trip and allow it to interrupt the trip it is moving into). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-15Reserve enough memory when storing a DC's nicknameGravatar Lubomir I. Ivanov
in gtk-gui.c: The input text field in set_dc_nickname() has a limit of 68 unicode characters, which are 136 bytes. In remember_dc(), to make sure that this nickname, the deviceid (4 bytes) and also the extra characters (",{}") always fit wihout truncation (from snprintf) in the allocated stack buffer, we increase the size of the buffer to 256 bytes. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-14Fix possible crash in nickname codeGravatar Dirk Hohndel
Silly typo, but this is the better solution, anyway. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>` Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-13Add the ability to set a nickname for a dive computerGravatar Dirk Hohndel
We maintain a list of dive computers that we know about (by deviceid) and their nicknames in our config. If the user downloads dive from a dive computer that we haven't seen before, we give them the option to set a nickname for that dive computer. That nickname is displayed in the profile (and stored in the XML file, assuming it is not the same as the model). This implementation attempts to make sure that it correctly deals with utf8 nicknames. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-12Change the empty product model to be index 0Gravatar Dirk Hohndel
A vendor of -1 indicates that we should have no product selection in the dive download dialog. Having the empty product model be the last made it hard to keep the correct index for that empty model around (and we got it wrong by default). With this change the product models are offset by one, so the unset vendor (-1) turns into index 0 which is where we now store the empty model. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-12Ensure default dive computer strings can be freedGravatar Dirk Hohndel
We don't want to directly use the strings returned to us from libdivecomputer. Fixes bug 34 Reported-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Add crypto library to Windows installer fileGravatar Dirk Hohndel
This dependency was brought in by commit 3e51d56f87a3 "Improve on divecomputer data handling". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Only display a depth scale appropriate for the depth of the diveGravatar Dirk Hohndel
Showing the depth scale all the way to the bottom of the profile plot looks strange when there are partial pressure graphs down there. So instead we only plot down to the next marker below the maximum depth of the actual dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Show CNS value in the profile mouseoverGravatar Dirk Hohndel
If we have per-sample CNS values, then show them in the profile tooltip. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Correctly merge cns, ndl and deco informationGravatar Dirk Hohndel
I keep forgetting to do that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Fix minor indentation issueGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Merge branch 'cns' into cns-mergeGravatar Dirk Hohndel
I foolishly changed visible_columns in both the (ill-named) cns branch and master... Signed-off-by: Dirk Hohndel <dirk@hohndel.org> Conflicts: divelist.c gtk-gui.c profile.c
2012-12-11Update to the new deco / ndl code in libdivecomputerGravatar Dirk Hohndel
Early in the libdivecomputer 0.3 development cycle Jef and I implemented deco and ndl as events. That wasn't a wise design choice and we agreed to switch this to be instead new sample types which makes much more sense (and is much more aligned with the way we are handling them inside Subsurface). So this commit tracks the change in libdivecomputer. Since this happened during the development cycle there isn't a way to detect this at compile time - so you need to make sure you have a matching version of libdivecomputer when compiling Subsurface. To make this easier: this commit of Subsurface requires a libdivecomputer version that includes the libdivecomputer commit d5d44c1e0ffd "Convert decostop / ndl to samples". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Calculate dive maxima/minima independent of dive computerGravatar Linus Torvalds
This splits the dive time, depth, pressure and temperature maxima and minima setup from the per-dive-computer "create_plot_info()" function into one setup function that walks _all_ the dive computers, so that we have a global maxima and minima. That way the graph scaling we set up will now fit the data from all dive computers rather than just the particular one we are plotting. So if you switch back-and-forth between computers, the scale (which is defined by the extremes) remains the same. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Display maximum CNS in the divelistGravatar Dirk Hohndel
We either pick the CNS reported by the dive computer at the end of the dive, or the maximum of that and the CNS values in the samples, if any. As usual, this column in the dive list defaults to off and it is controlled by a setting in the tec page of the preferences. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Add the ability to edit the date/time of a diveGravatar Dirk Hohndel
This can cause some fun unintended side effects - especially when the dive is part of a trip and the new date/time moves this into a different trip. Instead, trips get split and the overall result is consistent, but a bit unexpected. But since this is designed to help people right after a dive import in case the clock on the dive computer was wrong, my guess is this won't ever be a problem for actual users. Fixes ticket 18 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Fix incorrect index for dive computer listGravatar Dirk Hohndel
I don't understand how this ever worked... Fixes ticket 32 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Don't draw tooltips if no profile is displayedGravatar Dirk Hohndel
This fixes ticket 33 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Apply preference changes right awayGravatar Dirk Hohndel
This allows you to open the preference dialog, play with settings and see their effect right away. Press OK and you keep them, press Cancel and you are back to the previous state. As it should be. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Move global variables covered by Preferences into one structureGravatar Dirk Hohndel
Now we can simply remember the state of all the preferences at the beginning of preferences_dialog() and restore them if the user presses 'Cancel'. Fixes #21 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Rename on_delete function in statistics.cGravatar Dirk Hohndel
We made the one in gtk-gui.c a global function and now had a clash with the static one in statistics.c Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Add tank data to the print.Gravatar Salvador Cuñat
Add info of the used tanks, which isn't displayed by the dive plot, with a new function. The relative width and height are fixed in print(), so the function needs: - Modify the font size depending on the number of tanks. - As it uses translations, return to the original coords when ends. Modify print() acordingly with the new function. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Separate show_dive_text() in two diferent functions.Gravatar Salvador Cuñat
Create a function show_dive_header() and show_dive_notes() as a first step to introduce other infos in diferent funcs. Modify print() acordingly to the new funcs. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Consistent Quit behavior on the MacGravatar Dirk Hohndel
We were responding to the wrong Quit signal on MacOS. The one we picked was the one that basically told us "it's too late to stop me, I'm quitting". I switched this to the one asking "should I prevent the app from quitting" and now we can indeed cancel the Quit, regardless which method was used to close the app. Also removes to unused variables. Fixes #22 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Don't print partial pressure values in the profileGravatar Dirk Hohndel
Instead provide a scale on the right in a highly transparent grey and rely on the tooltip available with mouse-over to pinpoint the value at certain spots with much better accuracy. Fixes #30 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Don't print an initial gaschange event that just tells us the gas usedGravatar Dirk Hohndel
Some dive computers appear to tell us the gas used in a gaschange event right at the beginning of the dive. We arbitrary have a cut-off that says "a gas change in the first 30 seconds shouldn't get a marker". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Correct partial pressure calculationsGravatar Dirk Hohndel
Regardless what the dive computer tells us, don't believe that pO2 was higher than the ambient pressure. This gives much more realistic values. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Correctly parse the two different gas change eventsGravatar Dirk Hohndel
This now takes the He percentage into account when matching tanks. Given the encoding of fO2 and fHe in the GASCHANGE2 event, we can simply mask and shift as if we have a GASCHANGE2 event and things will automatically work correctly for the regular GASCHANGE event. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Draw pO2 profile lastGravatar Dirk Hohndel
This way it sits on top of the other partial pressure plots and is a bit easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Make sure pO2 and cns are filled in all samplesGravatar Dirk Hohndel
This allows things to work for dive computers like the OSTC that give us setpoint information in the sample, but not constant pO2 readings. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Make changes to some of the preference immediately visibleGravatar Dirk Hohndel
This is just a small part of the solution to the bigger problem with the preferences. See ticket 21 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Show two decimal digits in pO2, pN2 and pHe in the tooltipGravatar Dirk Hohndel
Tec divers seem to like a little bit more precision - and the dive computers certainly provide it (or we can calculate it). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Plot pO2 graph based on sample information, if availableGravatar Dirk Hohndel
This should give closed circuit divers with a supported dive computer correct partial pressure plots. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Add CNS and pO2 tracking in the samplesGravatar Dirk Hohndel
This adds the new members to the sample structure and fills them from supported dive computers (Uemis SDA and OSTC / Shearwater Predator, assuming you have libdivecomputer 0.3). Save relvant values of this to the XML file and load it back. Handle the new fields when merging dives. At this stage we don't DO anything with this, all we do is extract them from the dive computer, save them to the XML file and load them back. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Initialize helper structure to 0sGravatar Dirk Hohndel
We check the pointers that are part of this structure for NULL before accessing them - but that means we need to zero out the structure for this to work. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Fix potential uninitialized readGravatar Dirk Hohndel
When analyzing the buffer that is handed to the first_object_id function we carefully check to make sure that we don't read past the end of the input buffer but there was still one code path that could have us do just that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Fix off by one errorGravatar Dirk Hohndel
We increment i twice - which causes us to access memory past the end of the allocated array. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>