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.
Best
Robert
PS: I hope I will soon send a patch that adds code for fill_pressures for SCR
mode.
--
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO
Robert C. Helling Elite Master Course Theoretical and Mathematical Physics
Scientific Coordinator
Ludwig Maximilians Universitaet Muenchen, Dept. Physik
Phone: +49 89 2180-4523 Theresienstr. 39, rm. B339
http://www.atdotde.de
Enhance your privacy, use cryptography! My PGP keys have fingerprints
A9D1 A01D 13A5 31FA 6515 BB44 0820 367C 36BC 0C1D and
DCED 37B6 251C 7861 270D 5613 95C7 9D32 9A8D 9B8F
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ subsurface mailing list [email protected] http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
