+ hbox = gtk_hbox_new(FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0);
+
+ frame = gtk_frame_new(title);
+ gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, FALSE, 0);
+
+ hbox = gtk_hbox_new(FALSE, 10);
+ gtk_container_add(GTK_CONTAINER(frame), hbox);
+
+ return hbox;
+}
+
+static GtkWidget *labeled_spinbutton(GtkWidget *box, const char *name, double min, double max, double incr)
+{
+ GtkWidget *hbox, *label, *button;
+
+ hbox = gtk_hbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, FALSE, 0);
+
+ label = gtk_label_new(name);
+ gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
+
+ button = gtk_spin_button_new_with_range(min, max, incr);
+ gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
+
+ gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(button), GTK_UPDATE_IF_VALID);
+
+ return button;
+}
+
+static void cylinder_widget(GtkWidget *vbox, struct cylinder_widget *cylinder, GtkListStore *model)
+{
+ GtkWidget *frame, *hbox;
+ GtkEntry *entry;
+ GtkEntryCompletion *completion;
+ GtkWidget *widget;
+
+ /*
+ * Cylinder type: description, size and
+ * working pressure
+ */
+ frame = gtk_frame_new("Cylinder");
+
+ hbox = gtk_hbox_new(FALSE, 3);
+ gtk_container_add(GTK_CONTAINER(frame), hbox);