1*6ac7032dSJohn Scipione/* 2*6ac7032dSJohn Scipione * Copyright 2011, Haiku inc. 3*6ac7032dSJohn Scipione * Distributed under the terms of the MIT License. 4*6ac7032dSJohn Scipione * 5*6ac7032dSJohn Scipione * Documentation by: 6*6ac7032dSJohn Scipione * John Scipione, jscipione@gmail.com 7*6ac7032dSJohn Scipione * Corresponds to: 8*6ac7032dSJohn Scipione * /trunk/headers/os/interface/Control.h rev 42794 9*6ac7032dSJohn Scipione * /trunk/src/kits/interface/Control.cpp rev 42794 10*6ac7032dSJohn Scipione */ 11*6ac7032dSJohn Scipione 12*6ac7032dSJohn Scipione/*! 13*6ac7032dSJohn Scipione \file Control.h 14*6ac7032dSJohn Scipione \brief BControl class definition and support enums. 15*6ac7032dSJohn Scipione*/ 16*6ac7032dSJohn Scipione 17*6ac7032dSJohn Scipione 18*6ac7032dSJohn Scipione/*! 19*6ac7032dSJohn Scipione \var B_CONTROL_ON 20*6ac7032dSJohn Scipione Control on 21*6ac7032dSJohn Scipione*/ 22*6ac7032dSJohn Scipione 23*6ac7032dSJohn Scipione 24*6ac7032dSJohn Scipione/*! 25*6ac7032dSJohn Scipione \var B_CONTROL_OFF 26*6ac7032dSJohn Scipione Control off 27*6ac7032dSJohn Scipione*/ 28*6ac7032dSJohn Scipione 29*6ac7032dSJohn Scipione 30*6ac7032dSJohn Scipione/*! 31*6ac7032dSJohn Scipione \class BControl 32*6ac7032dSJohn Scipione \ingroup interface 33*6ac7032dSJohn Scipione \ingroup libbe 34*6ac7032dSJohn Scipione \brief BControl is the base class for user-event handling objects. 35*6ac7032dSJohn Scipione 36*6ac7032dSJohn Scipione Simple controls such as BCheckBox and BButton deviate only a bit from 37*6ac7032dSJohn Scipione BControl, whereas more complicated controls such as BColorControl and 38*6ac7032dSJohn Scipione BSlider re-implement much more functionality. Whether you are building 39*6ac7032dSJohn Scipione a simple control or something more complicated you should inherit from 40*6ac7032dSJohn Scipione BControl as it provides a common set of methods for intercepting 41*6ac7032dSJohn Scipione received messages from mouse and keyboard events. 42*6ac7032dSJohn Scipione 43*6ac7032dSJohn Scipione Controls have state which they keep in their value. The value of a 44*6ac7032dSJohn Scipione control, stored as an int32, is read and set by the virtual Value() and 45*6ac7032dSJohn Scipione SetValue() methods. BControl defines \c B_CONTROL_ON and \c B_CONTROL_OFF 46*6ac7032dSJohn Scipione values that you can use as a convenience if your control has a simple 47*6ac7032dSJohn Scipione on/off state. If your BControl derived class stores a larger set of 48*6ac7032dSJohn Scipione states then you should define your own integer values instead. 49*6ac7032dSJohn Scipione*/ 50*6ac7032dSJohn Scipione 51*6ac7032dSJohn Scipione 52*6ac7032dSJohn Scipione/*! 53*6ac7032dSJohn Scipione \fn BControl::BControl(BRect frame, const char *name, const char *label, 54*6ac7032dSJohn Scipione BMessage *message, uint32 resizingMode, 55*6ac7032dSJohn Scipione uint32 flags) 56*6ac7032dSJohn Scipione \brief Construct a control in the \a frame with a \a name, \a label, 57*6ac7032dSJohn Scipione model \a message, \a resizingMode, and creation \a flags. 58*6ac7032dSJohn Scipione 59*6ac7032dSJohn Scipione The initial value of the control is set to 0 (\c B_CONTROL_OFF). 60*6ac7032dSJohn Scipione The \a label and the \a message parameters can be set to \c NULL. 61*6ac7032dSJohn Scipione 62*6ac7032dSJohn Scipione \param frame The \a frame to draw the control in. 63*6ac7032dSJohn Scipione \param name The \a name of the control. 64*6ac7032dSJohn Scipione \param label The \a label displayed along with the control. 65*6ac7032dSJohn Scipione \param message The \a message to send when the control is activated. 66*6ac7032dSJohn Scipione \param resizingMode Defines the behavior of the control as the parent 67*6ac7032dSJohn Scipione view resizes. 68*6ac7032dSJohn Scipione \param flags Behavior \a flags for the control. See BView for details. 69*6ac7032dSJohn Scipione*/ 70*6ac7032dSJohn Scipione 71*6ac7032dSJohn Scipione 72*6ac7032dSJohn Scipione/*! 73*6ac7032dSJohn Scipione \fn BControl::BControl(const char *name, const char *label, 74*6ac7032dSJohn Scipione BMessage *message, uint32 flags) 75*6ac7032dSJohn Scipione \brief Construct a control with a \a name, \a label, model \a message, 76*6ac7032dSJohn Scipione and creation \a flags suitable for use with the Layout API. 77*6ac7032dSJohn Scipione 78*6ac7032dSJohn Scipione The initial value of the control is set to 0 (\c B_CONTROL_OFF). 79*6ac7032dSJohn Scipione The \a label and the \a message parameters can be set to \c NULL. 80*6ac7032dSJohn Scipione 81*6ac7032dSJohn Scipione \param name The \a name of the control. 82*6ac7032dSJohn Scipione \param label The \a label displayed along with the control. 83*6ac7032dSJohn Scipione \param message The \a message to send when the control is activated. 84*6ac7032dSJohn Scipione \param flags Behavior \a flags for the control. See BView for details. 85*6ac7032dSJohn Scipione*/ 86*6ac7032dSJohn Scipione 87*6ac7032dSJohn Scipione 88*6ac7032dSJohn Scipione/*! 89*6ac7032dSJohn Scipione \fn BControl::~BControl() 90*6ac7032dSJohn Scipione \brief Frees all memory used by the BControl object including the memory 91*6ac7032dSJohn Scipione used by the model message. 92*6ac7032dSJohn Scipione*/ 93*6ac7032dSJohn Scipione 94*6ac7032dSJohn Scipione 95*6ac7032dSJohn Scipione/*! 96*6ac7032dSJohn Scipione \fn BControl::BControl(BMessage *archive) 97*6ac7032dSJohn Scipione \brief Constructs a BControl object from an \a archive message. 98*6ac7032dSJohn Scipione 99*6ac7032dSJohn Scipione This method is usually not called directly. If you want to build a 100*6ac7032dSJohn Scipione control from a message you should call Instantiate() which can 101*6ac7032dSJohn Scipione handle errors properly. 102*6ac7032dSJohn Scipione 103*6ac7032dSJohn Scipione If the \a archive deep, the BControl object will also unarchive each 104*6ac7032dSJohn Scipione of its child views recursively. 105*6ac7032dSJohn Scipione 106*6ac7032dSJohn Scipione \param archive The \a archive message to restore from. 107*6ac7032dSJohn Scipione*/ 108*6ac7032dSJohn Scipione 109*6ac7032dSJohn Scipione 110*6ac7032dSJohn Scipione/*! 111*6ac7032dSJohn Scipione \fn BArchivable* BControl::Instantiate(BMessage *archive) 112*6ac7032dSJohn Scipione \brief Creates a new object from an \a archive. 113*6ac7032dSJohn Scipione 114*6ac7032dSJohn Scipione If the message is a valid object then the instance created from the 115*6ac7032dSJohn Scipione passed in \a archive will be returned. Otherwise this method will 116*6ac7032dSJohn Scipione return \c NULL. 117*6ac7032dSJohn Scipione 118*6ac7032dSJohn Scipione \param archive The \a archive message. 119*6ac7032dSJohn Scipione 120*6ac7032dSJohn Scipione \returns An instance of the object if \a archive is valid or \c NULL. 121*6ac7032dSJohn Scipione 122*6ac7032dSJohn Scipione \sa BArchivable::Instantiate() 123*6ac7032dSJohn Scipione*/ 124*6ac7032dSJohn Scipione 125*6ac7032dSJohn Scipione 126*6ac7032dSJohn Scipione/*! 127*6ac7032dSJohn Scipione \fn status_t BControl::Archive(BMessage *archive, bool deep) const 128*6ac7032dSJohn Scipione \brief Archives the object into \a archive. 129*6ac7032dSJohn Scipione 130*6ac7032dSJohn Scipione \param archive The target \a archive that the data will go into. 131*6ac7032dSJohn Scipione \param deep Whether or not to recursively archive child views. 132*6ac7032dSJohn Scipione 133*6ac7032dSJohn Scipione \retval B_OK The archive operation was successful. 134*6ac7032dSJohn Scipione \retval B_BAD_VALUE \c NULL \a archive message. 135*6ac7032dSJohn Scipione \retval B_ERROR The archive operation failed. 136*6ac7032dSJohn Scipione 137*6ac7032dSJohn Scipione \sa BArchivable::Archive() 138*6ac7032dSJohn Scipione*/ 139*6ac7032dSJohn Scipione 140*6ac7032dSJohn Scipione 141*6ac7032dSJohn Scipione/*! 142*6ac7032dSJohn Scipione \fn void BControl::WindowActivated(bool active) 143*6ac7032dSJohn Scipione \brief Hook method that is called when the attached window becomes 144*6ac7032dSJohn Scipione activated or deactivated. 145*6ac7032dSJohn Scipione 146*6ac7032dSJohn Scipione The BControl is redrawn if it is a child of the focused view. 147*6ac7032dSJohn Scipione 148*6ac7032dSJohn Scipione \param active \c true if the window becomes activated, \c false if the 149*6ac7032dSJohn Scipione window becomes deactivated. 150*6ac7032dSJohn Scipione 151*6ac7032dSJohn Scipione \sa BView::WindowActivated() 152*6ac7032dSJohn Scipione*/ 153*6ac7032dSJohn Scipione 154*6ac7032dSJohn Scipione 155*6ac7032dSJohn Scipione/*! 156*6ac7032dSJohn Scipione \fn void BControl::AttachedToWindow() 157*6ac7032dSJohn Scipione \brief Hook method that is called when the object is attached to a 158*6ac7032dSJohn Scipione window. 159*6ac7032dSJohn Scipione 160*6ac7032dSJohn Scipione This method overrides BView::AttachedToWindow() setting the low color 161*6ac7032dSJohn Scipione and view color of the BControl so that it matches the view color of the 162*6ac7032dSJohn Scipione control's parent view. It also makes the attached window the default 163*6ac7032dSJohn Scipione target for Invoke() as long as another target has not already been set. 164*6ac7032dSJohn Scipione 165*6ac7032dSJohn Scipione \sa BView::AttachedToWindow() 166*6ac7032dSJohn Scipione \sa Invoke() 167*6ac7032dSJohn Scipione \sa BInvoker::SetTarget() 168*6ac7032dSJohn Scipione*/ 169*6ac7032dSJohn Scipione 170*6ac7032dSJohn Scipione 171*6ac7032dSJohn Scipione/*! 172*6ac7032dSJohn Scipione \fn void BControl::DetachedFromWindow() 173*6ac7032dSJohn Scipione \brief Hook method that is called when the object is detached from a 174*6ac7032dSJohn Scipione window. 175*6ac7032dSJohn Scipione 176*6ac7032dSJohn Scipione \sa BView::DetachedFromWindow() 177*6ac7032dSJohn Scipione*/ 178*6ac7032dSJohn Scipione 179*6ac7032dSJohn Scipione 180*6ac7032dSJohn Scipione/*! 181*6ac7032dSJohn Scipione \fn void BControl::AllAttached() 182*6ac7032dSJohn Scipione \brief Similar to AttachedToWindow() but this method is triggered after 183*6ac7032dSJohn Scipione all child views have already been attached to a window. 184*6ac7032dSJohn Scipione 185*6ac7032dSJohn Scipione \sa BView::AllAttached() 186*6ac7032dSJohn Scipione*/ 187*6ac7032dSJohn Scipione 188*6ac7032dSJohn Scipione 189*6ac7032dSJohn Scipione/*! 190*6ac7032dSJohn Scipione \fn void BControl::AllDetached() 191*6ac7032dSJohn Scipione \brief Similar to AttachedToWindow() but this method is triggered after 192*6ac7032dSJohn Scipione all child views have already been detached from a window. 193*6ac7032dSJohn Scipione 194*6ac7032dSJohn Scipione \sa BView::AllDetached() 195*6ac7032dSJohn Scipione*/ 196*6ac7032dSJohn Scipione 197*6ac7032dSJohn Scipione 198*6ac7032dSJohn Scipione/*! 199*6ac7032dSJohn Scipione \fn void BControl::MakeFocus(bool focused) 200*6ac7032dSJohn Scipione \brief Gives or removes focus from the control. 201*6ac7032dSJohn Scipione 202*6ac7032dSJohn Scipione BControl::MakeFocus() overrides BView::MakeFocus() to call Draw() when 203*6ac7032dSJohn Scipione the focus changes. Derived classes generally don't have to re-implement 204*6ac7032dSJohn Scipione MakeFocus(). 205*6ac7032dSJohn Scipione 206*6ac7032dSJohn Scipione IsFocusChanging() returns \c true when Draw() is called from this method. 207*6ac7032dSJohn Scipione 208*6ac7032dSJohn Scipione \param focused \a true to set focus, \a false to remove it. 209*6ac7032dSJohn Scipione 210*6ac7032dSJohn Scipione \sa BView::MakeFocus() 211*6ac7032dSJohn Scipione \sa IsFocusChanging() 212*6ac7032dSJohn Scipione*/ 213*6ac7032dSJohn Scipione 214*6ac7032dSJohn Scipione 215*6ac7032dSJohn Scipione/*! 216*6ac7032dSJohn Scipione \fn void BControl::KeyDown(const char *bytes, int32 numBytes) 217*6ac7032dSJohn Scipione \brief Hook method that is called when a keyboard key is pressed. 218*6ac7032dSJohn Scipione 219*6ac7032dSJohn Scipione Overrides BView::KeyDown() to toggle the control value and then 220*6ac7032dSJohn Scipione calls Invoke() for \c B_SPACE or \c B_ENTER. If this is not desired 221*6ac7032dSJohn Scipione you should override this method in derived classes. 222*6ac7032dSJohn Scipione 223*6ac7032dSJohn Scipione The KeyDown() method is only called if the BControl is the focus view 224*6ac7032dSJohn Scipione in the active window. If the window has a default button, \c B_ENTER 225*6ac7032dSJohn Scipione will be passed to that object instead of the focus view. 226*6ac7032dSJohn Scipione 227*6ac7032dSJohn Scipione \param bytes The bytes of the key combination pressed. 228*6ac7032dSJohn Scipione \param numBytes The number of bytes in \a bytes. 229*6ac7032dSJohn Scipione 230*6ac7032dSJohn Scipione \sa BView::KeyDown() 231*6ac7032dSJohn Scipione \sa MakeFocus() 232*6ac7032dSJohn Scipione*/ 233*6ac7032dSJohn Scipione 234*6ac7032dSJohn Scipione 235*6ac7032dSJohn Scipione/*! 236*6ac7032dSJohn Scipione \fn void BControl::MouseDown(BPoint point) 237*6ac7032dSJohn Scipione \brief Hook method that is called when a mouse button is pressed. 238*6ac7032dSJohn Scipione 239*6ac7032dSJohn Scipione \param point The point on the screen where to mouse pointer is when 240*6ac7032dSJohn Scipione the mouse button is pressed. 241*6ac7032dSJohn Scipione 242*6ac7032dSJohn Scipione \sa BView::MouseDown() 243*6ac7032dSJohn Scipione*/ 244*6ac7032dSJohn Scipione 245*6ac7032dSJohn Scipione 246*6ac7032dSJohn Scipione/*! 247*6ac7032dSJohn Scipione \fn void BControl::MouseUp(BPoint point) 248*6ac7032dSJohn Scipione \brief Hook method that is called when a mouse button is released. 249*6ac7032dSJohn Scipione 250*6ac7032dSJohn Scipione \param point The point on the screen where to mouse pointer is when 251*6ac7032dSJohn Scipione the mouse button is released. 252*6ac7032dSJohn Scipione 253*6ac7032dSJohn Scipione \sa BView::MouseUp() 254*6ac7032dSJohn Scipione*/ 255*6ac7032dSJohn Scipione 256*6ac7032dSJohn Scipione 257*6ac7032dSJohn Scipione/*! 258*6ac7032dSJohn Scipione \fn void BControl::MouseMoved(BPoint point, uint32 transit, 259*6ac7032dSJohn Scipione const BMessage *message) 260*6ac7032dSJohn Scipione \brief Hook method that is called when the mouse is moved. 261*6ac7032dSJohn Scipione 262*6ac7032dSJohn Scipione \sa BView::MouseMoved() 263*6ac7032dSJohn Scipione*/ 264*6ac7032dSJohn Scipione 265*6ac7032dSJohn Scipione 266*6ac7032dSJohn Scipione/*! 267*6ac7032dSJohn Scipione \fn void BControl::SetLabel(const char *label) 268*6ac7032dSJohn Scipione \brief Sets the \a label of the control. 269*6ac7032dSJohn Scipione 270*6ac7032dSJohn Scipione If the \a label changes the control is redrawn. 271*6ac7032dSJohn Scipione 272*6ac7032dSJohn Scipione \param label The \a label to set, can be \c NULL. 273*6ac7032dSJohn Scipione*/ 274*6ac7032dSJohn Scipione 275*6ac7032dSJohn Scipione 276*6ac7032dSJohn Scipione/*! 277*6ac7032dSJohn Scipione \fn const char* BControl::Label() const 278*6ac7032dSJohn Scipione \brief Gets the label of the control. 279*6ac7032dSJohn Scipione 280*6ac7032dSJohn Scipione returns The control's label. 281*6ac7032dSJohn Scipione*/ 282*6ac7032dSJohn Scipione 283*6ac7032dSJohn Scipione 284*6ac7032dSJohn Scipione/*! 285*6ac7032dSJohn Scipione \fn void BControl::SetValue(int32 value) 286*6ac7032dSJohn Scipione \brief Sets the value of the control. 287*6ac7032dSJohn Scipione 288*6ac7032dSJohn Scipione If the \a value changes the control is redrawn. 289*6ac7032dSJohn Scipione 290*6ac7032dSJohn Scipione \param value The \a value to set. 291*6ac7032dSJohn Scipione 292*6ac7032dSJohn Scipione \sa SetValueNoUpdate() 293*6ac7032dSJohn Scipione*/ 294*6ac7032dSJohn Scipione 295*6ac7032dSJohn Scipione 296*6ac7032dSJohn Scipione/*! 297*6ac7032dSJohn Scipione \fn void BControl::SetValueNoUpdate(int32 value) 298*6ac7032dSJohn Scipione \brief Sets the value of the control without redrawing. 299*6ac7032dSJohn Scipione 300*6ac7032dSJohn Scipione \param value The \a value to set. 301*6ac7032dSJohn Scipione 302*6ac7032dSJohn Scipione \sa SetValue() 303*6ac7032dSJohn Scipione*/ 304*6ac7032dSJohn Scipione 305*6ac7032dSJohn Scipione 306*6ac7032dSJohn Scipione/*! 307*6ac7032dSJohn Scipione \fn int32 BControl::Value() const 308*6ac7032dSJohn Scipione \brief Gets the value of the control. 309*6ac7032dSJohn Scipione 310*6ac7032dSJohn Scipione \returns The control's value. 311*6ac7032dSJohn Scipione*/ 312*6ac7032dSJohn Scipione 313*6ac7032dSJohn Scipione 314*6ac7032dSJohn Scipione/*! 315*6ac7032dSJohn Scipione \fn void BControl::SetEnabled(bool enabled) 316*6ac7032dSJohn Scipione \brief Enables or disables the control. 317*6ac7032dSJohn Scipione 318*6ac7032dSJohn Scipione BControl objects are enabled by default. If the control changes enabled 319*6ac7032dSJohn Scipione state then it is redrawn. 320*6ac7032dSJohn Scipione 321*6ac7032dSJohn Scipione Disabled controls generally won't allow the user to focus on them 322*6ac7032dSJohn Scipione (The \c B_NAVIGABLE flag is turned off), and don't post any messages. 323*6ac7032dSJohn Scipione 324*6ac7032dSJohn Scipione Disabled controls in derived classes should be drawn in subdued colors 325*6ac7032dSJohn Scipione to visually indicate that they are disabled and should not respond to 326*6ac7032dSJohn Scipione keyboard or mouse events. 327*6ac7032dSJohn Scipione 328*6ac7032dSJohn Scipione \param enabled If \c true enables the control, if \c false, disables it. 329*6ac7032dSJohn Scipione*/ 330*6ac7032dSJohn Scipione 331*6ac7032dSJohn Scipione 332*6ac7032dSJohn Scipione/*! 333*6ac7032dSJohn Scipione \fn bool BControl::IsEnabled() const 334*6ac7032dSJohn Scipione \brief Gets whether or not the control is currently enabled. 335*6ac7032dSJohn Scipione 336*6ac7032dSJohn Scipione \returns \c true if the control is enabled, \c false if it is disabled. 337*6ac7032dSJohn Scipione*/ 338*6ac7032dSJohn Scipione 339*6ac7032dSJohn Scipione 340*6ac7032dSJohn Scipione/*! 341*6ac7032dSJohn Scipione \fn void BControl::GetPreferredSize(float *_width, float *_height) 342*6ac7032dSJohn Scipione \brief Fill out the preferred width and height of the control 343*6ac7032dSJohn Scipione into the \a _width and \a _height parameters. 344*6ac7032dSJohn Scipione 345*6ac7032dSJohn Scipione Derived classes can override this method to set the preferred 346*6ac7032dSJohn Scipione width and height of the control. 347*6ac7032dSJohn Scipione 348*6ac7032dSJohn Scipione \param _width Pointer to a \c float to hold the width of the control. 349*6ac7032dSJohn Scipione \param _height Pointer to a \c float to hold the height of the control. 350*6ac7032dSJohn Scipione 351*6ac7032dSJohn Scipione \sa BView::GetPreferredSize() 352*6ac7032dSJohn Scipione*/ 353*6ac7032dSJohn Scipione 354*6ac7032dSJohn Scipione 355*6ac7032dSJohn Scipione/*! 356*6ac7032dSJohn Scipione \fn void BControl::ResizeToPreferred() 357*6ac7032dSJohn Scipione \brief Resize the control to its preferred size. 358*6ac7032dSJohn Scipione 359*6ac7032dSJohn Scipione \sa BView::ResizeToPreferred() 360*6ac7032dSJohn Scipione*/ 361*6ac7032dSJohn Scipione 362*6ac7032dSJohn Scipione 363*6ac7032dSJohn Scipione/*! 364*6ac7032dSJohn Scipione \fn status_t BControl::Invoke(BMessage *message) 365*6ac7032dSJohn Scipione \brief Sends a copy of the model \a message to the designated target. 366*6ac7032dSJohn Scipione 367*6ac7032dSJohn Scipione BControl::Invoke() overrides BInvoker::Invoke(). Derived classes 368*6ac7032dSJohn Scipione should use this method in their MouseDown() and KeyDown() methods 369*6ac7032dSJohn Scipione and should call IsEnabled() to check if the control is enabled 370*6ac7032dSJohn Scipione before calling Invoke(). 371*6ac7032dSJohn Scipione 372*6ac7032dSJohn Scipione The following fields added to the BMessage: 373*6ac7032dSJohn Scipione - "when" \c B_INT64_TYPE system_time() 374*6ac7032dSJohn Scipione - "source" \c B_POINTER_TYPE A pointer to the BControl object. 375*6ac7032dSJohn Scipione 376*6ac7032dSJohn Scipione \param message The \a message to send. 377*6ac7032dSJohn Scipione 378*6ac7032dSJohn Scipione \sa BInvoker::Invoke() 379*6ac7032dSJohn Scipione \sa IsEnabled() 380*6ac7032dSJohn Scipione*/ 381*6ac7032dSJohn Scipione 382*6ac7032dSJohn Scipione 383*6ac7032dSJohn Scipione/*! 384*6ac7032dSJohn Scipione \fn BHandler* BControl::ResolveSpecifier(BMessage *message, int32 index, 385*6ac7032dSJohn Scipione BMessage *specifier, int32 what, 386*6ac7032dSJohn Scipione const char *property) 387*6ac7032dSJohn Scipione \brief Determine the proper specifier for scripting messages. 388*6ac7032dSJohn Scipione 389*6ac7032dSJohn Scipione \sa BHandler::ResolveSpecifier() 390*6ac7032dSJohn Scipione*/ 391*6ac7032dSJohn Scipione 392*6ac7032dSJohn Scipione 393*6ac7032dSJohn Scipione/*! 394*6ac7032dSJohn Scipione \fn status_t BControl::GetSupportedSuites(BMessage *message) 395*6ac7032dSJohn Scipione \brief Report the suites of understood messages. 396*6ac7032dSJohn Scipione 397*6ac7032dSJohn Scipione \sa BHandler::GetSupportedSuites(); 398*6ac7032dSJohn Scipione*/ 399*6ac7032dSJohn Scipione 400*6ac7032dSJohn Scipione 401*6ac7032dSJohn Scipione/*! 402*6ac7032dSJohn Scipione \fn status_t BControl::Perform(perform_code code, void* _data) 403*6ac7032dSJohn Scipione \brief Perform some action. (Internal Method) 404*6ac7032dSJohn Scipione 405*6ac7032dSJohn Scipione The following perform codes are recognized: 406*6ac7032dSJohn Scipione - \c PERFORM_CODE_MIN_SIZE 407*6ac7032dSJohn Scipione - \c PERFORM_CODE_MAX_SIZE 408*6ac7032dSJohn Scipione - \c PERFORM_CODE_PREFERRED_SIZE 409*6ac7032dSJohn Scipione - \c PERFORM_CODE_LAYOUT_ALIGNMENT 410*6ac7032dSJohn Scipione - \c PERFORM_CODE_HAS_HEIGHT_FOR_WIDTH 411*6ac7032dSJohn Scipione - \c PERFORM_CODE_GET_HEIGHT_FOR_WIDTH 412*6ac7032dSJohn Scipione - \c PERFORM_CODE_SET_LAYOUT 413*6ac7032dSJohn Scipione - \c PERFORM_CODE_INVALIDATE_LAYOUT 414*6ac7032dSJohn Scipione - \c PERFORM_CODE_DO_LAYOUT 415*6ac7032dSJohn Scipione 416*6ac7032dSJohn Scipione \param code The perform code. 417*6ac7032dSJohn Scipione \param _data A pointer to store some data. 418*6ac7032dSJohn Scipione 419*6ac7032dSJohn Scipione \returns A status code. 420*6ac7032dSJohn Scipione 421*6ac7032dSJohn Scipione \sa BHandler::Perform() 422*6ac7032dSJohn Scipione*/ 423