Eclipse SUMO - Simulation of Urban MObility
MFXMenuButtonTooltip.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-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 /****************************************************************************/
18 // MenuButton similar to FXMenuButton but with the possibility of showing tooltips
19 /****************************************************************************/
20 #include <config.h>
21 
23 #include "MFXMenuButtonTooltip.h"
24 
25 
26 FXDEFMAP(MFXMenuButtonTooltip) MFXMenuButtonTooltipMap[] = {
27  FXMAPFUNC(SEL_ENTER, 0, MFXMenuButtonTooltip::onEnter),
28  FXMAPFUNC(SEL_LEAVE, 0, MFXMenuButtonTooltip::onLeave),
29  FXMAPFUNC(SEL_MOTION, 0, MFXMenuButtonTooltip::onMotion),
30  FXMAPFUNC(SEL_LEFTBUTTONPRESS, 0, MFXMenuButtonTooltip::onLeftBtnPress),
31  FXMAPFUNC(SEL_KEYPRESS, 0, MFXMenuButtonTooltip::onKeyPress),
32  FXMAPFUNC(SEL_COMMAND, FXWindow::ID_POST, MFXMenuButtonTooltip::onCmdPost),
33 };
34 
35 // Object implementation
36 FXIMPLEMENT(MFXMenuButtonTooltip, FXMenuButton, MFXMenuButtonTooltipMap, ARRAYNUMBER(MFXMenuButtonTooltipMap))
37 
38 
39 MFXMenuButtonTooltip::MFXMenuButtonTooltip(FXComposite* p, MFXStaticToolTip* staticToolTip, const std::string& text, FXIcon* ic,
40  FXPopup* pup, FXObject* optionalTarget, FXuint opts,
41  FXint x, FXint y, FXint w, FXint h, FXint pl, FXint pr, FXint pt, FXint pb) :
42  FXMenuButton(p, text.c_str(), ic, pup, opts, x, y, w, h, pl, pr, pt, pb),
43  myStaticToolTip(staticToolTip),
44  myOptionalTarget(optionalTarget) {
45 }
46 
47 
49 
50 
51 long
52 MFXMenuButtonTooltip::onEnter(FXObject* sender, FXSelector sel, void* ptr) {
53  // show tip show
54  myStaticToolTip->showStaticToolTip(getTipText());
55  return FXMenuButton::onEnter(sender, sel, ptr);
56 }
57 
58 
59 long
60 MFXMenuButtonTooltip::onLeave(FXObject* sender, FXSelector sel, void* ptr) {
61  // hide static toolTip
63  return FXMenuButton::onLeave(sender, sel, ptr);
64 }
65 
66 
67 long
68 MFXMenuButtonTooltip::onMotion(FXObject* sender, FXSelector sel, void* ptr) {
69  // update static tooltip
70  myStaticToolTip->onUpdate(sender, sel, ptr);
71  return FXMenuButton::onMotion(sender, sel, ptr);
72 }
73 
74 
75 long
76 MFXMenuButtonTooltip::onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr) {
77  // inform optional target
78  if (myOptionalTarget) {
79  myOptionalTarget->tryHandle(this, FXSEL(MID_MBTTIP_FOCUS, message), nullptr);
80  }
81  // continue handling onLeftBtnPress
82  return FXMenuButton::onLeftBtnPress(sender, sel, ptr);
83 }
84 
85 long
86 MFXMenuButtonTooltip::onKeyPress(FXObject* sender, FXSelector sel, void* ptr) {
87  // inform optional target
88  if (myOptionalTarget) {
89  myOptionalTarget->tryHandle(this, FXSEL(MID_MBTTIP_FOCUS, message), nullptr);
90  }
91  // continue handling onKeyPress
92  return FXMenuButton::onKeyPress(sender, sel, ptr);
93 }
94 
95 
96 long
97 MFXMenuButtonTooltip::onCmdPost(FXObject* sender, FXSelector sel, void* ptr) {
98  // inform optional target
99  if (myOptionalTarget) {
100  myOptionalTarget->tryHandle(this, FXSEL(MID_MBTTIP_SELECTED, message), nullptr);
101  }
102  // continue handling onCheck
103  return FXMenuButton::onCmdPost(sender, sel, ptr);
104 }
105 
106 /****************************************************************************/
@ MID_MBTTIP_SELECTED
Definition: GUIAppEnum.h:1621
@ MID_MBTTIP_FOCUS
callback for MFXMenuButtonTooltip
Definition: GUIAppEnum.h:1620
FXDEFMAP(MFXMenuButtonTooltip) MFXMenuButtonTooltipMap[]
MFXStaticToolTip * myStaticToolTip
FOX needs this.
long onMotion(FXObject *, FXSelector, void *)
called when mouse motion in MFXMenuButtonTooltip
long onKeyPress(FXObject *, FXSelector, void *)
called when key is press
~MFXMenuButtonTooltip()
destructor (Called automatically)
long onLeave(FXObject *, FXSelector, void *)
called when mouse leaves in MFXMenuButtonTooltip
long onLeftBtnPress(FXObject *, FXSelector, void *)
called when left mouse button is press
FXObject * myOptionalTarget
optional target
long onCmdPost(FXObject *, FXSelector, void *)
called when button is press
long onEnter(FXObject *, FXSelector, void *)
MFXStaticToolTip (based on FXToolTip)
long onUpdate(FXObject *sender, FXSelector sel, void *ptr)
called when tooltip is updated
void showStaticToolTip(const FXString &toolTipText)
show static toolTip
void hideStaticToolTip()
hide static toolTip
Definition: json.hpp:4471