[2014-09-26 10:03:35 +0200] Robert Helling:
> 
> On 26.09.2014, at 02:18, Gaetan Bisson <[email protected]> wrote:
> 
> > [2014-09-25 13:28:36 -0700] Dirk Hohndel:
> >> See - this is not enough for someone to get started. Come up with a clear
> >> vision of how things should work and go from there.
> > 
> > Fair enough but I do not have a clear vision of how things should work.
> > How about the following? It should require minimal changes to the UI and
> > code while still allowing basic closed circuit dive planning.
> > 
> > Attached are pictures of how this would work from a user perspective,
> > but let me detail this a little bit here:
> > 
> > We add a cylinder type called "CCR" (closed circuit rebreather) for
> > which the fields "Size", "Work press", and "He%"are ignored. The field
> > "Switch at" works as usual and the field "O2%" expects a setpoint, that
> > is, the constant PPO2 the diver will be exposed to; they are usually
> > expressed in bars but using 120% to denote 1.2 seems natural.
> > 
> > Just like other cylinders, this special cylinder can be used in dive
> > planner points. Its label would be "CCR SP=1.2" where "1.2" is the
> > setpoint.
> > 
> > We add a checkbox in the "Dive notes" frame that reads "Compute deco on
> > CCR". When it is unchecked, the decompression schedule is computed as
> > normal, ignoring special CCR cylinders. When it is checked, the last
> > used CCR of the dive planner points is used for deco.
> > 
> > Would that make sense?
> 
> Do you want to try to do that yourself? It should not be too hard. If you 
> want, I will guide you through this (or at least say how I would attempt 
> that).
> 
> The nice thing is really that a lot is already there so you can get quite far 
> by copying existing similar things, in particular for the UI/Qt bit. And you 
> cannot overestimate the usefulness of tools like 
> 
> git grep
> 
> and the “Find Usages” entry in the context menu of Qt Creator that opens when 
> you right click on a variable or function (or should I say attribute and 
> method?). And, really, Qt Creator is the editor of choice as it helps you 
> with completion (and by this syntax checking etc, it is really quite clever).
> 
> So, let’s get started:
> 
> 1) Let us begin with the UI, the CCR checkbox in particular. As you already 
> placed it below the “verbatim plan” checkbox, I would recommend to copy that 
> checkbox’s code. A first idea, you get by
> 
> git grep -i verb
> 
> In particular, it tells you, you want to open qt-ui/plannerSettings.ui in the 
> graphical editor and wit cut and paste make a duplicate of that checkbox 
> below it (and name it sensibly, e.g. planCCR). Actually, I think a checkbox 
> is not optimal, rather use a ComboBox with the three options OC/SCR/CCR (we 
> will handle the SCR case in the same go).
> 
> 2) The above grep shows you also the .cpp and .h files that hook up the 
> checkbox to a preference variable. Copy that code so that there is also a 
> preference variable of type enum {OC, SCR, CCR} that is connected to the 
> checkbox/combo box.
> 
> 3) For the set point, you want to add a column to the cylinder table. That is 
> handled by the CylindersModel object with code in qt-ui/models.cpp and .h. 
> Adding a column SETPOINT should’t be too hard (bonus points if it is only 
> visible when in CCR mode).
> 
> 4) For the internal handling a cylinder is described by a struct cylinder_t 
> defined in dive.h. Add a set point field for that as well. Use “Find Usage” 
> to see where you have to add code for that field as well. struct 
> divedatapoint already has a po2 field, make sure that gets filled with the 
> correct set point data.
> 
> 5) Finally, for the actual planning. This is done in planner.c. I guess, not 
> much needs to be done there, as all calls to add_segment already have the po2 
> field set (just make sure, it has the set point data there).
> 
> 6) Finally, fill_pressures does use the presence of the po2 variable to 
> determine that it should assume CCR mode. Maybe you could change that as well 
> to make it look at the dive_comp_type field (and of course set that from your 
> planCCR preference variable when dive planning.
> 
> That should be it. It really does not require anything new, you can just work 
> with what is already there.

Thanks so much!

I'll give that a go later today.

-- 
Gaetan

Attachment: pgp7U0DL3yH3E.pgp
Description: PGP signature

_______________________________________________
subsurface mailing list
[email protected]
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to