| #pragma once |
| |
| #ifndef TEXTLIST_INCLUDED |
| #define TEXTLIST_INCLUDED |
| |
| #include "tw/tw.h" |
| #include "tw/scrollview.h" |
| |
| |
| |
| class TGenericTextListAction { |
| public: |
| virtual ~TGenericTextListAction() {} |
| virtual void sendCommand(int itemIndex) = 0; |
| }; |
| |
| |
| |
| template <class T> |
| class TTextListAction : public TGenericTextListAction { |
| public: |
| typedef void (T::*Method)(int itemIndex); |
| TTextListAction(T *target, Method method) |
| : m_target(target), m_method(method) {} |
| void sendCommand(int itemIndex) { (m_target->*m_method)(itemIndex); } |
| |
| private: |
| T *m_target; |
| Method m_method; |
| }; |
| |
| |
| |
| class TTextListItem { |
| public: |
| TTextListItem(const string &id, const string &caption); |
| virtual ~TTextListItem() {} |
| |
| string getId() { return m_id; } |
| string getCaption() { return m_caption; } |
| |
| private: |
| string m_id; |
| string m_caption; |
| }; |
| |
| |
| |
| class TTextList : public TWidget { |
| public: |
| TTextList(TWidget *parent, string name = "textlist"); |
| ~TTextList(); |
| |
| void addItem(TTextListItem *item); |
| void removeItem(const string &itemId); |
| void clearAll(); |
| |
| int getItemCount() const; |
| TTextListItem *getItem(int i) const; |
| |
| |
| int itemToIndex(const string &itemId); |
| |
| int getSelectedItemCount() const; |
| TTextListItem *getSelectedItem(int i) const; |
| string getSelectedItemId( |
| int i) const; |
| |
| void select(int i, bool on); |
| void select(const string &itemId, bool on); |
| void unselectAll(); |
| |
| bool isSelected(int i) const; |
| bool isSelected(const string &itemId) const; |
| |
| void setSelAction(TGenericTextListAction *action); |
| void setDblClickAction(TGenericTextListAction *action); |
| |
| void draw(); |
| void configureNotify(const TDimension &d); |
| |
| void leftButtonDown(const TMouseEvent &e); |
| void leftButtonDoubleClick(const TMouseEvent &e); |
| void keyDown(int key, unsigned long mod, const TPoint &); |
| |
| void scrollTo(int y); |
| |
| private: |
| class Data; |
| Data *m_data; |
| }; |
| |
| #endif |