Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2004-2024 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file MFXCheckableButton.h
15 : /// @author Daniel Krajzewicz
16 : /// @date 2004-03-19
17 : ///
18 : // Checkable button similar to a FXButton but maintain the check
19 : /****************************************************************************/
20 : #pragma once
21 : #include <config.h>
22 :
23 : #include <string>
24 :
25 : #include "fxheader.h"
26 : #include "MFXStaticToolTip.h"
27 :
28 : /**
29 : * @class MFXCheckableButton
30 : */
31 : class MFXCheckableButton : public FXButton {
32 : /// @brief fox declaration
33 0 : FXDECLARE(MFXCheckableButton)
34 :
35 : public:
36 : /// @brief constructor (Very similar to the FXButton constructor)
37 : MFXCheckableButton(bool amChecked, FXComposite* p, MFXStaticToolTip* staticToolTip, const std::string& text,
38 : FXIcon* ic = NULL, FXObject* tgt = NULL, FXSelector sel = 0, FXuint opts = BUTTON_NORMAL,
39 : FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0,
40 : FXint pl = DEFAULT_PAD, FXint pr = DEFAULT_PAD, FXint pt = DEFAULT_PAD, FXint pb = DEFAULT_PAD);
41 :
42 : /// @brief destructor (Called automatically)
43 : ~MFXCheckableButton();
44 :
45 : /// @brief check if this MFXCheckableButton is checked
46 : bool amChecked() const;
47 :
48 : /// @brief check or uncheck this MFXCheckableButton
49 : void setChecked(bool val, const bool inform = false);
50 :
51 : /// @name FOX callbacks
52 : /// @{
53 : /// @brief called when this MFXCheckableButton is painted
54 : long onPaint(FXObject*, FXSelector, void*);
55 :
56 : /// @brief called when this MFXCheckableButton is updated
57 : long onUpdate(FXObject*, FXSelector, void*);
58 :
59 : /// @brief called when mouse enter in MFXCheckableButton
60 : long onEnter(FXObject*, FXSelector, void*);
61 :
62 : /// @brief called when mouse leaves in MFXCheckableButton
63 : long onLeave(FXObject*, FXSelector, void*);
64 :
65 : /// @brief called when mouse motion in MFXCheckableButton
66 : long onMotion(FXObject*, FXSelector, void*);
67 :
68 : /// @}
69 :
70 : protected:
71 : /// @brief FOX need this
72 0 : FOX_CONSTRUCTOR(MFXCheckableButton)
73 :
74 : /// @brief flag to indicate if this MFXCheckableButton is checked
75 : bool myAmChecked;
76 :
77 : /// @brief colors of this MFXCheckableButton
78 : FXColor myBackColor,
79 : myDarkColor,
80 : myHiliteColor,
81 : myShadowColor;
82 :
83 : /// @brief check if this MFXCheckableButton is initialised
84 : bool myAmInitialised;
85 :
86 : /// @brief static tool tip
87 : MFXStaticToolTip* myStaticToolTip = nullptr;
88 :
89 : /// @brief build color of this MFXCheckableButton
90 : void buildColors();
91 :
92 : /// @brief set colors of this MFXCheckableButton
93 : void setColors();
94 :
95 : private:
96 : /// @brief Invalidated copy constructor.
97 : MFXCheckableButton(const MFXCheckableButton&) = delete;
98 :
99 : /// @brief Invalidated assignment operator.
100 : MFXCheckableButton& operator=(const MFXCheckableButton&) = delete;
101 : };
|