ubit
Public Member Functions | Friends | List of all members
ubit::UAttr Class Reference

Base class for attributes. More...

#include <uattr.hpp>

Inheritance diagram for ubit::UAttr:
ubit::UNode ubit::UObject ubit::UAlpha ubit::UAttrList ubit::UBackground ubit::UBorder ubit::UChoice ubit::UColor ubit::UCursor ubit::UDefaultAttribute ubit::UEdit ubit::UFlagdef ubit::UFont ubit::UHalign ubit::UHspacing ubit::UHtmlAttribute ubit::UOrient ubit::UPadding ubit::UPos ubit::UPosControl ubit::UPropval ubit::URadioSelect ubit::UScale ubit::USize ubit::USizeControl ubit::UTip ubit::UTitle ubit::UValign ubit::UViewStyle ubit::UVspacing

Public Member Functions

 UAttr (UConst)
 
virtual UAttrtoAttr ()
 dynamic cast: returns this object if it derives from UAttr and null otherwise.
 
virtual const UAttrtoAttr () const
 dynamic cast: returns this object if it derives from UAttr and null otherwise.
 
virtual int getDisplayType () const
 
virtual int getNodeType () const
 returns the XML node type.
 
virtual const UStrgetNodeName () const
 returns the name of this attribute (calls getName()).
 
virtual UStr getNodeValue () const
 returns the value of this attribute (calls getValue()).
 
virtual const UStrgetName () const
 returns the name of this attribute.
 
virtual bool getValue (UStr &value) const
 gets the value of this attribute. More...
 
virtual void setValue (const UStr &value)
 changes the value of this attribute does nothing if not applicable for a given subclass.
 
virtual void initNode (UDoc *, UElem *parent)
 called when the document is created.
 
virtual UAttronChange (UCall &)
 adds a callback that is fired when the value of the property is modified. More...
 
UAttrsetConst ()
 
virtual void update ()
 updates parents graphics.
 
virtual void changed (bool update=true)
 [impl] called when object's content is changed. More...
 
virtual void putProp (UUpdateContext *, UElem &)
 [impl] changes corresponding value in the UUpdateContext
 
- Public Member Functions inherited from ubit::UNode
virtual int isDisplayable () const
 
virtual UNodetoNode ()
 dynamic cast: returns this object if it derives from UNode and null otherwise.
 
virtual const UNodetoNode () const
 dynamic cast: returns this object if it derives from UNode and null otherwise.
 
virtual bool isChildOf (const UElem &parent, bool indirect=true) const
 returns true if this object a child of 'parent'. More...
 
UParentIter pbegin () const
 returns an iterator to the beginning of the list of direct parents. More...
 
