summaryrefslogtreecommitdiff
path: root/src/game/PropertyTool.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
commit9abe51526cac2634af0541c3de69834dd30e9f78 (patch)
tree6ae4deadfe00a83094b9d288d8c11d8ce823577a /src/game/PropertyTool.cpp
parent2c311b9a36a88fadd96f3d39acb1ab2590835d81 (diff)
downloadpowder-9abe51526cac2634af0541c3de69834dd30e9f78.zip
powder-9abe51526cac2634af0541c3de69834dd30e9f78.tar.gz
Move all GUI source files into gui/
Diffstat (limited to 'src/game/PropertyTool.cpp')
-rw-r--r--src/game/PropertyTool.cpp235
1 files changed, 0 insertions, 235 deletions
diff --git a/src/game/PropertyTool.cpp b/src/game/PropertyTool.cpp
deleted file mode 100644
index ee9f9eb..0000000
--- a/src/game/PropertyTool.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-#include <iostream>
-#include <sstream>
-#include "Style.h"
-#include "simulation/Simulation.h"
-#include "Tool.h"
-#include "interface/Window.h"
-#include "interface/Button.h"
-#include "interface/Label.h"
-#include "interface/Textbox.h"
-#include "interface/DropDown.h"
-#include "interface/Keys.h"
-#include "dialogues/ErrorMessage.h"
-
-class PropertyWindow: public ui::Window
-{
-public:
- ui::DropDown * property;
- ui::Textbox * textField;
- SignTool * tool;
- Simulation * sim;
- int signID;
- ui::Point position;
- std::vector<StructProperty> properties;
- PropertyWindow(PropertyTool * tool_, Simulation * sim_, ui::Point position_);
- void SetProperty();
- virtual void OnDraw();
- virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
- virtual void OnTryExit(ExitMethod method);
- virtual ~PropertyWindow() {}
- class OkayAction: public ui::ButtonAction
- {
- public:
- PropertyWindow * prompt;
- OkayAction(PropertyWindow * prompt_) { prompt = prompt_; }
- void ActionCallback(ui::Button * sender)
- {
- ui::Engine::Ref().CloseWindow();
- if(prompt->textField->GetText().length())
- prompt->SetProperty();
- prompt->SelfDestruct();
- return;
- }
- };
-};
-
-PropertyWindow::PropertyWindow(PropertyTool * tool_, Simulation * sim_, ui::Point position_):
-ui::Window(ui::Point(-1, -1), ui::Point(200, 87)),
-sim(sim_),
-position(position_)
-{
- properties = Particle::GetProperties();
-
- ui::Label * messageLabel = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 14), "Edit property");
- messageLabel->SetTextColour(style::Colour::InformationTitle);
- messageLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
- messageLabel->Appearance.VerticalAlign = ui::Appearance::AlignTop;
- AddComponent(messageLabel);
-
- ui::Button * okayButton = new ui::Button(ui::Point(0, Size.Y-17), ui::Point(Size.X, 17), "OK");
- okayButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
- okayButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
- okayButton->Appearance.BorderInactive = ui::Colour(200, 200, 200);
- okayButton->SetActionCallback(new OkayAction(this));
- AddComponent(okayButton);
- SetOkayButton(okayButton);
-
- class PropertyChanged: public ui::DropDownAction
- {
- PropertyWindow * w;
- public:
- PropertyChanged(PropertyWindow * w): w(w) { }
- virtual void OptionChanged(ui::DropDown * sender, std::pair<std::string, int> option)
- {
- w->FocusComponent(w->textField);
- }
- };
- property = new ui::DropDown(ui::Point(8, 25), ui::Point(Size.X-16, 17));
- property->SetActionCallback(new PropertyChanged(this));
- AddComponent(property);
- for(int i = 0; i < properties.size(); i++)
- {
- property->AddOption(std::pair<std::string, int>(properties[i].Name, i));
- }
- property->SetOption(0);
-
- textField = new ui::Textbox(ui::Point(8, 46), ui::Point(Size.X-16, 16), "", "[value]");
- textField->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
- textField->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
- AddComponent(textField);
- FocusComponent(textField);
-
- ui::Engine::Ref().ShowWindow(this);
-}
-void PropertyWindow::SetProperty()
-{
- if(property->GetOption().second!=-1 && textField->GetText().length() > 0)
- {
- void * propValue;
- int tempInt;
- unsigned int tempUInt;
- float tempFloat;
- std::string value = textField->GetText();
- try {
- switch(properties[property->GetOption().second].Type)
- {
- case StructProperty::Integer:
- case StructProperty::ParticleType:
- if(value.length() > 2 && value.substr(0, 2) == "0x")
- {
- //0xC0FFEE
- std::stringstream buffer;
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer << std::hex << value.substr(2);
- buffer >> tempInt;
- }
- else if(value.length() > 1 && value[0] == '#')
- {
- //#C0FFEE
- std::stringstream buffer;
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer << std::hex << value.substr(1);
- buffer >> tempInt;
- }
- else
- {
- if(properties[property->GetOption().second].Type == StructProperty::ParticleType)
- {
- int type = sim->GetParticleType(value);
- if(type != -1)
- {
-#ifdef DEBUG
- std::cout << "Got type from particle name" << std::endl;
-#endif
- tempInt = type;
- }
- else
- {
- std::stringstream buffer(value);
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer >> tempInt;
- }
- }
- else
- {
- std::stringstream buffer(value);
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer >> tempInt;
- }
- }
-#ifdef DEBUG
- std::cout << "Got int value " << tempInt << std::endl;
-#endif
- propValue = &tempInt;
- break;
- case StructProperty::UInteger:
- if(value.length() > 2 && value.substr(0, 2) == "0x")
- {
- //0xC0FFEE
- std::stringstream buffer;
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer << std::hex << value.substr(2);
- buffer >> tempUInt;
- }
- else if(value.length() > 1 && value[0] == '#')
- {
- //#C0FFEE
- std::stringstream buffer;
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer << std::hex << value.substr(1);
- buffer >> tempUInt;
- }
- else
- {
- std::stringstream buffer(value);
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer >> tempUInt;
- }
-#ifdef DEBUG
- std::cout << "Got uint value " << tempUInt << std::endl;
-#endif
- propValue = &tempUInt;
- break;
- case StructProperty::Float:
- {
- std::stringstream buffer(value);
- buffer.exceptions(std::stringstream::failbit | std::stringstream::badbit);
- buffer >> tempFloat;
-#ifdef DEBUG
- std::cout << "Got float value " << tempFloat << std::endl;
-#endif
- propValue = &tempFloat;
- }
- break;
- default:
- new ErrorMessage("Could not set property", "Invalid property");
- }
- sim->flood_prop(
- position.X,
- position.Y,
- properties[property->GetOption().second].Offset,
- propValue,
- properties[property->GetOption().second].Type
- );
- } catch (const std::exception& ex) {
- new ErrorMessage("Could not set property", "Invalid value provided");
- }
- }
-}
-
-void PropertyWindow::OnTryExit(ExitMethod method)
-{
- ui::Engine::Ref().CloseWindow();
- SelfDestruct();
-}
-
-void PropertyWindow::OnDraw()
-{
- Graphics * g = ui::Engine::Ref().g;
-
- g->clearrect(Position.X-2, Position.Y-2, Size.X+3, Size.Y+3);
- g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 200, 200, 200, 255);
-}
-
-void PropertyWindow::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
-{
- if (key == KEY_UP)
- property->SetOption(property->GetOption().second-1);
- else if (key == KEY_DOWN)
- property->SetOption(property->GetOption().second+1);
-}
-
-void PropertyTool::Click(Simulation * sim, Brush * brush, ui::Point position)
-{
- new PropertyWindow(this, sim, position);
-} \ No newline at end of file