X-Git-Url: http://git.tdb.fi/?p=libs%2Fgltk.git;a=blobdiff_plain;f=source%2Flistdata.h;h=4c02f44aed57a7f3d3ca3094c1924eb21a38c6e5;hp=094b287b703545c294f71a644b33b5be0032af00;hb=3f77f3542a6405fd832ababe48b950d1a65b00ed;hpb=a2dde70bd7a55902d6e7f7634081aa9ff1c1410a diff --git a/source/listdata.h b/source/listdata.h index 094b287..4c02f44 100644 --- a/source/listdata.h +++ b/source/listdata.h @@ -1,6 +1,7 @@ #ifndef MSP_GLTK_LISTDATA_H_ #define MSP_GLTK_LISTDATA_H_ +#include #include #include #include @@ -15,7 +16,7 @@ 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 +25,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 @@ -63,6 +69,14 @@ public: return -1; } + using ListData::refresh; + void refresh(const T &v) const + { + int i = find(v); + if(i>=0) + signal_refresh_item.emit(i); + } + void remove(unsigned i) { if(i>=items.size())