Skip to content
Half People edited this page Oct 21, 2023 · 5 revisions

The latest version

static std::string DefaultWidgetButton = "Button";
static std::string DefaultWidgetButtonID = "Button";
class Button :public HWidget
{
public:
	Button()
	{
		WidgetName = &DefaultWidgetButton;
		WidgetNameID = &DefaultWidgetButtonID;
		Text = new HVString("Text","Button",true);
		WidgetID = Text->Get().data();
		HValues.AddHValue(Text);
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_Move;
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_Null;
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_TurnRight;
	}

	virtual void DrawIconForControlPanel()override
	{
		ImGui::Button("Button");
		return;
	}
	virtual std::string Export(std::string Offset) override
	{
		if (WidgetSize->Get()->x == 0 && WidgetSize->Get()->y == 0)
		{
			return std::string(Offset).append("ImGui::Button( ").append(Text->AutoGetOutputValue(this)).append(" );");
		}
		return std::string(Offset).append("ImGui::Button( ").append(Text->AutoGetOutputValue(this))/*.append("##").append(std::to_string(ID_))*/.append(" , ").append(WidgetSize->AutoGetOutputValue(this)).append(");");
	}
	virtual void Draw()override
	{
		DrawPreLogic();
		ImGui::Button(Text->Get().c_str(), *WidgetSize->Get());
		DrawLogicTick();
		return;
	}
	virtual void DetailPanelWidget()override
	{
		//char Save[200] = {};
		//strncpy(Save, Text.c_str(), sizeof(Save));
		Text->Draw("Text",this);
		//ImGui::InputText("Button Text", Text, 200);
		//ImGui::DragFloat2("Button Size", (float*)&WidgetSize, 0.2, 5);
		return;
	}
	virtual HWidget* CreateSelfClass()override {
		return new Button();
	}

	virtual json Copy()override {
		json J;
		PreCopy(J);
		//J["WidgetName"] = Text;
		return J;
	}
	virtual void Paste(json Data)override {
		PrePaste(Data);
		//std::string Name = Data["WidgetName"];
		//strcpy_s(Text, Name.c_str());
		return;
	}

private:
	//std::string Text = "Button";
	//char Text[200] = { "Button" };
	HVString* Text;
	//ImVec2 Size = ImVec2(0, 0);
};

old (obsolete)

static std::string DefaultWidgetButton = "Button";
static std::string DefaultWidgetButtonID = "Button";
class Button :public HWidget
{
public:
	Button()
	{
		WidgetName = &DefaultWidgetButton;
		WidgetNameID = &DefaultWidgetButtonID;
		WidgetID = Text;
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_Move;
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_Null;
		//AvailableFlags |= HWidgetFlag::HWidgetFlag_TurnRight;
	}

	virtual void DrawIconForControlPanel()override
	{
		ImGui::Button("Button");
		return;
	}
	virtual std::string Export(std::string Offset) override
	{
		if (WidgetSize.x == 0 && WidgetSize.y == 0)
		{
			return std::string(Offset).append("ImGui::Button( \"").append(GetID()).append("\" );");
		}

		return std::string(Offset).append("ImGui::Button( \"").append(GetID())/*.append("##").append(std::to_string(ID_))*/.append("\" , ImVec2( ").append(std::to_string(WidgetSize.x)).append(" , ").append(std::to_string(WidgetSize.y)).append(" ));");
	}
	virtual void Draw()override
	{
		DrawPreLogic();
		ImGui::Button(GetID().c_str(), WidgetSize);
		DrawLogicTick();
		return;
	}
	virtual void DetailPanelWidget()override
	{
		//char Save[200] = {};
		//strncpy(Save, Text.c_str(), sizeof(Save));

		ImGui::InputText("Button Text", Text, 200);
		//ImGui::DragFloat2("Button Size", (float*)&WidgetSize, 0.2, 5);
		return;
	}
	virtual HWidget* CreateSelfClass()override {
		return new Button();
	}

	virtual json Copy()override {
		json J;
		PreCopy(J);
		J["WidgetName"] = Text;
		return J;
	}
	virtual void Paste(json Data)override {
		PrePaste(Data);

		std::string Name = Data["WidgetName"];
		strcpy_s(Text, Name.c_str());
		return;
	}

private:
	//std::string Text = "Button";
	char Text[200] = { "Button" };
	//ImVec2 Size = ImVec2(0, 0);
};