Advertisement
C0BRA

Untitled

May 8th, 2013
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. {
  2.     CFrame frame = CFrame(CPoint(2, 1), CSize(Console::Width - 4, 11));
  3.     frame.SetText("Messagebox Test");
  4.    
  5.     CTextBox msg = CTextBox(&frame, CPoint(2, 2), CSize(72, 1));
  6.     CTextBox title = CTextBox(&frame, CPoint(2, 4), CSize(72, 1));
  7.    
  8.     CTextBox btns_type = CTextBox(&frame, CPoint(20, 6), CSize(54, 1)); // uneditable
  9.     Util::MessageBoxButtons buttons = Util::MessageBoxButtons::OK;
  10.  
  11.     CButton btns = CButton(&frame, CPoint(2, 6), CSize(15, 1));
  12.  
  13.     CButton show = CButton(&frame, CPoint(20, 9), CSize(17, 1));
  14.     CButton cont = CButton(&frame, CPoint(40, 9), CSize(10, 1));
  15.  
  16.     msg.SetText("Hello, world; this is a test!");
  17.     title.SetText("Title");
  18.     btns.SetText("Set Buttons");
  19.  
  20.     btns_type.SetText("OK");
  21.     show.SetText("Show MessageBox");
  22.     cont.SetText("Continue");
  23.    
  24.     IControl* controls[5];
  25.     IControl* pFocused = &msg;
  26.     size_t Focused = -1;
  27.  
  28.     controls[0] = &msg;
  29.     controls[1] = &title;
  30.     controls[2] = &btns;
  31.     controls[3] = &show;
  32.     controls[4] = &cont;
  33.  
  34.     CScopedInput input([&](int key) -> bool
  35.     {
  36.         int direction = 0;
  37.  
  38.         switch(key)
  39.         {
  40.         case Keys::KEY_LEFT:
  41.         case Keys::KEY_UP:
  42.             direction = -1;
  43.             break;
  44.         case Keys::KEY_RIGHT:
  45.         case Keys::KEY_DOWN:
  46.             direction = +1;
  47.             break;
  48.         default:
  49.             return false;
  50.         }
  51.  
  52.         Focused += direction;
  53.         pFocused->Unfocus();
  54.  
  55.         pFocused = controls[Focused % (sizeof controls / sizeof controls[0])];
  56.         pFocused->Focus();
  57.  
  58.         return true;
  59.     });
  60.  
  61.    
  62.    
  63.     // handelers
  64.     cont.OnClick += [&]()
  65.     {
  66.         frame.Close();
  67.     };
  68.  
  69.     show.OnClick += [&]()
  70.     {
  71.         // don't run in the think thread, as that will block the think thread
  72.         frame.RunTask([&]()
  73.         {
  74.             Util::MessageBox(msg.GetText(), title.GetText(), buttons);
  75.         });
  76.     };
  77.  
  78.     btns.OnClick += [&]()
  79.     {
  80.         frame.RunTask([&]()
  81.         {
  82.             CMenuList list;
  83.  
  84.             list.AddElement("OK");
  85.             list.AddElement("OKCancel");
  86.             list.AddElement("YesNo");
  87.             list.AddElement("YesNoCancel");
  88.             list.AddElement("AbortRetryIgnore");
  89.  
  90.             list.Show();
  91.            
  92.             btns_type.SetText(list.GetSelected());
  93.             if(list.GetSelected() == "OK")
  94.                 buttons = Util::MessageBoxButtons::OK;
  95.             else if(list.GetSelected() == "OKCancel")
  96.                 buttons = Util::MessageBoxButtons::OKCancel;
  97.             else if(list.GetSelected() == "YesNo")
  98.                 buttons = Util::MessageBoxButtons::YesNo;
  99.             else if(list.GetSelected() == "YesNoCancel")
  100.                 buttons = Util::MessageBoxButtons::YesNoCancel;
  101.             else if(list.GetSelected() == "AbortRetryIgnore")
  102.                 buttons = Util::MessageBoxButtons::AbortRetryIgnore;
  103.         });
  104.     };
  105.  
  106.     // ok, show it!
  107.     frame.Show();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement