Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2004-2025 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 :
27 : // ===========================================================================
28 : // class declaration
29 : // ===========================================================================
30 :
31 : class MFXStaticToolTip;
32 :
33 : // ===========================================================================
34 : // class definitions
35 : // ===========================================================================
36 :
37 : class MFXCheckableButton : public FXButton {
38 : /// @brief fox declaration
39 0 : FXDECLARE(MFXCheckableButton)
40 :
41 : public:
42 : /// @brief constructor (Very similar to the FXButton constructor)
43 : MFXCheckableButton(bool amChecked, FXComposite* p, MFXStaticToolTip* staticToolTip, const std::string& text,
44 : FXIcon* ic = NULL, FXObject* tgt = NULL, FXSelector sel = 0, FXuint opts = BUTTON_NORMAL,
45 : FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0,
46 : FXint pl = DEFAULT_PAD, FXint pr = DEFAULT_PAD, FXint pt = DEFAULT_PAD, FXint pb = DEFAULT_PAD);
47 :
48 : /// @brief destructor (Called automatically)
49 : ~MFXCheckableButton();
50 :
51 : /// @brief check if this MFXCheckableButton is checked
52 : bool amChecked() const;
53 :
54 : /// @brief check or uncheck this MFXCheckableButton
55 : void setChecked(bool val, const bool inform = false);
56 :
57 : /// @name FOX callbacks
58 : /// @{
59 : /// @brief called when this MFXCheckableButton is painted
60 : long onPaint(FXObject*, FXSelector, void*);
61 :
62 : /// @brief called when this MFXCheckableButton is updated
63 : long onUpdate(FXObject*, FXSelector, void*);
64 :
65 : /// @brief called when mouse enter in MFXCheckableButton
66 : long onEnter(FXObject*, FXSelector, void*);
67 :
68 : /// @brief called when mouse leaves in MFXCheckableButton
69 : long onLeave(FXObject*, FXSelector, void*);
70 :
71 : /// @brief called when mouse motion in MFXCheckableButton
72 : long onMotion(FXObject*, FXSelector, void*);
73 :
74 : /// @}
75 :
76 : protected:
77 : /// @brief FOX need this
78 0 : FOX_CONSTRUCTOR(MFXCheckableButton)
79 :
80 : /// @brief flag to indicate if this MFXCheckableButton is checked
81 : bool myAmChecked;
82 :
83 : /// @brief colors of this MFXCheckableButton
84 : FXColor myBackColor,
85 : myDarkColor,
86 : myHiliteColor,
87 : myShadowColor;
88 :
89 : /// @brief check if this MFXCheckableButton is initialised
90 : bool myAmInitialised;
91 :
92 : /// @brief static tool tip
93 : MFXStaticToolTip* myStaticToolTip = nullptr;
94 :
95 : /// @brief build color of this MFXCheckableButton
96 : void buildColors();
97 :
98 : /// @brief set colors of this MFXCheckableButton
99 : void setColors();
100 :
101 : private:
102 : /// @brief Invalidated copy constructor.
103 : MFXCheckableButton(const MFXCheckableButton&) = delete;
104 :
105 : /// @brief Invalidated assignment operator.
106 : MFXCheckableButton& operator=(const MFXCheckableButton&) = delete;
107 : };
|