UParentIter pend () const
 returns an iterator to the end of the parent list ( More...
 
virtual UParentsparents () const
 returns the list of direct parents ( More...
 
virtual UElemgetParent (int pos=0) const
 returns the Nth direct parent. More...
 
virtual bool hasSceneGraphParent () const
 
template<class CC >
CC * findParent () const
 < this object has at least one parent in the scene graph. More...
 
virtual int getBoxParents (std::vector< UBox *> &parvect) const
 retrieves direct and indirect parents that are boxes.
 
virtual UBoxgetParent (const UView *) const
 returns the direct or indirect parent that contains this view. More...
 
virtual UViewgetParentView (const UView *) const
 returns the direct or indirect parent's view that contains this view. More...
 
virtual UBoxgetParent (const UInputEvent &) const
 
virtual UViewgetParentView (const UInputEvent &) const
 
virtual void removeFromParents (bool update_parents=true)
 [impl] removes this object from all direct parents. More...
 
virtual bool fire (UEvent &) const
 fires callback functions that match this event.
 
virtual UNoderemoveAllAttrs (bool autodel=true)
 removes all attributes (if any, redefined by subclasses).
 
bool isAutoUpdate () const
 return current update policy: see setAutoUpdate().
 
UNodesetAutoUpdate (bool state=true)
 changes the update policy of this object when its is modified. More...
 
void fireParents (const UCond &c, UNode *n) const
 
void updateAutoParents (const UUpdate &m)
 
virtual void addChangeCall (UCall &)
 
virtual UElemgetSubGroup () const
 
void _addAttr (const UChild &attribute)
 [impl] to be removed @.
 
UChildIter _abegin () const
 [impl] to be removed @.
 
UChildIter _aend () const
 [impl] to be removed @.
 
- Public Member Functions inherited from ubit::UObject
 UObject (const UObject &)
 
UObjectoperator= (const UObject &)
 
virtual const UClassgetClass () const
 instance method that returns the metaclass of this object. More...
 
const UStrgetClassName () const
 returns getClass().getName().
 
virtual void error (const char *function_name, const char *format,...) const
 prints out an error message. More...
 
virtual void warning (const char *function_name, const char *format,...) const
 prints out a warning message: More...
 
bool isDeletable () const
 checks if this object can be destroyed by 'delete'. More...
 
bool isConst () const
 checks whether the content of this object can be modified ( More...
 
UObjectsetConst ()
 specifies that the content of this object cannot be modified. More...
 
bool isAutoUpdate () const
 return current update policy: More...
 
UObjectsetAutoUpdate (bool state=true)
 changes the update policy of this object when its is modified. More...
 
bool isIgnoringChangeCallbacks () const
 return true if change callbacks are fired.
 
UObjectignoreChangeCallbacks (bool state)
 change callbacks are not fired if argument is true.
 
virtual UElemtoElem ()
 dynamic cast: returns this object if it derives from UElem and null otherwise.
 
virtual const UElemtoElem () const
 dynamic cast: returns this object if it derives from UElem and null otherwise.
 
virtual UDatatoData ()
 dynamic cast: returns this object if it derives from UData and null otherwise.
 
virtual const UDatatoData () const
 dynamic cast: returns this object if it derives from UData and null otherwise.
 
virtual UStrtoStr ()
 dynamic cast: returns this object if it derives from UStr and null otherwise.
 
virtual const UStrtoStr () const
 dynamic cast: returns this object if it derives from UStr and null otherwise.
 
virtual UCalltoCall ()
 dynamic cast: returns this object if it derives from UCall and null otherwise.
 
virtual const UCalltoCall () const
 dynamic cast: returns this object if it derives from UCall and null otherwise.
 
virtual UBoxtoBox ()
 dynamic cast: returns this object if it derives from UBox and null otherwise.
 
virtual const UBoxtoBox () const
 dynamic cast: returns this object if it derives from UBox and null otherwise.
 
virtual UWintoWin ()
 dynamic cast: returns this object if it derives from UWin and null otherwise.
 
virtual const UWintoWin () const
 dynamic cast: returns this object if it derives from UWin and null otherwise.
 
virtual UMenutoMenu ()
 dynamic cast: returns this object if it derives from UMenu and null otherwise.
 
virtual const UMenutoMenu () const
 dynamic cast: returns this object if it derives from UMenu and null otherwise.
 
State getState () const
 returns the current object state.
 
void setState (State s)
 changes the object state.
 
PtrCount getPtrCount () const
 [impl] returns the number of uptr<> smart pointers that are pointing to this object.
 
bool checkConst () const
 [impl] produces an error if this object is logically constant ( More...
 
bool isDestructed () const
 [impl] this object has been destructed (but memory has not been freed yet).
 
bool isDestructing () const
 [impl] this object is being destructed (one of its destructors has been called).
 
void * operator new (size_t)
 < [impl] returns true if there is at least one scene graph parent (redefined by UNode). More...
 
void operator delete (void *)
 delete operator is forbidden on instances that derive from UObject.
 
void addPtr () const
 [Impl] a uptr is added to this object.
 
void removePtr () const
 [Impl] a uptr is removed from this object.
 

Friends

class UBox
 

Additional Inherited Members

- Public Types inherited from ubit::UNode
enum  NodeType {
  ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3, CDATA_SECTION_NODE = 4,
  ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7, COMMENT_NODE = 8,
  DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11, NOTATION_NODE = 12
}
 redefines Class() and getClass() methods ( More...
 
enum  DisplayType {
  WINLIST =-1, UNDISPLAYBLE =0, ATTRIBUTE, DATA,
  INLINE, BLOCK, BORDER, HARDWIN,
  SOFTWIN
}
 Ubit display types.
 
- Public Types inherited from ubit::UObject
typedef unsigned char State
 
typedef short PtrCount
 
- Static Public Member Functions inherited from ubit::UObject
static const char * getVersion ()
 returns the version of the Ubit package.
 
static const UClassClass ()
 class method that returns the metaclass of this class. More...
 
static UStylecreateStyle ()
 
- Static Public Attributes inherited from ubit::UObject
static UConst UCONST
 UCONST can be given as an argument to some constructors to make the object constant. More...
 
- Protected Member Functions inherited from ubit::UNode
 UNode ()
 constructor, can anly be called by subclasses because UNode is abstract.
 
virtual ~UNode ()
 destructor, note that children are recursively destroyed except if pointed elsewhere ( More...
 
virtual void addingTo (UChild &, UElem &parent)
 called when this object is added to a parent.
 
virtual void removingFrom (UChild &, UElem &parent)
 called when this object is removed from a parent (SEE DETAILS IF YOU REDEFINE THIS METHOD). More...
 
virtual void destructs ()
 unlinks the object from its parents and destroys its children.
 
- Protected Attributes inherited from ubit::UNode
UParents _parents
 
UChildren _attributes
 
- Protected Attributes inherited from ubit::UObject
PtrCount ptr_count
 
Modes omodes
 
State ostate
 

Detailed Description

Base class for attributes.

attributes specify the layout, the geometry, the color, the font... of elements that derive from UBox (some attributes also apply on UElem elements, as explained in the doc of these properties).

they can be added to the attribute list of one or several containers by using UElem::addAttr(). They can also be inserted in the beginning of their child list, before any viewable child (that is to say a child that derive from UElem or UData). Certains properties (mainly UFont and UColor) can be inserted anywhere in the child list and take effect of the following children.

attributes update their parents automatically when they are modified. All parents that share the same property are thus automatically synchronized.

attributes can have callback functions that are fired when their value is changed (see an example below). Property parents can also be notified when attribute values are modified by using the UOn::propChange condition (see below).

Example:

   class Demo {
   public:
      void colorCB(UColor* c);
      void boxCB(UEvent& e);
      ....
   };
   Demo* d = new Demo();
   UColor& color = ucolor(255, 0, 0);  // shorcut for: *new UColor(...)
   // d->colorCB(&color) will be called when the color is changed
   color.onChange(ucall(d, &color, &Demo::colorCB));
   UBox& btn = ubutton("Click Me");    // shorcut for: *new UButton(...)
   btn.addAttr(color);                 // adds color to the attribute list
   // the content of UColor::blue (which is a predefined value) is copied
   // into the content of the color object (note that color is not a pointer
   // but a reference)
   color = UColor::blue;               // fires colorCB

Alternatively, we could insert color at the beginning of the child list:

   UBox& btn = ubutton(color + "Click Me");
   // btn.addAttr(color); useless: color is in the child list!

Finally,

   UBox& btn = ubutton(color + "Click Me" 
                       + UOn::propChange / ucall(d, &Demo::boxCB));

will call d->boxCB(event) when the value of any property of btn is changed. In this case, color is the only property, and boxCB is fired when color is modified. The UEvent& argument of boxCB() makes it possible to retrieve the color property as follows:

   void Demo::boxCB(UEvent& e) {
     UColor* c = null;
     if (e.getTarget()) c = dynamic_cast<UColor*>(e.getTarget());
     ....
  }

Note that we could have use the same technique to retrieve the color property in colorCB(), instead of giving color as an argument to this function

See also
also: the UCall doc, that explains how to use ucall() expressions

Member Function Documentation

§ changed()

void UAttr::changed ( bool  update = true)
virtual

[impl] called when object's content is changed.

This function updates graphics (if 'update' is true) then fires parents' UOn::propChange callbacks

Reimplemented in ubit::URadioSelect, and ubit::UChoice.

§ getValue()

bool UAttr::getValue ( UStr value) const
virtual

gets the value of this attribute.

return false if this attribute has no value. Stores it in argument 'value' otherwise,

Reimplemented in ubit::UHtmlValign, ubit::UHtmlAlign, ubit::UHtmlFontSize, ubit::UHtmlFontFace, ubit::UHtmlBorder, ubit::UHtmlBgcolor, ubit::UHtmlColor, ubit::UHtmlStyle, and ubit::UHtmlAttribute.

§ onChange()

UAttr & UAttr::onChange ( UCall c)
virtual

adds a callback that is fired when the value of the property is modified.

See also
an example in the UAttr doc.

The documentation for this class was generated from the following files: