diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | display.h | 4 | ||||
-rw-r--r-- | dive.h | 7 | ||||
-rw-r--r-- | equipment.c (renamed from cylinders.c) | 21 | ||||
-rw-r--r-- | info.c | 12 | ||||
-rw-r--r-- | main.c | 26 | ||||
-rw-r--r-- | save-xml.c | 2 |
7 files changed, 47 insertions, 31 deletions
@@ -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 @@ -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 @@ -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; } @@ -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; } @@ -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++) |