Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | 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 
00153     YTreeItemList items;
00154 
00155 
00156 private:
00157 
00158 #if 0
00159 
00165     int itemWithId( const YCPValue & id, bool report_error );
00166 #endif
00167 
00173     virtual void saveUserInput( YMacroRecorder *macroRecorder );
00174 
00175 
00179     YCPString label;
00180 };
00181 
00182 
00183 class YTreeItem
00184 {
00185     friend class YTree;
00186 
00187 public:
00188 
00192     YTreeItem ( YTree *     parent, YCPValue id, YCPString text, bool open = false );
00193     
00197     YTreeItem ( YTreeItem * parent, YCPValue id, YCPString text, bool open = false );
00198 
00199 
00207     YTreeItem ( YTree *     parent, YCPString text, void * data, bool open = false );
00208 
00209 
00217     YTreeItem ( YTreeItem * parent, YCPString text, void * data, bool open = false );
00218 
00219 
00223     virtual ~YTreeItem();
00224 
00225     const YCPString &           getText()               const { return text;    }
00226     const YCPValue &            getId()                 const { return id;      }
00227     const YTreeItemList &       itemList()              const { return items;   }
00228     bool                        isOpenByDefault()       const { return openByDefault; }
00229 
00234     YTreeItem *findItemWithId   ( const YCPValue & id );
00235 
00240     YTreeItem *findItemWithText ( const YCPString & text );
00241 
00245     void * data() const { return _data; }
00246 
00251     void setData( void * newData ) { _data = newData; }
00252 
00253 
00254 protected:
00255 
00256     YCPValue            id;
00257     void *              _data;
00258     YCPString           text;
00259     YTree *             parentTree;
00260     YTreeItem *         parentItem;
00261     bool                openByDefault;
00262 
00263     YTreeItemList       items;
00264 };
00265 
00266 
00267 
00268 #endif // YTree_h

Generated on Fri Nov 9 18:15:23 2007 for yast2-core by doxygen 1.3.6