X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FRadioButtonGroup.h;h=3be3c0ad6182c064d8b2e0fc325d343f151efb3e;hb=d5443737342903de489d527802cd2cdd38987d74;hp=bf96b6aca68a263d196d57041380ba1c86eb18d5;hpb=9c36dd0f40f2e2e90fce8b2f33519a5d99d9be8b;p=lyx.git diff --git a/src/frontends/xforms/RadioButtonGroup.h b/src/frontends/xforms/RadioButtonGroup.h index bf96b6aca6..3be3c0ad61 100644 --- a/src/frontends/xforms/RadioButtonGroup.h +++ b/src/frontends/xforms/RadioButtonGroup.h @@ -1,60 +1,64 @@ // -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. +/** + * \file RadioButtonGroup.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * This file Copyright 2000 Baruch Even - * ================================================= */ + * \author Baruch Even + * \author Rob Lahaye + * + * Full author contact details are available in file CREDITS. + */ #ifndef RADIOBUTTONGROUP_H #define RADIOBUTTONGROUP_H +#include "support/types.h" #include #include +#include "forms_fwd.h" -#include FORMS_H_LOCATION - -#ifdef __GNUG__ -#pragma interface -#endif - -using std::vector; -using std::pair; +namespace lyx { +namespace frontend { - -/** This class simplifies the work with a group of radio buttons, - * the idea is that you register a bunch of radio buttons with the accompanying - * value for each radio button and then you get to query or set the active - * button in a single function call. - * @author Baruch Even +/** This class simplifies interaction with a group of radio buttons: + * one, and only one, can be selected. + * The idea is that you register a bunch of radio buttons with + * an accompanying value. Then you can get or set the active button with a + * single function call. + * It is necessary to also group a family of radio buttons in the + * corresponding .fd file in order to unset the previously chosen button + * when a new one is selected. */ class RadioButtonGroup { public: - /// Constructor. Allocate space for 'n' items in the group. - RadioButtonGroup(unsigned n = 5) : map(n) {}; - /// Register a radio button with it's corresponding value. - void registerRadioButton(FL_OBJECT *button, int value); - /// Reset registrations. - void reset(); + /// Register a radio button with its corresponding value. + void init(FL_OBJECT * ob, size_type value); + + // Set a single active button. + void set(size_type value) const; + void set(FL_OBJECT * ob) const; - // Set the active button. - void setButton(int value); + // None of the radiobuttons are set. + void unset() const; - // Get the active button. - int getButton(); + // Get the active button's value. + size_type get() const; + + void setEnabled(bool enabled); private: /// - typedef pair ButtonValuePair; + typedef std::pair ButtonValuePair; /// - typedef vector ButtonValueMap; + typedef std::vector ButtonValueMap; /// ButtonValueMap map; }; -#endif +} // namespace frontend +} // namespace lyx + +#endif // RADIOBUTTONGROUP_H