#pragma once #ifndef FILEBROWSERPOPUP_INCLUDED #define FILEBROWSERPOPUP_INCLUDED #include "tw/popup.h" #include "tfilepath.h" //------------------------------------------------------------------- class TGenericFileBrowserPopupAction { public: virtual ~TGenericFileBrowserPopupAction() {} virtual void sendCommand(const TFilePath &) = 0; }; //------------------------------------------------------------------- template class TFileBrowserPopupAction : public TGenericFileBrowserPopupAction { public: typedef void (T::*Method)(const TFilePath &); TFileBrowserPopupAction(T *target, Method method) : m_target(target), m_method(method) {} void sendCommand(const TFilePath &fp) { (m_target->*m_method)(fp); } private: T *m_target; Method m_method; }; //------------------------------------------------------------------------------ class FileBrowserPopup : public TPopup { public: FileBrowserPopup(TWidget *parent); FileBrowserPopup(TWidget *parent, const vector &fileTypes); ~FileBrowserPopup(); void configureNotify(const TDimension &d); TDimension getPreferredSize() const; void draw(); void setCurrentDir(const TFilePath &dirPath); void setFilter(const vector &fileTypes); void setOkAction(TGenericFileBrowserPopupAction *action); void popup(const TPoint &p); private: class Data; Data *m_data; }; #endif