Reference Manual
Inti Logo
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

object.h

Go to the documentation of this file.
00001 /*  Inti: Integrated Foundation Classes
00002  *  Copyright (C) 2002-2003 The Inti Development Team.
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018  
00023 
00024 #ifndef INTI_ATK_OBJECT_H
00025 #define INTI_ATK_OBJECT_H
00026 
00027 #ifndef INTI_G_OBJECT_H
00028 #include <inti/glib/object.h>
00029 #endif
00030 
00031 #ifndef INTI_ATK_UTIL_H
00032 #include <inti/atk/util.h>
00033 #endif
00034 
00035 #ifndef __ATK_OBJECT_H__
00036 #include <atk/atkobject.h>
00037 #endif
00038 
00039 namespace Inti {
00040 
00041 namespace Atk {
00042 
00043 class ObjectClass;
00044 class RelationSet;
00045 class StateSet;
00046 
00049 
00050 enum Role
00051 {
00052         ROLE_INVALID = ATK_ROLE_INVALID, 
00054 
00055         ROLE_ACCEL_LABEL = ATK_ROLE_ACCEL_LABEL, 
00057 
00058         ROLE_ALERT = ATK_ROLE_ALERT, 
00060 
00061         ROLE_ANIMATION = ATK_ROLE_ANIMATION, 
00063 
00064         ROLE_ARROW = ATK_ROLE_ARROW, 
00066 
00067         ROLE_CALENDAR = ATK_ROLE_CALENDAR, 
00069 
00070         ROLE_CANVAS = ATK_ROLE_CANVAS, 
00072 
00073         ROLE_CHECK_BOX = ATK_ROLE_CHECK_BOX, 
00075 
00076         ROLE_CHECK_MENU_ITEM = ATK_ROLE_CHECK_MENU_ITEM, 
00078 
00079         ROLE_COLOR_CHOOSER = ATK_ROLE_COLOR_CHOOSER,
00081 
00082         ROLE_COLUMN_HEADER = ATK_ROLE_COLUMN_HEADER, 
00084 
00085         ROLE_COMBO_BOX = ATK_ROLE_COMBO_BOX, 
00087 
00088         ROLE_DATE_EDITOR = ATK_ROLE_DATE_EDITOR, 
00090 
00091         ROLE_DESKTOP_ICON = ATK_ROLE_DESKTOP_ICON,
00093 
00094         ROLE_DESKTOP_FRAME = ATK_ROLE_DESKTOP_FRAME, 
00096 
00097         ROLE_DIAL = ATK_ROLE_DIAL, 
00099 
00100         ROLE_DIALOG = ATK_ROLE_DIALOG, 
00102 
00103         ROLE_DIRECTORY_PANE = ATK_ROLE_DIRECTORY_PANE, 
00105 
00106         ROLE_DRAWING_AREA = ATK_ROLE_DRAWING_AREA, 
00108 
00109         ROLE_FILE_CHOOSER = ATK_ROLE_FILE_CHOOSER, 
00111 
00112         ROLE_FILLER = ATK_ROLE_FILLER, 
00114 
00115         ROLE_FONT_CHOOSER = ATK_ROLE_FONT_CHOOSER, 
00117 
00118         ROLE_FRAME = ATK_ROLE_FRAME,
00120 
00121         ROLE_GLASS_PANE = ATK_ROLE_GLASS_PANE,
00123 
00124         ROLE_HTML_CONTAINER = ATK_ROLE_HTML_CONTAINER, 
00126 
00127         ROLE_ICON = ATK_ROLE_ICON, 
00129 
00130         ROLE_IMAGE = ATK_ROLE_IMAGE, 
00132 
00133         ROLE_INTERNAL_FRAME = ATK_ROLE_INTERNAL_FRAME, 
00135 
00136         ROLE_LABEL = ATK_ROLE_LABEL, 
00138 
00139         ROLE_LAYERED_PANE = ATK_ROLE_LAYERED_PANE, 
00141 
00142         ROLE_LIST = ATK_ROLE_LIST, 
00144 
00145         ROLE_LIST_ITEM = ATK_ROLE_LIST_ITEM, 
00147 
00148         ROLE_MENU = ATK_ROLE_MENU, 
00150 
00151         ROLE_MENU_BAR = ATK_ROLE_MENU_BAR, 
00154 
00155         ROLE_MENU_ITEM = ATK_ROLE_MENU_ITEM, 
00157 
00158         ROLE_OPTION_PANE = ATK_ROLE_OPTION_PANE, 
00160 
00161         ROLE_PAGE_TAB = ATK_ROLE_PAGE_TAB, 
00163 
00164         ROLE_PAGE_TAB_LIST = ATK_ROLE_PAGE_TAB_LIST, 
00167 
00168         ROLE_PANEL = ATK_ROLE_PANEL, 
00170 
00171         ROLE_PASSWORD_TEXT = ATK_ROLE_PASSWORD_TEXT, 
00173 
00174         ROLE_POPUP_MENU = ATK_ROLE_POPUP_MENU, 
00177 
00178         ROLE_PROGRESS_BAR = ATK_ROLE_PROGRESS_BAR, 
00180 
00181         ROLE_PUSH_BUTTON = ATK_ROLE_PUSH_BUTTON, 
00183 
00184         ROLE_RADIO_BUTTON = ATK_ROLE_RADIO_BUTTON, 
00187 
00188         ROLE_RADIO_MENU_ITEM = ATK_ROLE_RADIO_MENU_ITEM, 
00191 
00192         OLE_ROOT_PANE = ATK_ROLE_ROOT_PANE, 
00194 
00195         ROLE_ROW_HEADER = ATK_ROLE_ROW_HEADER, 
00197 
00198         ROLE_SCROLL_BAR = ATK_ROLE_SCROLL_BAR, 
00200 
00201         ROLE_SCROLL_PANE = ATK_ROLE_SCROLL_PANE,
00203 
00204         ROLE_SEPARATOR = ATK_ROLE_SEPARATOR, 
00206 
00207         ROLE_SLIDER = ATK_ROLE_SLIDER, 
00209 
00210         ROLE_SPLIT_PANE = ATK_ROLE_SPLIT_PANE, 
00212 
00213         ROLE_SPIN_BUTTON = ATK_ROLE_SPIN_BUTTON, 
00215 
00216         ROLE_STATUSBAR = ATK_ROLE_STATUSBAR, 
00218 
00219         ROLE_TABLE = ATK_ROLE_TABLE, 
00221 
00222         ROLE_TABLE_CELL = ATK_ROLE_TABLE_CELL, 
00224 
00225         ROLE_TABLE_COLUMN_HEADER = ATK_ROLE_TABLE_COLUMN_HEADER, 
00227 
00228         ROLE_TABLE_ROW_HEADER = ATK_ROLE_TABLE_ROW_HEADER, 
00230 
00231         ROLE_TEAR_OFF_MENU_ITEM = ATK_ROLE_TEAR_OFF_MENU_ITEM, 
00233 
00234         ROLE_TERMINAL = ATK_ROLE_TERMINAL, 
00236 
00237         ROLE_TEXT = ATK_ROLE_TEXT, 
00239 
00240         ROLE_TOGGLE_BUTTON = ATK_ROLE_TOGGLE_BUTTON, 
00243 
00244         ROLE_TOOL_BAR = ATK_ROLE_TOOL_BAR, 
00246 
00247         ROLE_TOOL_TIP = ATK_ROLE_TOOL_TIP, 
00249 
00250         ROLE_TREE = ATK_ROLE_TREE, 
00252 
00253         ROLE_TREE_TABLE = ATK_ROLE_TREE_TABLE, 
00255 
00256         ROLE_UNKNOWN = ATK_ROLE_UNKNOWN, 
00258 
00259         ROLE_VIEWPORT = ATK_ROLE_VIEWPORT, 
00261 
00262         ROLE_WINDOW = ATK_ROLE_WINDOW, 
00264 
00265         ROLE_HEADER = ATK_ROLE_HEADER, 
00267 
00268         ROLE_FOOTER = ATK_ROLE_FOOTER, 
00270 
00271         ROLE_PARAGRAPH = ATK_ROLE_PARAGRAPH, 
00273 
00274         ROLE_RULER = ATK_ROLE_RULER, 
00277 
00278         ROLE_APPLICATION = ATK_ROLE_APPLICATION, 
00280 
00281         ROLE_LAST_DEFINED = ATK_ROLE_LAST_DEFINED
00283 };
00284 
00287 
00288 Role role_register(const String& name);
00292 
00293 String role_get_name(Role role);
00297 
00298 String role_get_localized_name(Role role);
00302 
00303 Role role_for_name(const String& name);
00307 
00309 
00325 
00326 class Object : public G::Object
00327 {
00328         friend class G::Object;
00329         friend class ObjectClass;
00330 
00331         Object(const Object&);
00332         Object& operator=(const Object&);
00333 
00334 protected:
00337 
00338         explicit Object(AtkObject *object, bool reference = true);
00345 
00347 //  Override these do_ methods when you want to change the default behaviour of the AtkObject.
00348         
00349         virtual const char* do_get_name();
00350 
00351         virtual const char* do_get_description();
00352 
00353         virtual AtkObject* do_get_parent();
00354 
00355         virtual int do_get_n_children();
00356 
00357         virtual AtkObject* do_ref_child(int i);
00358 
00359         virtual int do_get_index_in_parent();
00360 
00361         virtual AtkRelationSet* do_ref_relation_set();
00362 
00363         virtual AtkRole do_get_role();
00364 
00365         virtual AtkLayer do_get_layer();
00366 
00367         virtual int do_get_mdi_zorder();
00368 
00369         virtual AtkStateSet* do_ref_state_set();
00370 
00371         virtual void do_set_name(const char *name);
00372 
00373         virtual void do_set_description(const char *description);
00374 
00375         virtual void do_set_parent(AtkObject *parent);
00376 
00377         virtual void do_set_role(AtkRole role);
00378 
00381 
00382         virtual void on_children_changed(unsigned int change_index, gpointer changed_child);
00389 
00390         virtual void on_focus_event(bool focus_in);
00393 
00394         virtual void on_property_change(AtkPropertyValues *values);
00397 
00398         virtual void on_state_change(const String& name, bool state_set);
00404 
00405         virtual void on_visible_data_changed();
00407 
00408         virtual void on_active_descendant_changed(void **child);
00412         
00414 //  Properties
00415 
00416         typedef G::Property<String> AccessibleNamePropertyType;
00417         typedef G::PropertyProxy<G::Object, AccessibleNamePropertyType> AccessibleNamePropertyProxy;
00418         static const AccessibleNamePropertyType accessible_name_property;
00419 
00420         typedef G::Property<String> AccessibleDescriptionPropertyType;
00421         typedef G::PropertyProxy<G::Object, AccessibleDescriptionPropertyType> AccessibleDescriptionPropertyProxy;
00422         static const AccessibleDescriptionPropertyType accessible_description_property;
00423 
00424         typedef G::Property<Atk::Object*> AccessibleParentPropertyType;
00425         typedef G::PropertyProxy<G::Object, AccessibleParentPropertyType> AccessibleParentPropertyProxy;
00426         static const AccessibleParentPropertyType accessible_parent_property;
00427 
00428         typedef G::Property<double> AccessibleValuePropertyType;
00429         typedef G::PropertyProxy<G::Object, AccessibleValuePropertyType> AccessibleValuePropertyProxy;
00430         static const AccessibleValuePropertyType accessible_value_property;
00431 
00432         typedef G::Property<int> AccessibleRolePropertyType;
00433         typedef G::PropertyProxy<G::Object, AccessibleRolePropertyType> AccessibleRolePropertyProxy;
00434         static const AccessibleRolePropertyType accessible_role_property;
00435 
00436         typedef G::ReadableProperty<int> AccessibleComponentLayerPropertyType;
00437         typedef G::PropertyProxy<G::Object, AccessibleComponentLayerPropertyType> AccessibleComponentLayerPropertyProxy;
00438         static const AccessibleComponentLayerPropertyType accessible_component_layer_property;
00439 
00440         typedef G::ReadableProperty<int> AccessibleComponentMdiZorderPropertyType;
00441         typedef G::PropertyProxy<G::Object, AccessibleComponentMdiZorderPropertyType> AccessibleComponentMdiZorderPropertyProxy;
00442         static const AccessibleComponentMdiZorderPropertyType accessible_component_mdi_zorder_property;
00443 
00444         typedef G::Property<String> AccessibleTableCaptionPropertyType;
00445         typedef G::PropertyProxy<G::Object, AccessibleTableCaptionPropertyType> AccessibleTableCaptionPropertyProxy;
00446         static const AccessibleTableCaptionPropertyType accessible_table_caption_property;
00447 
00448         typedef G::Property<String> AccessibleTableColumnDescriptionPropertyType;
00449         typedef G::PropertyProxy<G::Object, AccessibleTableColumnDescriptionPropertyType> AccessibleTableColumnDescriptionPropertyProxy;
00450         static const AccessibleTableColumnDescriptionPropertyType accessible_table_column_description_property;
00451 
00452         typedef G::Property<Atk::Object*> AccessibleTableColumnHeaderPropertyType;
00453         typedef G::PropertyProxy<G::Object, AccessibleTableColumnHeaderPropertyType> AccessibleTableColumnHeaderPropertyProxy;
00454         static const AccessibleTableColumnHeaderPropertyType accessible_table_column_header_property;
00455 
00456         typedef G::Property<String> AccessibleTableRowDescriptionPropertyType;
00457         typedef G::PropertyProxy<G::Object, AccessibleTableRowDescriptionPropertyType> AccessibleTableRowDescriptionPropertyProxy;
00458         static const AccessibleTableRowDescriptionPropertyType accessible_table_row_description_property;
00459 
00460         typedef G::Property<Atk::Object*> AccessibleTableRowHeaderPropertyType;
00461         typedef G::PropertyProxy<G::Object, AccessibleTableRowHeaderPropertyType> AccessibleTableRowHeaderPropertyProxy;
00462         static const AccessibleTableRowHeaderPropertyType accessible_table_row_header_property;
00463 
00464         typedef G::Property<Atk::Object*> AccessibleTableSummaryPropertyType;
00465         typedef G::PropertyProxy<G::Object, AccessibleTableSummaryPropertyType> AccessibleTableSummaryPropertyProxy;
00466         static const AccessibleTableSummaryPropertyType accessible_table_summary_property;
00467 
00468 //  Signals
00469 
00470         typedef G::Signal2<void, unsigned int, gpointer> ChildrenChangedSignalType;
00471         typedef G::SignalProxy<TypeInstance, ChildrenChangedSignalType> ChildrenChangedSignalProxy;
00472         static const ChildrenChangedSignalType children_changed_signal;
00473 
00474         typedef G::Signal1<void, bool> FocusEventSignalType;
00475         typedef G::SignalProxy<TypeInstance, FocusEventSignalType> FocusEventSignalProxy;
00476         static const FocusEventSignalType focus_event_signal;
00477 
00478         typedef G::Signal1<void, AtkPropertyValues*> PropertyChangeSignalType;
00479         typedef G::SignalProxy<TypeInstance, PropertyChangeSignalType> PropertyChangeSignalProxy;
00480         static const PropertyChangeSignalType property_change_signal;
00481 
00482         typedef G::Signal2<void, const char*, bool> StateChangeSignalType;
00483         typedef G::SignalProxy<TypeInstance, StateChangeSignalType> StateChangeSignalProxy;
00484         static const StateChangeSignalType state_change_signal;
00485 
00486         typedef G::Signal0<void> VisibleDataChangedSignalType;
00487         typedef G::SignalProxy<TypeInstance, VisibleDataChangedSignalType> VisibleDataChangedSignalProxy;
00488         static const VisibleDataChangedSignalType visible_data_changed_signal;
00489 
00490         typedef G::Signal1<void, void**> ActiveDescendantChangedSignalType;
00491         typedef G::SignalProxy<TypeInstance, ActiveDescendantChangedSignalType> ActiveDescendantChangedSignalProxy;
00492         static const ActiveDescendantChangedSignalType active_descendant_changed_signal;
00493 
00494 public:
00497 
00498         virtual ~Object();
00500         
00504 
00505         AtkObject* atk_object() const { return (AtkObject*)instance; }
00507 
00508         AtkObjectClass* atk_object_class() const;
00510 
00511         operator AtkObject* () const;
00513 
00514         String get_name() const;
00517 
00518         String get_description() const;
00521 
00522         Object* get_parent() const;
00525 
00526         int get_n_accessible_children() const;
00529 
00530         Object* ref_accessible_child(int index) const;
00537 
00538         RelationSet* ref_relation_set() const;
00541 
00542         Role get_role() const;
00545 
00546         Pointer<StateSet> ref_state_set() const;
00549 
00550         int get_index_in_parent() const;
00554 
00558 
00559         void set_name(const String& name);
00562 
00563         void set_description(const String& description);
00566 
00567         void set_parent(Object& parent);
00570 
00571         void set_role(Role role);
00574 
00575         void notify_state_change(State state, bool value);
00579 
00580         bool add_relationship(RelationType relationship, const Object& target);
00585 
00586         bool remove_relationship(RelationType relationship, const Object& target);
00591 
00595         
00596         const AccessibleNamePropertyProxy prop_accessible_name()
00597         {
00598                 return AccessibleNamePropertyProxy(this, &accessible_name_property);
00599         }
00601 
00602         const AccessibleDescriptionPropertyProxy prop_accessible_description()
00603         {
00604                 return AccessibleDescriptionPropertyProxy(this, &accessible_description_property);
00605         }
00607 
00608         const AccessibleParentPropertyProxy prop_accessible_parent()
00609         {
00610                 return AccessibleParentPropertyProxy(this, &accessible_parent_property);
00611         }
00613 
00614         const AccessibleValuePropertyProxy prop_accessible_value()
00615         {
00616                 return AccessibleValuePropertyProxy(this, &accessible_value_property);
00617         }
00619 
00620         const AccessibleRolePropertyProxy prop_accessible_role()
00621         {
00622                 return AccessibleRolePropertyProxy(this, &accessible_role_property);
00623         }
00625 
00626         const AccessibleComponentLayerPropertyProxy prop_accessible_component_layer()
00627         {
00628                 return AccessibleComponentLayerPropertyProxy(this, &accessible_component_layer_property);
00629         }
00631 
00632         const AccessibleComponentMdiZorderPropertyProxy prop_accessible_component_mdi_zorder()
00633         {
00634                 return AccessibleComponentMdiZorderPropertyProxy(this, &accessible_component_mdi_zorder_property);
00635         }
00637 
00638         const AccessibleTableCaptionPropertyProxy prop_accessible_table_caption()
00639         {
00640                 return AccessibleTableCaptionPropertyProxy(this, &accessible_table_caption_property);
00641         }
00643 
00644         const AccessibleTableColumnDescriptionPropertyProxy prop_accessible_table_column_description()
00645         {
00646                 return AccessibleTableColumnDescriptionPropertyProxy(this, &accessible_table_column_description_property);
00647         }
00649 
00650         const AccessibleTableColumnHeaderPropertyProxy prop_accessible_table_column_header()
00651         {
00652                 return AccessibleTableColumnHeaderPropertyProxy(this, &accessible_table_column_header_property);
00653         }
00655 
00656         const AccessibleTableRowDescriptionPropertyProxy prop_accessible_table_row_description()
00657         {
00658                 return AccessibleTableRowDescriptionPropertyProxy(this, &accessible_table_row_description_property);
00659         }
00661 
00662         const AccessibleTableRowHeaderPropertyProxy prop_accessible_table_row_header()
00663         {
00664                 return AccessibleTableRowHeaderPropertyProxy(this, &accessible_table_row_header_property);
00665         }
00667 
00668         const AccessibleTableSummaryPropertyProxy prop_accessible_table_summary()
00669         {
00670                 return AccessibleTableSummaryPropertyProxy(this, &accessible_table_summary_property);
00671         }
00673 
00677 
00678         const ChildrenChangedSignalProxy sig_children_changed()
00679         {
00680                 return ChildrenChangedSignalProxy(this, &children_changed_signal);
00681         }
00683 
00684         const FocusEventSignalProxy sig_focus_event()
00685         {
00686                 return FocusEventSignalProxy(this, &focus_event_signal);
00687         }
00689 
00690         const PropertyChangeSignalProxy sig_property_change()
00691         {
00692                 return PropertyChangeSignalProxy(this, &property_change_signal);
00693         }
00695 
00696         const StateChangeSignalProxy sig_state_change()
00697         {
00698                 return StateChangeSignalProxy(this, &state_change_signal);
00699         }
00701 
00702         const VisibleDataChangedSignalProxy sig_visible_data_changed()
00703         {
00704                 return VisibleDataChangedSignalProxy(this, &visible_data_changed_signal);
00705         }
00708 
00709         const ActiveDescendantChangedSignalProxy sig_active_descendant_changed()
00710         {
00711                 return ActiveDescendantChangedSignalProxy(this, &active_descendant_changed_signal);
00712         }
00717 
00719 };
00720 
00721 } // namespace Atk
00722 
00723 } // namespace Inti
00724 
00725 #endif // INTI_ATK_OBJECT_H
00726 
Main Page - Footer


Generated on Sun Sep 14 20:08:03 2003 for Inti by doxygen 1.3.2 written by Dimitri van Heesch, © 1997-2002