Dialog.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "Dialog.h"
  2. #include <DateiSystem.h>
  3. #include <TastaturEreignis.h>
  4. #include <TextFeld.h>
  5. #include <XML.h>
  6. #include "CraftingGrid.h"
  7. #include "CraftingRecipies.h"
  8. #include "Equipment.h"
  9. #include "Globals.h"
  10. #include "InventoryView.h"
  11. #include "RecipieIngredient.h"
  12. #include "RecipieOutput.h"
  13. #include "ShapedRecipie.h"
  14. #include "UnshapedRecipie.h"
  15. using namespace Framework;
  16. UIMLDialog::UIMLDialog(
  17. Framework::Text uiml, std::function<void(UIMLDialog* self)> onClose)
  18. : Fenster()
  19. {
  20. XML::Element* xml = new XML::Element(uiml);
  21. view = new UIMLView("<v/>", uiFactory);
  22. view->setStyle(UIMLView::Style::Erlaubt | UIMLView::Style::Sichtbar);
  23. view->setMausEreignis(_ret1ME);
  24. view->addKnownElement(new InventoryElement());
  25. view->addKnownElement(new EquipmentElement());
  26. view->addKnownElement(new CraftingGridElement());
  27. view->addKnownElement(new CraftingRecipiesElement());
  28. view->addKnownElement(new RecipieIngredientElement());
  29. view->addKnownElement(new RecipieOutputElement());
  30. view->addKnownElement(new ShapedRecipieElement());
  31. view->addKnownElement(new UnshapedRecipieElement());
  32. view->setUIML(xml);
  33. view->setSize((int)xml->getAttributeValue("width"),
  34. (int)xml->getAttributeValue("height"));
  35. name = xml->getAttributeValue("id");
  36. view->layout();
  37. if (!xml->hasAttribute("width"))
  38. {
  39. view->setSize(view->calculateContentSize().x, view->getHeight());
  40. }
  41. if (!xml->hasAttribute("height"))
  42. {
  43. view->setSize(view->getBreite(), view->calculateContentSize().y);
  44. }
  45. addMember(view);
  46. LTDBDatei iconsDat;
  47. iconsDat.setDatei(new Text("data/bilder/gui_icons.ltdb"));
  48. iconsDat.leseDaten(0);
  49. setStyle(
  50. Fenster::Style::Sichtbar | Fenster::Style::Erlaubt
  51. | Fenster::Style::Rahmen | Fenster::Style::BodyHAlpha
  52. | Fenster::Style::Beweglich | Fenster::Style::Titel
  53. | Fenster::Style::TitelHAlpha | Fenster::Style::Closable
  54. | Fenster::Style::ClosingHAlpha | Fenster::Style::ClosingKlickBuffer
  55. | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund
  56. | Fenster::Style::ClosingHintergrund | Fenster::Style::MEIgnoreInside
  57. | Style::ClosingBuffer | Style::ClosingHBild);
  58. setKBgFarbe(0xA0000000);
  59. setTBgFarbe(0xA0000000);
  60. setSBgFarbe(0xA0000000);
  61. setSize(view->getBreite() + 4, view->getHeight() + 24);
  62. setPosition(window->zBildschirm()->getBackBufferSize() / 2 - getSize() / 2);
  63. setRBreite(2);
  64. setClosingMe([onClose, this](void* p, void* o, MausEreignis me) {
  65. if (me.id == ME_RLinks) onClose(this);
  66. return 1;
  67. });
  68. setRFarbe(0xFF52525E);
  69. setTitel(xml->getAttributeValue("title"));
  70. setTSchriftZ(
  71. dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()));
  72. zTTextFeld()->setSize(0, 20);
  73. zTTextFeld()->addStyle(TextFeld::Style::Center);
  74. setTastaturEreignis(_ret1TE);
  75. setSAfStrength(10);
  76. setSAfFarbe(0x5F9C0A0A);
  77. setSBgBildZ(iconsDat.laden(0, new Text("close.png")));
  78. setSKAfFarbe(0xFF9C0A0A);
  79. setSKAfStrength(10);
  80. }
  81. UIMLDialog::~UIMLDialog() {}
  82. void UIMLDialog::api(char* message)
  83. {
  84. short idLen = *(short*)message;
  85. char* id = new char[idLen + 1];
  86. memcpy(id, message + 2, idLen);
  87. id[idLen] = 0;
  88. NetworkAPIProcessor* processor
  89. = dynamic_cast<NetworkAPIProcessor*>(view->zZeichnungById(id));
  90. if (processor) processor->api(message + 2 + idLen);
  91. delete[] id;
  92. }
  93. const Framework::Text& UIMLDialog::getName() const
  94. {
  95. return name;
  96. }