X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flistdata.h;h=9f7d8ba850c7476e857dc911d60de5cd7e7e329c;hb=56c41b294aa47a38ac3e1be70d4868f260cb4274;hp=38706f8b1cc9ac64648c8b4a0202034b5e1475c3;hpb=1d84ac50711ce9d23cb1dafd83158d4ffa938a15;p=libs%2Fgltk.git diff --git a/source/listdata.h b/source/listdata.h index 38706f8..9f7d8ba 100644 --- a/source/listdata.h +++ b/source/listdata.h @@ -1,21 +1,23 @@ #ifndef MSP_GLTK_LISTDATA_H_ #define MSP_GLTK_LISTDATA_H_ +#include #include #include #include #include +#include "mspgltk_api.h" namespace Msp { namespace GLtk { -class ListData +class MSPGLTK_API ListData { public: sigc::signal signal_item_added; sigc::signal signal_item_removed; sigc::signal signal_cleared; - sigc::signal signal_refresh_strings; + sigc::signal signal_refresh_item; protected: ListData() { } @@ -24,7 +26,12 @@ public: virtual unsigned size() const = 0; virtual std::string get_string(unsigned) const = 0; - void refresh_strings() const { signal_refresh_strings.emit(); } + void refresh(unsigned i) const + { + if(i>=size()) + throw std::out_of_range("ListData::refresh"); + signal_refresh_item.emit(i); + } }; template @@ -38,7 +45,7 @@ protected: public: void append(const T &v) { insert(items.size(), v); } - void insert(unsigned i, const T & v) + void insert(unsigned i, const T &v) { if(i>items.size()) throw std::out_of_range("ListDataStore::insert"); @@ -55,6 +62,22 @@ public: return items[i]; } + int find(const T &v) const + { + for(unsigned i=0; i=0) + signal_refresh_item.emit(i); + } + void remove(unsigned i) { if(i>=items.size())