home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / wxwin140 / contrib / menus.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-19  |  1.5 KB  |  64 lines

  1. /*
  2.  * A contribution from ks@fi.tut.cs.karikukko
  3.  *
  4.  * - popup menus for canvases
  5.  * - menu buttons for panels
  6.  *
  7.  * (XView only)
  8.  *
  9.  */
  10.  
  11. #include <xview/panel.h>
  12.  
  13. typedef void (*call_back_function)(Menu_item menu_item);
  14.  
  15. class wxPopupMenu: public wxMenu {
  16.   char *label_str;
  17.   void (*menu_callback) (Menu_item menu_item);
  18.   void xv_call_back(Menu menu, Menu_item menu_item) {
  19.     cerr << "xv_call_back\n";
  20.     this->menu_callback(menu_item);
  21.   };
  22. public:
  23.   wxPopupMenu(char *Tit=NULL,wxFunction func=NULL) : wxMenu(Tit,func) {
  24.     label_str = Tit;
  25.   };
  26.   virtual void SetPinnable(wxFrame *Frame) {
  27.     xv_set((Menu)this->handle, MENU_GEN_PIN_WINDOW, Frame->handle, 
  28.        label_str,
  29.        NULL);
  30.   };
  31.   virtual void SetLabel(char *lbl) {
  32.     label_str = lbl;
  33.     xv_set((Menu)this->handle, MENU_TITLE_ITEM, label_str, NULL);
  34.   };
  35.     
  36.   void Show(wxCanvas *window, wxEvent *event,
  37.             call_back_function call_back)
  38.     {
  39.     wxEvent ev;
  40.     Callback((wxFunction)call_back);
  41.        
  42.     xv_set((Menu)this->handle,
  43.        MENU_NOTIFY_PROC, wxPopupMenu::xv_call_back,
  44.        NULL);
  45.     menu_show((Menu)this->handle,
  46.           (Xv_opaque)window->handle,
  47.           event->event_handle, NULL);
  48.        
  49.  
  50.   };
  51. };
  52.  
  53. class wxMenuButton : public wxButton {
  54.  public:
  55.   wxMenuButton (wxPanel *parent, wxFunction func, char *label, wxPopupMenu *menu,
  56.         int x = -1, int y = -1, int width = -1, int height = -1) :
  57.           wxButton(parent, func, label, x, y, width, height) {
  58.             (void)xv_set((Xv_opaque)handle,
  59.                  PANEL_ITEM_MENU, (Menu)menu->handle,
  60.                  NULL);
  61.           };
  62. };
  63.  
  64.