home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / df3os2.zip / CTLMENU.CPP < prev    next >
C/C++ Source or Header  |  1993-08-16  |  2KB  |  72 lines

  1. // --------------- ctlmenu.cpp
  2.  
  3. #include "dflatpp.h"
  4. #include "frame.h"
  5.  
  6. #define Ap void (Application::*)()
  7.  
  8. MenuSelection MoveCmd     ("~Move",     (Ap) &DFWindow::CtlMenuMove);
  9. MenuSelection SizeCmd     ("~Size",     (Ap) &DFWindow::CtlMenuSize);
  10. MenuSelection CloseDocCmd ("~Close  [Ctrl+F4]",
  11.                                         (Ap) &DFWindow::CloseWindow, CTRL_F4);
  12. MenuSelection CloseApCmd  ("~Close  [Alt+F4]",
  13.                                         (Ap) &DFWindow::CloseWindow, ALT_F4);
  14.  
  15. MenuSelection *ControlMenu[8];
  16.  
  17. MenuBarItem CtlMenu[] = {
  18.     MenuBarItem( "", ControlMenu ),
  19.     MenuBarItem( 0, 0 )
  20. };
  21.  
  22. void DFWindow::OpenCtlMenu()
  23. {
  24.     if (ctlmenu != 0)
  25.         delete ctlmenu;
  26.  
  27.     int mn = 0;
  28.  
  29.     if (attrib & MOVEABLE)
  30.         ControlMenu[mn++] = &MoveCmd;
  31.     if (attrib & SIZEABLE)
  32.         ControlMenu[mn++] = &SizeCmd;
  33.     if (mn != 0)
  34.         ControlMenu[mn++] = &SelectionSeparator;
  35.     if (Parent() && WindowType() != DialogWindow)
  36.         ControlMenu[mn++] = &CloseDocCmd;
  37.     else
  38.         ControlMenu[mn++] = &CloseApCmd;
  39.     ControlMenu[mn] = 0;
  40.  
  41.     SizeCmd.Disable();
  42.     MoveCmd.Disable();
  43.  
  44.     if (windowstate == OPEN)    {
  45.         MoveCmd.Enable();
  46.         SizeCmd.Enable();
  47.     }
  48.     ctlmenu = new PopDown(this, ControlMenu);
  49.     ctlmenu->OpenMenu(Left()+1, Top()+1);
  50. }
  51.  
  52. void DFWindow::DeleteCtlMenu()
  53. {
  54.     if (ctlmenu != 0)
  55.         delete ctlmenu;
  56.     ctlmenu = 0;
  57. }
  58.  
  59. void DFWindow::CtlMenuMove()
  60. {
  61.     desktop.mouse().SetPosition(Left(), Top());
  62.     desktop.frame().OpenFrame(this, True, Left());
  63. }
  64.  
  65. void DFWindow::CtlMenuSize()
  66. {
  67.     desktop.mouse().SetPosition(Right(), Bottom());
  68.     desktop.frame().OpenFrame(this, False, 0);
  69. }
  70.  
  71.  
  72.