code_uimenuitem.cpp 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // UIMenuItem and UIMenuItemSource application source code
  2. #include <ThirdParty/TurboBadger/tb_widgets.h>
  3. #include <Atomic/UI/UIMenuWindow.h>
  4. #include <Atomic/UI/UIMenubar.h>
  5. #include "PeriodicApp.h"
  6. void PeriodicApp::setup_uimenuitem( UIWidget *layout )
  7. {
  8. PODVector<UIWidget*> dest;
  9. layout->SearchWidgetClass( "TBButton", dest );
  10. for (unsigned ii = 0; ii < dest.Size(); ii++)
  11. SubscribeToEvent(dest[ii], E_WIDGETEVENT, ATOMIC_HANDLER(PeriodicApp, HandleUimenuitemEvent ));
  12. UIMenuItemSource *mis = new UIMenuItemSource(context_);
  13. mis->AddItem( new UIMenuItem( context_,"UISelectItem1", "item1" ) );
  14. mis->AddItem( new UIMenuItem( context_,"UISelectItem2", "item2", "Ctrl+." ) );
  15. mis->AddItem( new UIMenuItem( context_,"UISelectItem3", "item3", "Ctrl+A", "DuckButton" ) );
  16. mis->AddItem( new UIMenuItem( context_,"UISelectItem4", "item4", "Ctrl+O", "LogoAtomic" ) );
  17. context_->SetGlobalVar( "menuitemptr", mis );
  18. }
  19. void PeriodicApp::HandleUimenuitemEvent(StringHash eventType, VariantMap& eventData)
  20. {
  21. using namespace WidgetEvent;
  22. UIWidget* widget = static_cast<UIWidget*>(eventData[P_TARGET].GetPtr());
  23. String refid = eventData[P_REFID].GetString();
  24. if ( widget == NULL ) return;
  25. if (eventData[P_TYPE] == UI_EVENT_TYPE_CLICK)
  26. {
  27. if (widget->GetId() == "uimenuitemcode" )
  28. {
  29. AppLog( "UIMenuItem support : " + widget->GetId() + " was pressed " );
  30. ViewCode ( "Components/code_uimenuitem.cpp", widget->GetParent() );
  31. }
  32. if (widget->GetId() == "uimenuitemlayout" )
  33. {
  34. AppLog( "UIMenuItem support : " + widget->GetId() + " was pressed ");
  35. ViewCode ( "Scenes/layout_uimenuitem.ui.txt", widget->GetParent() );
  36. }
  37. if (widget->GetId() == "uimenuitempush" )
  38. {
  39. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  40. UIMenuWindow* mymenuwindow = new UIMenuWindow( context_, widget, "MenuItemDemo");
  41. int xx = widget->GetX() + (widget->GetWidth()/2);
  42. int yy = widget->GetY() + (widget->GetHeight()/2);
  43. SubscribeToEvent(mymenuwindow, E_WIDGETEVENT, ATOMIC_HANDLER(PeriodicApp, HandleUimenuitemEvent ));
  44. mymenuwindow->Show(gmis, xx, yy);
  45. }
  46. if (widget->GetId() == "MenuItemDemo" )
  47. {
  48. AppLog( "UIMenuItem event : " + widget->GetId() + " and " + refid + " was selected ");
  49. }
  50. if (widget->GetId() == "uimi1" )
  51. {
  52. AppLog( "UIMenuItem action : " + widget->GetId() + " was pressed ");
  53. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  54. gmis->AddItem( new UIMenuItem( context_, "New UIMenuItem") );
  55. }
  56. if (widget->GetId() == "uimi2" )
  57. {
  58. AppLog( "UIMenuItem action : " + widget->GetId() + " was pressed ");
  59. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  60. gmis->AddItem( new UIMenuItem( context_, "Newer UIMenuItem", "neweritem" ) );
  61. }
  62. if (widget->GetId() == "uimi3" )
  63. {
  64. AppLog( "UIMenuItem action : " + widget->GetId() + " was pressed ");
  65. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  66. gmis->AddItem( new UIMenuItem( context_, "A Duck", "aduck", "", "DuckButton" ) );
  67. }
  68. if (widget->GetId() == "uimi4" )
  69. {
  70. AppLog( "UIMenuItem action : " + widget->GetId() + " was pressed ");
  71. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  72. gmis->AddItem( new UIMenuItem( context_, "Atomic!", "atomic", "", "LogoAtomic" ) );
  73. }
  74. if (widget->GetId() == "uimi5" )
  75. {
  76. AppLog( "UIMenuItem action : " + widget->GetId() + " was pressed ");
  77. UIMenuItemSource *gmis = (UIMenuItemSource*)context_->GetGlobalVar("menuitemptr").GetPtr();
  78. gmis->Clear();
  79. }
  80. }
  81. }