Have a layout I want for the control window.

master
Zed A. Shaw 3 days ago
parent 4e3e8e7b23
commit b3affcf9fa
  1. 4
      constants.hpp
  2. 30
      control.cpp
  3. 3
      main.cpp

@ -6,5 +6,5 @@ constexpr const int FRAME_LIMIT=60;
constexpr const bool VSYNC=true;
constexpr const int TITLE_SIZE=124;
constexpr const int CONTENT_SIZE=94;
constexpr const int CONTROL_WIDTH=400;
constexpr const int CONTROL_HEIGHT=400;
constexpr const int CONTROL_WIDTH=1000;
constexpr const int CONTROL_HEIGHT=1000;

@ -17,8 +17,8 @@ ControlUI::ControlUI(sf::RenderWindow& presenter) :
{
$gui.position(0, 0, CONTROL_WIDTH, CONTROL_HEIGHT);
$gui.layout(
"[status]"
"[docs]"
"[status|=%(100,100)current]"
"[docs|=%(100,100)next]"
);
}
@ -29,12 +29,24 @@ void ControlUI::init() {
auto docs_id = $gui.entity("docs");
$gui.set<guecs::Text>(docs_id, {L"A: win left\nD: win right\nQ: quit"});
$status = $gui.get_if<guecs::Text>(status_id);
auto current = $gui.entity("current");
$gui.set<guecs::Text>(current, {L"Current Slide"});
$gui.set<guecs::Rectangle>(current, {});
auto next = $gui.entity("next");
$gui.set<guecs::Text>(next, {L"Next Slide"});
$gui.set<guecs::Rectangle>(next, {});
$gui.init();
// warning! must come after init so the thing is there
$status = $gui.get_if<guecs::Text>(status_id);
dbc::check($status != nullptr, "failed to setup the status text");
}
void ControlUI::render(sf::RenderWindow& window) {
dbc::check($status != nullptr, "called render before init?");
auto pos = $presenter.getPosition();
auto size = $presenter.getSize();
@ -46,12 +58,14 @@ void ControlUI::render(sf::RenderWindow& window) {
}
void ControlUI::handle_events(sf::RenderWindow& controller, const sf::Event& event) {
if(const auto* key = event.getIf<sf::Event::KeyPressed>()) {
if(event.is<sf::Event::Closed>()) {
controller.close();
return;
}
dbc::check($status != nullptr, "handle_events called before init?!");
if(event.is<sf::Event::Closed>()) {
controller.close();
return;
}
if(const auto* key = event.getIf<sf::Event::KeyPressed>()) {
auto pos = $presenter.getPosition();
auto size = $presenter.getSize();

@ -26,7 +26,6 @@ int main(int argc, char *argv[]) {
presenter.setFramerateLimit(FRAME_LIMIT);
presenter.setVerticalSyncEnabled(VSYNC);
auto data = parse_slides(argv[1]);
SlidesUI slides(data);
@ -35,6 +34,8 @@ int main(int argc, char *argv[]) {
ControlUI control_ui(presenter);
control_ui.init();
dbc::check(control_ui.$status != nullptr, "bad ptr");
while(controller.isOpen()) {
while (const auto event = presenter.pollEvent()) {
if(const auto* mouse = event->getIf<sf::Event::MouseButtonPressed>()) {

Loading…
Cancel
Save