mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Add exposure protection tracking
For simplicity and shortness, throughout subsurface exposure protection is simply referred to as "suit". Add the fields to the data structures, add the column to the dive_list and the preferences dialog (once again with it being turned invisible by default). Support loading and saving of the suit information. Display the suit information in the Dive Info pane (this may be a bit controversial as people could argue this should be in the Equipment pane) and allow editing of the suit info, with our usual support for completion and drop down lists to pick from. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
3c542b5a41
commit
e8ec3df371
8 changed files with 52 additions and 5 deletions
21
info.c
21
info.c
|
|
@ -19,9 +19,9 @@
|
|||
#include "display-gtk.h"
|
||||
#include "divelist.h"
|
||||
|
||||
static GtkEntry *location, *buddy, *divemaster, *rating;
|
||||
static GtkEntry *location, *buddy, *divemaster, *rating, *suit;
|
||||
static GtkTextView *notes;
|
||||
static GtkListStore *location_list, *people_list, *star_list;
|
||||
static GtkListStore *location_list, *people_list, *star_list, *suit_list;
|
||||
|
||||
static char *get_text(GtkTextView *view)
|
||||
{
|
||||
|
|
@ -96,6 +96,7 @@ void show_dive_info(struct dive *dive)
|
|||
SET_TEXT_VALUE(divemaster);
|
||||
SET_TEXT_VALUE(buddy);
|
||||
SET_TEXT_VALUE(location);
|
||||
SET_TEXT_VALUE(suit);
|
||||
gtk_entry_set_text(rating, star_strings[dive->rating]);
|
||||
gtk_text_buffer_set_text(gtk_text_view_get_buffer(notes),
|
||||
dive && dive->notes ? dive->notes : "", -1);
|
||||
|
|
@ -296,6 +297,11 @@ void add_location(const char *string)
|
|||
add_string_list_entry(string, location_list);
|
||||
}
|
||||
|
||||
void add_suit(const char *string)
|
||||
{
|
||||
add_string_list_entry(string, suit_list);
|
||||
}
|
||||
|
||||
static int get_rating(const char *string)
|
||||
{
|
||||
int rating_val = 0;
|
||||
|
|
@ -308,7 +314,7 @@ static int get_rating(const char *string)
|
|||
}
|
||||
|
||||
struct dive_info {
|
||||
GtkComboBoxEntry *location, *divemaster, *buddy, *rating;
|
||||
GtkComboBoxEntry *location, *divemaster, *buddy, *rating, *suit;
|
||||
GtkTextView *notes;
|
||||
};
|
||||
|
||||
|
|
@ -336,6 +342,12 @@ static void save_dive_info_changes(struct dive *dive, struct dive_info *info)
|
|||
changed = 1;
|
||||
}
|
||||
|
||||
new_text = get_combo_box_entry_text(info->suit, &dive->suit);
|
||||
if (new_text) {
|
||||
add_suit(new_text);
|
||||
changed = 1;
|
||||
}
|
||||
|
||||
rating_string = strdup(star_strings[dive->rating]);
|
||||
new_text = get_combo_box_entry_text(info->rating, &rating_string);
|
||||
if (new_text) {
|
||||
|
|
@ -378,6 +390,7 @@ static void dive_info_widget(GtkWidget *box, struct dive *dive, struct dive_info
|
|||
gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, TRUE, 0);
|
||||
|
||||
info->rating = text_entry(hbox, "Rating", star_list, star_strings[dive->rating]);
|
||||
info->suit = text_entry(hbox, "Suit", suit_list, dive->suit);
|
||||
|
||||
info->notes = text_view(box, "Notes", READ_WRITE);
|
||||
if (dive->notes && *dive->notes)
|
||||
|
|
@ -562,6 +575,7 @@ GtkWidget *extended_dive_info_widget(void)
|
|||
add_string_list_entry(THREE_STARS, star_list);
|
||||
add_string_list_entry(FOUR_STARS, star_list);
|
||||
add_string_list_entry(FIVE_STARS, star_list);
|
||||
suit_list = gtk_list_store_new(1, G_TYPE_STRING);
|
||||
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
|
||||
location = text_value(vbox, "Location");
|
||||
|
|
@ -576,6 +590,7 @@ GtkWidget *extended_dive_info_widget(void)
|
|||
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
|
||||
|
||||
rating = text_value(hbox, "Rating");
|
||||
suit = text_value(hbox, "Suit");
|
||||
|
||||
notes = text_view(vbox, "Notes", READ_ONLY);
|
||||
return vbox;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue