Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Examples

YTree.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                                                                      |
00003 |                      __   __    ____ _____ ____                      |
00004 |                      \ \ / /_ _/ ___|_   _|___ \                     |
00005 |                       \ V / _` \___ \ | |   __) |                    |
00006 |                        | | (_| |___) || |  / __/                     |
00007 |                        |_|\__,_|____/ |_| |_____|                    |
00008 |                                                                      |
00009 |                               core system                            |
00010 |                                                        (C) SuSE GmbH |
00011 \----------------------------------------------------------------------/
00012 
00013   File:       YTree.h
00014 
00015   Author:     Stefan Hundhammer <sh@suse.de>
00016   Maintainer: Stefan Hundhammer <sh@suse.de>
00017 
00018 /-*/
00019 
00020 #ifndef YTree_h
00021 #define YTree_h
00022 
00023 #include "YWidget.h"
00024 #include <ycp/YCPString.h>
00025 #include <ycp/YCPList.h>
00026 
00027 
00028 class YMacroRecorder;
00029 class YTreeItem;
00030 
00031 typedef vector<YTreeItem *>                 YTreeItemList;
00032 typedef vector<YTreeItem *>::iterator       YTreeItemListIterator;
00033 typedef vector<YTreeItem *>::const_iterator YTreeItemListConstIterator;
00034 
00035 
00039 class YTree : public YWidget
00040 {
00041     friend class YTreeItem;
00042 
00043 public:
00044 
00050     YTree( const YWidgetOpt & opt, YCPString label );
00051 
00052 
00056     virtual ~YTree();
00057 
00058 
00063     virtual char *widgetClass() { return "YTree"; }
00064 
00065 
00071     virtual void rebuildTree();
00072 
00076     YTreeItem * addItem ( YTreeItem *           parentItem,
00077                           const YCPValue &      id,
00078                           const YCPString &     text,
00079                           bool                  open );
00080 
00088     YTreeItem * addItem ( YTreeItem *           parentItem,
00089                           const YCPString &     text,
00090                           void *                data,
00091                           bool                  open );
00092 
00096     YCPValue changeWidget( const YCPSymbol & property, const YCPValue & newvalue );
00097 
00101     YCPValue queryWidget( const YCPSymbol & property );
00102 
00107     virtual void setLabel( const YCPString & label );
00108 
00116     YCPString getLabel();
00117     
00122     const char *shortcutProperty() { return YUIProperty_Label; }
00123     
00124 
00125 protected:
00126 
00131     virtual const YTreeItem * getCurrentItem() const = 0;
00132 
00136     virtual void setCurrentItem ( YTreeItem * it ) = 0;
00137 
00142     YTreeItem *findItemWithId   ( const YCPValue & id );
00143 
00148     YTreeItem *findItemWithText ( const YCPString & text );
00149 
00154     YCPList itemsTermList( YTreeItemList items );
00155     
00159     void findOpenItems( YCPMap & openItems, YTreeItemList items );
00160     
00164     YTreeItemList items;
00165 
00166 
00167 private:
00168 
00169 #if 0
00170 
00176     int itemWithId( const YCPValue & id, bool report_error );
00177 #endif
00178 
00184     virtual void saveUserInput( YMacroRecorder *macroRecorder );
00185 
00186 
00190     YCPString label;
00191 };
00192 
00193 
00194 class YTreeItem
00195 {
00196     friend class YTree;
00197 
00198 public:
00199 
00203     YTreeItem ( YTree *     parent, YCPValue id, YCPString text, bool open = false );
00204     
00208     YTreeItem ( YTreeItem * parent, YCPValue id, YCPString text, bool open = false );
00209 
00210 
00218     YTreeItem ( YTree *     parent, YCPString text, void * data, bool open = false );
00219 
00220 
00228     YTreeItem ( YTreeItem * parent, YCPString text, void * data, bool open = false );
00229 
00230 
00234     virtual ~YTreeItem();
00235 
00236     const YCPString &           getText()               const { return text;    }
00237     const YCPValue &            getId()                 const { return id;      }
00238     const YTreeItemList &       itemList()              const { return items;   }
00239     bool                        isOpenByDefault()       const { return openByDefault; }
00240 
00245     YTreeItem *findItemWithId   ( const YCPValue & id );
00246 
00251     YTreeItem *findItemWithText ( const YCPString & text );
00252 
00257     void setOpen( bool open ) { _open = open; }
00258 
00262     bool isOpen()               const { return _open; }
00263 
00267     void * data() const { return _data; }
00268 
00273     void setData( void * newData ) { _data = newData; }
00274 
00275 
00276 protected:
00277 
00278     YCPValue            id;
00279     void *              _data;
00280     YCPString           text;
00281     YTree *             parentTree;
00282     YTreeItem *         parentItem;
00283     bool                openByDefault;
00284     bool                _open;
00285 
00286     YTreeItemList       items;
00287 };
00288 
00289 
00290 
00291 #endif // YTree_h

Generated on Tue Mar 22 11:35:48 2005 for yast2-core by  doxygen 1.4.1