aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--display.h4
-rw-r--r--dive.h7
-rw-r--r--equipment.c (renamed from cylinders.c)21
-rw-r--r--info.c12
-rw-r--r--main.c26
-rw-r--r--save-xml.c2
7 files changed, 47 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index ddd967458..787a74fee 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
CC=gcc
CFLAGS=-Wall -Wno-pointer-sign -g
-OBJS=main.o dive.o profile.o info.o cylinders.o divelist.o parse-xml.o save-xml.o
+OBJS=main.o dive.o profile.o info.o equipment.o divelist.o parse-xml.o save-xml.o
divelog: $(OBJS)
$(CC) $(LDFLAGS) -o divelog $(OBJS) \
@@ -27,8 +27,8 @@ profile.o: profile.c dive.h display.h divelist.h
info.o: info.c dive.h display.h divelist.h
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c info.c
-cylinders.o: cylinders.c dive.h display.h divelist.h
- $(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c cylinders.c
+equipment.o: equipment.c dive.h display.h divelist.h
+ $(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c equipment.c
divelist.o: divelist.c dive.h display.h divelist.h
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c divelist.c
diff --git a/display.h b/display.h
index d499fc7fc..a9d90ece2 100644
--- a/display.h
+++ b/display.h
@@ -8,8 +8,8 @@
extern GtkWidget *dive_profile_widget(void);
extern GtkWidget *dive_info_frame(void);
extern GtkWidget *extended_dive_info_widget(void);
-extern GtkWidget *cylinder_management_widget(void);
-extern void update_dive_info(struct dive *dive);
+extern GtkWidget *equipment_widget(void);
+
extern void repaint_dive(void);
#endif
diff --git a/dive.h b/dive.h
index 15f082104..d9fa35abf 100644
--- a/dive.h
+++ b/dive.h
@@ -175,7 +175,12 @@ static inline struct dive *get_dive(unsigned int nr)
extern void parse_xml_init(void);
extern void parse_xml_file(const char *filename, GError **error);
-extern void flush_dive_info_changes(void);
+extern void show_dive_info(struct dive *);
+extern void flush_dive_info_changes(struct dive *);
+
+extern void show_dive_equipment(struct dive *);
+extern void flush_dive_equipment_changes(struct dive *);
+
extern void save_dives(const char *filename);
static inline unsigned int dive_size(int samples)
diff --git a/cylinders.c b/equipment.c
index 5df070227..5b8bf3583 100644
--- a/cylinders.c
+++ b/equipment.c
@@ -8,6 +8,14 @@
#include "display.h"
#include "divelist.h"
+void show_dive_equipment(struct dive *dive)
+{
+}
+
+void flush_dive_equipment_changes(struct dive *dive)
+{
+}
+
static struct tank_info {
const char *name;
int size; /* cuft or mliter depending on psi */
@@ -59,7 +67,6 @@ static void fill_tank_list(GtkListStore *store)
static void cylinder_widget(GtkWidget *box, int nr, GtkListStore *model)
{
GtkWidget *frame, *hbox, *size;
- GtkCellRenderer *cell;
char buffer[80];
snprintf(buffer, sizeof(buffer), "Cylinder %d", nr);
@@ -69,11 +76,7 @@ static void cylinder_widget(GtkWidget *box, int nr, GtkListStore *model)
hbox = gtk_hbox_new(TRUE, 3);
gtk_container_add(GTK_CONTAINER(frame), hbox);
- size = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model));
- cell = gtk_cell_renderer_text_new();
- gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(size), cell, TRUE);
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(size), cell, "text", 0, NULL );
-
+ size = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(model), 0);
gtk_box_pack_start(GTK_BOX(hbox), size, FALSE, FALSE, 0);
}
@@ -91,17 +94,15 @@ static GtkListStore *create_tank_size_model(void)
return model;
}
-GtkWidget *cylinder_management_widget(void)
+GtkWidget *equipment_widget(void)
{
- int i;
GtkWidget *vbox;
GtkListStore *model;
vbox = gtk_vbox_new(TRUE, 3);
model = create_tank_size_model();
- for (i = 0; i < MAX_CYLINDERS; i++)
- cylinder_widget(vbox, i, model);
+ cylinder_widget(vbox, 0, model);
return vbox;
}
diff --git a/info.c b/info.c
index b789d9fd8..9cb048b80 100644
--- a/info.c
+++ b/info.c
@@ -11,7 +11,6 @@ static GtkWidget *divedate, *divetime, *depth, *duration, *temperature, *locatio
static GtkEntry *location;
static GtkTextBuffer *notes;
static int location_changed = 1, notes_changed = 1;
-static struct dive *buffered_dive;
static const char *weekday(int wday)
{
@@ -31,10 +30,8 @@ static char *get_text(GtkTextBuffer *buffer)
return gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
}
-void flush_dive_info_changes(void)
+void flush_dive_info_changes(struct dive *dive)
{
- struct dive *dive = buffered_dive;
-
if (!dive)
return;
@@ -49,15 +46,12 @@ void flush_dive_info_changes(void)
}
}
-void update_dive_info(struct dive *dive)
+void show_dive_info(struct dive *dive)
{
struct tm *tm;
char buffer[80];
char *text;
- flush_dive_info_changes();
- buffered_dive = dive;
-
if (!dive) {
gtk_label_set_text(GTK_LABEL(divedate), "no dive");
gtk_label_set_text(GTK_LABEL(divetime), "");
@@ -217,6 +211,6 @@ GtkWidget *extended_dive_info_widget(void)
notes = text_view(vbox, "Notes", TRUE);
/* Add extended info here: name, description, yadda yadda */
- update_dive_info(current_dive);
+ show_dive_info(current_dive);
return vbox;
}
diff --git a/main.c b/main.c
index dc5453892..5367571ad 100644
--- a/main.c
+++ b/main.c
@@ -90,9 +90,25 @@ static void on_destroy(GtkWidget* w, gpointer data)
static GtkWidget *dive_profile;
+void update_dive(struct dive *new_dive)
+{
+ static struct dive *buffered_dive;
+ struct dive *old_dive = buffered_dive;
+
+ if (old_dive) {
+ flush_dive_info_changes(old_dive);
+ flush_dive_equipment_changes(old_dive);
+ }
+ if (new_dive) {
+ buffered_dive = new_dive;
+ show_dive_info(new_dive);
+ show_dive_equipment(new_dive);
+ }
+}
+
void repaint_dive(void)
{
- update_dive_info(current_dive);
+ update_dive(current_dive);
gtk_widget_queue_draw(dive_profile);
}
@@ -356,7 +372,7 @@ int main(int argc, char **argv)
GtkWidget *notebook;
GtkWidget *frame;
GtkWidget *dive_info;
- GtkWidget *cylinder_management;
+ GtkWidget *equipment;
GtkWidget *menubar;
GtkWidget *vbox;
@@ -417,9 +433,9 @@ int main(int argc, char **argv)
dive_info = extended_dive_info_widget();
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dive_info, gtk_label_new("Dive Notes"));
- /* Frame for extended dive info */
- cylinder_management = cylinder_management_widget();
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), cylinder_management, gtk_label_new("Cylinders"));
+ /* Frame for dive equipment */
+ equipment = equipment_widget();
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), equipment, gtk_label_new("Equipment"));
gtk_widget_set_app_paintable(win, TRUE);
gtk_widget_show_all(win);
diff --git a/save-xml.c b/save-xml.c
index 07b8b8096..c5d49391b 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -226,7 +226,7 @@ void save_dives(const char *filename)
return;
/* Flush any edits of current dives back to the dives! */
- flush_dive_info_changes();
+ update_dive(NULL);
fprintf(f, "<dives>\n<program name='diveclog' version='%d'></program>\n", VERSION);
for (i = 0; i < dive_table.nr; i++)