home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / c / x_lib10 / xw_yes.cpp < prev    next >
C/C++ Source or Header  |  1994-10-20  |  2KB  |  93 lines

  1. #include    "xw.h"
  2.  
  3. /*-----
  4. */
  5.  
  6. #include    "xk.h"
  7. #include    "xo.h"
  8. #include    "xx.h"
  9.  
  10. /*-----
  11.     XWinMgr::yes
  12.     affiche une boîte de dialogue standard : Oui/Non
  13. */
  14.  
  15. class    YesWin : public XWin
  16.         {
  17.     protected :
  18.         virtual    void    on_call (XObj *obj);
  19.         virtual    void    on_char (int key);
  20.  
  21.     public :
  22.         YesWin (int wdt, int hgh, const char *hdr, const char *msg);
  23.         };
  24.  
  25. YesWin::YesWin (int wdt, int hgh, const char *hdr, const char *msg)
  26.  
  27.         : XWin(wdt + 8, hgh + 8)
  28.  
  29.         {
  30.         int        tmp;
  31.         XText *    obj;
  32.  
  33.         tmp = (wdt - 11) >> 1;
  34.  
  35.         if (hdr == 0)
  36.             defw(xw_STDWIN & ~xw_HEADER);
  37.         else
  38.             head(hdr);
  39.  
  40.         link(new XBox(1, 1, 1, wdt + 4, hgh + 2, 0, 1));
  41.         obj = (XText *)link(new XText(2, 2, 3, wdt, hgh, 0, 0));
  42.         link(new XPush(3, hgh + 4, tmp, 7, "&Oui", xk_aO));
  43.         link(new XPush(4, hgh + 4, tmp + 11, 7, "&Non", xk_aN));
  44.  
  45.         obj->defs(0, msg);
  46.         }
  47.  
  48. void    YesWin::on_call (XObj *obj)
  49.         {
  50.  
  51.         if (obj->type() == xo_PUSH)
  52.             {
  53.             xo(obj, XPush)->push(1);
  54.             hide();
  55.             retn(obj->id() == 3);
  56.             }
  57.  
  58.         }
  59.  
  60. void    YesWin::on_char (int key)
  61.         {
  62.  
  63.         if ((key == xk_ESC) || (key == xk_RET))
  64.             {
  65.             hide();
  66.             retn(key == xk_RET);
  67.             }
  68.  
  69.         }
  70.  
  71. int        XWinMgr::yes (const char *hdr, const char *msg)
  72.         {
  73.         int            wdt, hgh, ret;
  74.         YesWin *    win;
  75.  
  76.         if ((wdt = _smax(msg, '\n') + 2) > 70)
  77.             wdt = 70;
  78.         else if (wdt < 26)
  79.             wdt = 26;
  80.  
  81.         if ((hgh = _scnt(msg, '\n') + 2) > 20)
  82.             hgh = 20;
  83.         else if (hgh < 3)
  84.             hgh = 3;
  85.  
  86.         win = new YesWin(wdt, hgh, hdr, msg);
  87.         ret = xw.exec(win);
  88.         delete win;
  89.  
  90.         return (ret);
  91.         }
  92.  
  93.