summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2012-09-11Better compatibility with older GTK and CairoGravatar Lubomir I. Ivanov
divelist.c: Replaced "gtk_tree_path_get_indices_with_depth()" with the coupled alternative: int depth = gtk_tree_path_get_depth(path); int *indices = gtk_tree_path_get_indices(path); for compatibility GTK+ < 2.22 *: Replaced all usage of "cairo_rectangle_int_t" with "cairo_rectangle_t" for compatibility with Cairo < 1.10. Both modification make building Subsurface possible on a fairly recent Debian distribution, which reports to have the version of the abovementioned libraries "up-to-date", yet they are slightly outdated. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-11Display yearly/monthly statisticsGravatar Miika Turkia
Display yearly statistics in a statistics window with option to expand the viewing on monthly level. The amount of dives along with basic information like duration, depth, water temperature and air consumption is displayed in yearly and monthly level. Thus you are able to compare e.g. development of air consumption or diving activity from year to year. Using already existing macro for splitting seconds into minutes:seconds. Moving repetitive code to a function (couldn't think of the suggested clever macro, but this should pretty much do the trick). Now the statistics are updated every time the process_all_dives function is called. It might make sense to actually verify the structures need to be re-allocated, but such optimization is currently not implemented. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Combined two commits. Minor cleanups for white space and boolean values. Significant changes to use the correct units for volumes vs. depths and to avoid unneccesary lookups of the model storage based on the tree. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-11Use GTK_UNIT_INCH when printing to provide consistency across OSGravatar Lubomir I. Ivanov
Tests have shown that the most multi-platform way to do printing with GTK is to use GTK_UNIT_INCH (or GTK_UNIT_MM) with GtkPrintOperation. Tested on Linux, OSX, Windows. However this requires the appropriate scaling for Pango and Cairo to be done, with separate plotting logic for printing and drawing on the screen. To achieve that, profile.c:plot() now accepts a scaling parameter from type "scale_mode_t" defined in "display.h". Also due to new scale, small decimal numbers (such as 6.12345) cannot be well stored in "cairo_rectangle_int_t" therefore it is replaced with "cairo_rectangle_t", which uses doubles to provide Cairo with a drawing area. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Minor whitespace cleanup. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-10Improve trip assignment for new divesGravatar Dirk Hohndel
When first trying to deal with this I opted to go with a two pass appoach which seemed easy as it used existing infrastructure, but turned out to run into a couple of odd corner cases that would have been really ugly to deal with. So I threw this code away and am instead doing this in a single pass, carefully checking as we go if there is an appropriate trip we can use. To me the new code is much easier to read and seems much cleaner. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-11Merge branch 'ui-work' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
Pull small UI updates from Dirk Hohndel: "Not sure if you like the change to the About screen. :-) The other one is simply a small improvement for people importing xml files from the UI - it gets them an at least somewhat sane starting directory to work from." * 'ui-work' of git://git.hohndel.org/subsurface: Set default path for file import to the last path opened Update the About screen
2012-09-07Merge branch 'trip3' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
Pull more trip handling fixes from Dirk Hohndel. And the "delete dive" functionality too. * 'trip3' of git://git.hohndel.org/subsurface: Implement delete dive option Make "create trip above" also add on selected dives Handle new dives correctly if trips exist Merge one or more dives with the trip above
2012-09-07Implement delete dive optionGravatar Dirk Hohndel
With this we can delete a dive from the context menu. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-07Make "create trip above" also add on selected divesGravatar Dirk Hohndel
This makes things more consistent with the merge with trip above option - if multiple dives are selected then the consecutive set of selected top level dives below the dive on which a user right-clicked are all added to the newly created trip. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-07Handle new dives correctly if trips existGravatar Dirk Hohndel
There is an interesting issue when adding new dives into a dive list with existing trips. Since fill_dive_list walks the list backwards and trips are determined by the timestamp of the first dive in a trip, it is non-trivial to know when a dive is added if it should be part of an existing trip or not. Let's say when we see the dive we can also see a trip entry that starts four days earlier. Without looking forward in the list of dives we cannot tell if this is a multi-day trip that this dive would fit into, or if there is a break of more than tree days (our current trip threshold). Instead this commit adds a second scan of the dives in chronological order that does the right thing for new dives. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-06Set default path for file import to the last path openedGravatar Dirk Hohndel
This may not be the path the import files are in, but it's better than the current default of 'nothing'. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-06Update the About screenGravatar Dirk Hohndel
Add the current year and the second main author, err, me. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-06Merge branch 'print_selection' of http://ambre.pingoured.fr/cgit/subsurfaceGravatar Linus Torvalds
Pull print selection checkbox update from Pierre-Yves Chibon. Instead of implicitly always printing selected dives if there are more than one, this makes it print them if the checkbox is selected. * 'print_selection' of http://ambre.pingoured.fr/cgit/subsurface: Add the 'Print only selection' checkbox in the print options
2012-09-06Merge branch 'trip3' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
Pull trip manipulation branch from Dirk Hohndel: "I have added yet more of the requested features. I am not aware of any outstanding bugs or crashes (except for the Gtk problem that causes the import to crash for some people on Ubuntu and MacOS - but as I mentioned earlier, that bug has been around as long as the import file selector box)." * 'trip3' of git://git.hohndel.org/subsurface: Avoid duplicate dive_trip entries More trip manipulations: remove selected dives from trip Add ability to merge trip with trip below Use the infrastructure for moving dives in more places Correct the trip related test dives Fix crash when removing the first dive of a trip Correctly initialize the toggle state of the autogroup menu entry Fix copy_tree_node to no longer overwrite dive duration Add autogen menu command Fix a crash when changing sort column Use truth values with gboolean Allow modification and edits of trips Clean up macros and auxiliary functions Store time_t as long value
2012-09-06Merge one or more dives with the trip aboveGravatar Dirk Hohndel
Yet another trip manipulation function. The dive we are on (or that dive and the selected dives below it) are merged into the trip directly above. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-05Avoid duplicate dive_trip entriesGravatar Dirk Hohndel
When inserting a trip into the dive_trip_list we already check for duplicate trips, but we still kept the additional dive_trip around. With this change we instead replace it with the existing one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-05More trip manipulations: remove selected dives from tripGravatar Dirk Hohndel
There are a few obvious trip manipulations on multiple dives that haven't been implemented, yet. This commit handles the case when we have multiple dives selected and right click on one of them. It now removes all of those dives from their trips (instead of just the one that we clicked on). Still todo is the inverse operation. Select a group of consecutive dives and turn them into a trip. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Add ability to merge trip with trip belowGravatar Dirk Hohndel
Miika suggested this - we should be able to merge with the trip below and not just the trip above (oh, and call them "above/below" instead of "previous"). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Use the infrastructure for moving dives in more placesGravatar Dirk Hohndel
Instead of using our generic helper function the code in remove_from_trip_cb tried to implement the special case - and got it wrong. This fixes yet another crash that Henrik found. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Make xml (and CSV) parsing use 'g_ascii_strtod()' rather than 'strtod()'Gravatar Linus Torvalds
GTK messes up the standard C library locales by default (instead of just taking locale information into account internally). Which breaks 'strtod()' and 'printf()' etc. Since they screwed that up, they then added helper functions for undoing that braindamage. Use it. I'd like to blame the GTK people, but the standard C libary people bear *some* responsibility for this. One of the reasons why people do not use "setlocale()" in many normal programs is exactly because it messes up core libc functionality - with number conversion being the main thing. Doing things like converting numbers in a locale-specific manner is something people do want to do, but not *always*. So the C library locale code should always had defaulted to C locale, with some *extra* marker (like a printf/scanf modifier) to say "print/scan in the current locale". Because many things absoilutely need to be non-localized. You don't want your internal file format to magically change just because you want to show things to the user in France, for example. Reported-by: Ivan Habunek <ivan.habunek@gmail.com> Root-caused-by: Jef Driesen <jefdriesen@telenet.be> Cc: Dirk Hohndel <dirk@hohndel.org> Cc: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-09-03Correct the trip related test divesGravatar Dirk Hohndel
They still had the old "date only" format, but the code now relies on date and time being both set. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Fix crash when removing the first dive of a tripGravatar Dirk Hohndel
The update_trip_timestamp function can indeed get called with no children present, just before that trip is then removed. So instead of adding complicated special cases, this just bails out of the function. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Correctly initialize the toggle state of the autogroup menu entryGravatar Dirk Hohndel
If we move to Linus' tri-state variable we need to separate those two items, anyway. But for now this fixes the obvious bug. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Fix copy_tree_node to no longer overwrite dive durationGravatar Dirk Hohndel
Cut and paste error when creating this function. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-03Add the 'Print only selection' checkbox in the print optionsGravatar Pierre-Yves Chibon
With this commit, if few dives are selected by default it will only print the selected dives but in the option panel there is a checkbox that allows to print all dives and not only the selection. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-09-02Add autogen menu commandGravatar Dirk Hohndel
This adds the ability to auto create trips from the menu. It's a toggle entry (and while at it, we made the zoom toggle a toggle entry as well). We can therfore switch back and forth between auto generated trips. There is one bug. Assume you have no trips. You manually create a trip from some dives out of a group of trips that autogen would turn into a trip. Now you turn on autogen and this trip gets expanded with all the dives that would normally be grouped together. If you turn off autogen again, all those dives are still part of the remaining (initially manually created) trip. Working around this issue seemed a lot more work than the likelihood of anyone running into it seemed worth. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-02Fix a crash when changing sort columnGravatar Dirk Hohndel
We were using the tree model to check the selection, even though the active model is the list model after switching to a different sort column. To make things clearer I renamed the access macros to be more consistent. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-02Merge branch 'separator-line' of git://github.com/henrik242/subsurfaceGravatar Linus Torvalds
Apparently on OS X the separator line is all alone at the end. Acked-by: Dirk Hohndel <dirk@hohndel.org> * 'separator-line' of git://github.com/henrik242/subsurface: Remove separator line in MacOSX File menu
2012-09-02Use truth values with gbooleanGravatar Dirk Hohndel
Just a little cosmetic oversight Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-01Allow modification and edits of tripsGravatar Dirk Hohndel
Now that we can load and store trips we needed to add the capability to manipulate those trips as well. This commit allows us remove a dive from a trip via a right click operation on the dive list. The commit also adds code to split a trip into two, to merge two trips and to create a new trip out of a top level dive. To make all that useful this commit changes the right-click on the dive list to identify and act on the record we are actually on (instead of acting on the selection). The right-click menu ("context menu") changes depending which divelist entry the mouse pointer is on - so different operations are offered, depending on where you are. We also add simplistic editing of location and notes for a trip (but the notes are never displayed so far). To make our lives easier this commit adds a link from the dive to the dive trip it is part of. This allowed to hugely simplify the auto trip generation algorithm (among other things). The downside of this change is that there are now three different ways in which we express the relationship of dives and trips: in the dive_trip_list, in the tree_model, and with these pointers. Somehow this screams that I should rethink my data structures... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-01Clean up macros and auxiliary functionsGravatar Dirk Hohndel
In preparation for the next stage of the trips handling this commit makes the macros used to access trips (and some frequently used variables for the tree and list models) more consistent. This also changes the way we display un-grouped dives in the dive list, i.e. dives that are not part of a dive trip. Their dive number is now printed bold. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-09-01Store time_t as long valueGravatar Dirk Hohndel
The tree_storage only provided enough space for an int for DIVE_DATE. But at least on 64bit Linux, an int is 32bit yet a time_t is 64bit. Until 2038 this only causes issues in some odd situations, after 2038 this would be an obvious bug. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-08-30Add support for printing only the selected divesGravatar Linus Torvalds
Right now we just implicitly decide "print only selected dives" when there is more than one dive selected (and then print all dives if only one dive is selected). We probably should have an checkbutton in the dive details page for the choice. But I wanted to avoid the pain that is gtk as far as possible for the initial implementation. The code is ready to be changed to just use a checkbutton instead. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-08-30Merge branch 'print_table' of http://ambre.pingoured.fr/cgit/subsurfaceGravatar Linus Torvalds
Pull table printing improvements from Pierre-Yves Chibon: "I cleaned up the print options as asked so that we only have the choice between the "pretty-print" and the "table-print". The table layout has been improved." * 'print_table' of http://ambre.pingoured.fr/cgit/subsurface: Remove the pretty-print without dive profile option. Have a nice table formating with choosing the 'Table print' option. Invert the print 'dive profile' option. Deactivate 'Show profiles' if 'table print' is checked.
2012-08-30Merge branch 'divetrip-nr' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
Pull divetrip nr cleanup from Dirk Hohndel: "We don't need to manually track this - gtk gives us this number without any problems." * 'divetrip-nr' of git://git.hohndel.org/subsurface: Stop tracking the number of dives in a dive trip
2012-08-30Remove the pretty-print without dive profile option.Gravatar Pierre-Yves Chibon
Until now we had the choice between: - pretty-print - with dive profiles - without dive profiles - table-print This commit remove the pretty-print without dive profiles, leaving the choice to either pretty-print or table-print. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-29Stop tracking the number of dives in a dive tripGravatar Dirk Hohndel
Gtk tracks this for us as the number of children of the treeview node. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-08-29Fix profile and average depth for freedivesGravatar Mikko Rasa
Freedives can easily exceed the assumed ascent/descent rate, which results in wacky dive profiles. Add a check to make the ascent and descent fit within the duration of the dive.
2012-08-29Have a nice table formating with choosing the 'Table print' option.Gravatar Pierre-Yves Chibon
With this commit we finally have a nice table output when we want to print the list of dives with minimal information. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-29Invert the print 'dive profile' option.Gravatar Pierre-Yves Chibon
With this change, instead of asking to print the dive profile, you ask to not print them. So the checkbox in the print options changes from 'Show profiles' to 'No dive profiles'. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-29Deactivate 'Show profiles' if 'table print' is checked.Gravatar Pierre-Yves Chibon
This bug was reported by Henrik Brautaset Aronsen, it was happening when: """you select table print, perform the print and then open the print dialogue again""". In such case the 'Show profiles' button was activated while the 'Print table' type was selected. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-28Merge branch 'freediving-tweaks' of git://github.com/mguentner/subsurfaceGravatar Linus Torvalds
Merge freediving tweaks (zoom in on short dives etc) from Maximilian Güntner. Trivial conflicts in display.h due to unrelated printing stuff just happening to be added nearby. * 'freediving-tweaks' of git://github.com/mguentner/subsurface: moved zoomed_plot to display.h plot the time with a fixed padding (leading zero) updated/corrected comment added "Zoom" button and improved scaling fixed indentation use increments that make sense for 600 seconds Plot shorter (apnea) dives with a reasonable scale
2012-08-28Merge git://git.tdb.fi/ext/subsurfaceGravatar Linus Torvalds
Pull a few buglet fixes from Mikko Rasa. Some trivial conflicts due to changes in the dive selection logic, and using the new "for_each_dive()" helper. * git://git.tdb.fi/ext/subsurface: Check if multi-dive editing is actually needed Fix an off-by-one error in buffer allocation
2012-08-28Work on the printing of the dives, first attempt to print as table.Gravatar Pierre-Yves Chibon
With this commit, the user can choose between two printing modes: - pretty print (with or without the dive profile) - table print (which is nothing less than a table formating containing the information) Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-28Remove include not present in new libdivecomputer.Gravatar Pierre-Yves Chibon
The include of libdivecomputer/utils.h breaks the compilation of subsurface as it is no longer present in the latest version of libdivecomputer. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
2012-08-27make the font size the same when printing on win32/linuxGravatar Lubomir I. Ivanov
Setting the cairo transformation units (..?) to GTK_UNIT_POINTS makes the font size the same on windows as on linux, when printing. Otherwise the text is unreadable ie way too small. It now looks like http://i47.tinypic.com/154ks2d.png Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-08-27Merge branch 'trips' of git://git.hohndel.org/subsurfaceGravatar Linus Torvalds
Merge the initial 'track trips explicitly' code from Dirk Hohndel. Fix up trivial conflicts in save-xml.c due to the new 'is_attribute' flag. * 'trips' of git://git.hohndel.org/subsurface: Fix an issue with trips that have dives from multiple input files Some simple test dives for the trips code First cut of explicit trip tracking
2012-08-27Fix an issue with trips that have dives from multiple input filesGravatar Dirk Hohndel
The existing code didn't handle the case of different trips for the same date coming from different sources. It also got confused if the first dive processed (which is, chronologically, the last dive) happened to be a "NOTRIP" dive. This commit adds a bit of debugging infrastructure for the trip handling, too. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-08-27Update for new libdivecomputer interfacesGravatar Linus Torvalds
For this you need to get the current libdivecomputer tree, reconfigure, build and install it first. But this cleans up some of the silly error handling too, and has just a single "dc_device_close()" call etc, rather than duplicating that (and the new dc_context_free()). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-08-27Some simple test dives for the trips codeGravatar Dirk Hohndel
Playing with these shows that there are still some issues with handling multiple files correctly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-08-27First cut of explicit trip trackingGravatar Dirk Hohndel
This code establishes the explicit trip data structures and loads and saves them in the XML data. No attempts are made to edit / modify the trips, yet. Loading XML files without trip data creates the trips based on timing as before. Saving out the same, unmodified data will create 'trip' entries in the XML file with a 'number' that reflects the number of dives in that trip. The trip tag also stores the beginning time of the first dive in the trip and the location of the trip (which we display in the summary entries in the UI). The logic allows for dives that aren't part of a dive trip. All other dives simply belong to the "previous" dive trip - i.e. the dive trip with the latest start time that is earlier or equal to the start time of this dive. This logic significantly simplifies the tracking of trips compared to other approaches that I have tried. The automatic grouping into trips now is an option that defaults to off (as it makes changes to the XML file - and people who don't want this feature shouldn't have trips added to their XML files that they then need to manually remove). For now you have to select this option, then exit the program and start it again. Still to do is to trigger the trip generation at run time. We also need a way to mark dives as not part of trips and to allow options to combine trips, split trips, edit trip location data, etc. The code has only had some limited testing when opening multiple files. The code is known to fail if a location name contains unquoted special characters like an "'". This commit also fixes a visual inconsistency in the preferences dialog where the font selector button didn't have a frame around it that told you what this option was about. Inspired-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>