00001 #ifndef oclist_h 00002 #define oclist_h 00003 00004 #include <InterViews/resource.h> 00005 #include <InterViews/observe.h> 00006 class OcListImpl; 00007 struct Object; 00008 class OcListBrowser; 00009 class cTemplate; 00010 00011 class OcList : public Resource, public Observer { 00012 public: 00013 OcList(long = 5); 00014 OcList(const char* template_name); 00015 virtual ~OcList(); 00016 void append(Object*); 00017 void prepend(Object*); 00018 void insert(long, Object*); 00019 long count(); 00020 void remove(long); 00021 long index(Object*); 00022 Object* object(long); 00023 void remove_all(); 00024 boolean refs_items() { return ct_ == nil; } 00025 00026 void create_browser(const char* name, const char* items=nil, Object* pystract=nil); 00027 void create_browser(const char* name, char** pstr, const char* action); 00028 OcListBrowser* browser(); 00029 00030 virtual void update(Observable*); 00031 private: 00032 void oref(Object*); 00033 void ounref(Object*); 00034 private: 00035 OcListImpl* oli_; 00036 OcListBrowser* b_; 00037 cTemplate* ct_; 00038 }; 00039 00040 #endif