Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 29 additions & 17 deletions src/gui/gui2_resizabledialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,54 @@ GuiResizableDialog::GuiResizableDialog(GuiContainer* owner, string id, string ti
: GuiPanel(owner, id)
{
resize_corner_style = theme->getStyle("resizabledialog.corner");
auto title_bar_layout = new GuiElement(this, "");
title_bar_layout->setMargins(25, 0)->setSize(GuiElement::GuiSizeMax, title_bar_height)->setAttribute("layout", "horizontalright");

close_button = new GuiButton(title_bar_layout, "", "x", [this](){
onClose();
});
close_button->setSize(50, GuiElement::GuiSizeMax);

minimize_button = new GuiToggleButton(title_bar_layout, "", "_", [this](bool value)
auto layout = new GuiElement(this, "RESIZABLE_LAYOUT");
layout->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
layout->setAttribute("layout", "vertical");
const float button_size = title_bar_height - 4.0f;

auto title_bar_layout = new GuiElement(layout, "RESIZABLE_TITLE_BAR_LAYOUT");
title_bar_layout->setMargins(25.0f, 0.0f, 10.0f, 0.0f)->setSize(GuiElement::GuiSizeMax, title_bar_height);
title_bar_layout->setAttribute("layout", "horizontal");
title_bar = new GuiAutoSizeLabel(title_bar_layout, "RESIZABLE_TITLE_BAR", title, glm::vec2(100.0f, title_bar_height), glm::vec2(500.0f, title_bar_height), 20.0f, 20.0f);
title_bar->setClipped()->addBackground()->setAlignment(sp::Alignment::CenterLeft)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);

minimize_button = new GuiToggleButton(title_bar_layout, "RESIZABLE_MINIMIZE", "", [this](bool value)
{
minimize(value);
});
minimize_button->setSize(50, GuiElement::GuiSizeMax);
minimize_button->setTextSize(20.0f)->setIcon("gui/widget/IndicatorArrow.png", sp::Alignment::Center, 90.0f)->setSize(button_size, button_size)->setMargins(0.0f, 2.0f);

title_bar = new GuiLabel(title_bar_layout, "", title, 20);
title_bar->addBackground()->setAlignment(sp::Alignment::CenterLeft)->setPosition(0, 0, sp::Alignment::TopLeft)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
close_button = new GuiButton(title_bar_layout, "RESIZABLE_CLOSE", "X", [this]()
{
onClose();
});
close_button->setTextSize(20.0f)->setSize(button_size, button_size)->setMargins(0.0f, 2.0f);

contents = new GuiElement(this, "");
contents->setPosition(resize_icon_size / 2.0f, title_bar_height, sp::Alignment::TopLeft);
contents = new GuiElement(layout, "RESIZABLE_CONTENTS");
contents->setMargins(25.0f, 0.0f, 25.0f, 10.0f)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
contents->setAttribute("layout", "vertical");

min_size = glm::vec2(200, title_bar_height + resize_icon_size);
min_size = glm::vec2(200.0f, title_bar_height + resize_icon_size);
minimized = false;
}

void GuiResizableDialog::minimize(bool minimize)
{
minimize_button->setValue(minimize);
minimize_button->setIcon("gui/widget/IndicatorArrow.png", sp::Alignment::Center, 90.0f * (minimize ? -1.0f : 1.0f));

if (minimize != minimized)
{
if (minimize)
{
contents->hide();
original_height = getSize().y;
setSize(getSize().x, title_bar_height);
}else{
contents->show();
}
else
{
setSize(getSize().x, original_height);
contents->show();
}
}
minimized = minimize;
Expand Down Expand Up @@ -85,6 +96,7 @@ void GuiResizableDialog::onDraw(sp::RenderTarget& renderer)
bool GuiResizableDialog::onMouseDown(sp::io::Pointer::Button button, glm::vec2 position, sp::io::Pointer::ID id)
{
click_state = ClickState::None;

if (title_bar->getRect().contains(position))
{
click_state = ClickState::Drag;
Expand Down
4 changes: 2 additions & 2 deletions src/gui/gui2_resizabledialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include "gui2_panel.h"

class GuiLabel;
class GuiAutoSizeLabel;
class GuiButton;
class GuiThemeStyle;
class GuiToggleButton;
Expand All @@ -24,7 +24,7 @@ class GuiResizableDialog : public GuiPanel
static constexpr float resize_icon_size = 25.0f;
static constexpr float title_bar_height = 30.0f;

GuiLabel* title_bar;
GuiAutoSizeLabel* title_bar;
GuiToggleButton* minimize_button;
GuiButton* close_button;
bool minimized;
Expand Down
32 changes: 17 additions & 15 deletions src/screens/gm/chatDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,25 @@ GameMasterChatDialog::GameMasterChatDialog(GuiContainer* owner, GuiRadarView* ra
{
this->radar = radar;

text_entry = new GuiTextEntry(contents, "", "");
text_entry->setTextSize(23)->setPosition(0, 0, sp::Alignment::BottomLeft)->setSize(GuiElement::GuiSizeMax, 30);
text_entry->enterCallback([this](string text){
if (this->player)
chat_text = new GuiScrollText(contents, "GM_CHAT_TEXT", "");
chat_text->enableAutoScrollDown()->setScrollbarWidth(25)->setTextSize(20)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);

text_entry = new GuiTextEntry(contents, "GM_CHAT_ENTRY", "");
text_entry->setTextSize(20)->setSize(GuiElement::GuiSizeMax, 25.0f)->setMargins(0.0f, 10.0f, 0.0f, 0.0f);
text_entry->enterCallback(
[this](string text)
{
auto transmitter = this->player.getComponent<CommsTransmitter>();
if (transmitter && transmitter->state == CommsTransmitter::State::ChannelOpenGM)
CommsSystem::addCommsIncommingMessage(this->player, text_entry->getText());
else
CommsSystem::hailByGM(this->player, text_entry->getText());
if (this->player)
{
auto transmitter = this->player.getComponent<CommsTransmitter>();
if (transmitter && transmitter->state == CommsTransmitter::State::ChannelOpenGM)
CommsSystem::addCommsIncommingMessage(this->player, text_entry->getText());
else
CommsSystem::hailByGM(this->player, text_entry->getText());
}
text_entry->setText("");
}
text_entry->setText("");
});

chat_text = new GuiScrollText(contents, "", "");
chat_text->setTextSize(20)->setPosition(0, -30, sp::Alignment::BottomLeft)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
chat_text->enableAutoScrollDown()->setScrollbarWidth(30);
);

min_size.y += 100;

Expand Down
Loading