]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Separate the notion of creating the cylinder widgets from showing them
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 13 Sep 2011 20:50:03 +0000 (13:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 13 Sep 2011 20:50:03 +0000 (13:50 -0700)
Now we always create the MAX_CYLINDER sets of cylinder widgets.  But we
don't actually pack them into the frame - that's a separate phase.

Right now we still do the stupid "always just pack two cylinders" thing,
but the idea is that we can pack just as many as the dive needs on a
per-dive basis.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
equipment.c

index 023bebebbe1ad2e0819e2d20109bd60b441582ef..7e52f980a4852baf8439d149f4c1471cf8761b39 100644 (file)
@@ -11,6 +11,7 @@
 struct cylinder_widget {
        int index, changed;
        const char *name;
+       GtkWidget *hbox;
        GtkComboBox *description;
        GtkSpinButton *size, *pressure;
        GtkWidget *o2, *gasmix_button;
@@ -310,7 +311,7 @@ static void nitrox_cb(GtkToggleButton *button, gpointer data)
        gtk_widget_set_sensitive(cylinder->o2, state);
 }
 
-static void cylinder_widget(GtkWidget *box, int nr, GtkListStore *model)
+static void cylinder_widget(int nr, GtkListStore *model)
 {
        struct cylinder_widget *cylinder;
        GtkWidget *frame, *hbox, *hbox2;
@@ -321,7 +322,7 @@ static void cylinder_widget(GtkWidget *box, int nr, GtkListStore *model)
        cylinder->index = nr;
 
        hbox = gtk_hbox_new(FALSE, 3);
-       gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
+       cylinder->hbox = hbox;
 
        snprintf(buffer, sizeof(buffer), "Cylinder %d", nr+1);
        frame = gtk_frame_new(buffer);
@@ -368,14 +369,23 @@ static GtkListStore *create_tank_size_model(void)
 
 GtkWidget *equipment_widget(void)
 {
+       int i;
        GtkWidget *vbox;
        GtkListStore *model;
 
        vbox = gtk_vbox_new(FALSE, 3);
 
        model = create_tank_size_model();
-       cylinder_widget(vbox, 0, model);
-       cylinder_widget(vbox, 1, model);
+
+       /* Create all MAX_CYLINDER gtk widgets */
+       for (i = 0; i < MAX_CYLINDERS; i++)
+               cylinder_widget(i, model);
+
+       /* But only connect two of them right now to the frame vbox */
+       for (i = 0; i < 2; i++) {
+               struct cylinder_widget *cylinder = gtk_cylinder+i;
+               gtk_box_pack_start(GTK_BOX(vbox), cylinder->hbox, FALSE, TRUE, 0);
+       }
 
        return vbox;
 }