#ifndef _CONTEXTMENU_H #define _CONTEXTMENU_H #include #include class DragItem; class ContextMenuEntry; class ContextMenuEntryCompare; class svc_contextCmd; class ContextMenu : private PopupMenu, private PopupMenuCallback { public: ContextMenu(ifc_window *sourceWnd, DragItem *item, bool autopop=TRUE, const wchar_t *menu_path=NULL); ContextMenu(ifc_window *sourceWnd, int x, int y, DragItem *item, bool autopop=TRUE, const wchar_t *menu_path=NULL); virtual ~ContextMenu(); void addDragItem(DragItem *item, const wchar_t *menu_path=NULL); using PopupMenu::popAtXY; using PopupMenu::popAtMouse; using PopupMenu::addCommand; using PopupMenu::addSeparator; using PopupMenu::getNumCommands; protected: ContextMenu(DragItem *item, const wchar_t *menu_path); private: virtual void onPostPop(intptr_t result); void populate(); virtual PopupMenu *popupMenuCallback(PopupMenu *parent, intptr_t param); DragItem *item; StringW menu_path; PtrList svclist; PtrListQuickSorted entries; }; #endif