diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp
index b1fb23f..8c92859 100644
--- a/BaseButtonInstance.cpp
+++ b/BaseButtonInstance.cpp
@@ -20,7 +20,11 @@ void BaseButtonInstance::render(RenderDevice* rd)
BaseButtonInstance::~BaseButtonInstance(void)
{
- delete listener;
+ if(listener != NULL && listener->doDelete)
+ {
+ delete listener;
+ listener = NULL;
+ }
}
void BaseButtonInstance::setButtonListener(ButtonListener* buttonListener)
diff --git a/ButtonListener.cpp b/ButtonListener.cpp
index 8d6c5d0..7d1f9e9 100644
--- a/ButtonListener.cpp
+++ b/ButtonListener.cpp
@@ -4,6 +4,7 @@
ButtonListener::ButtonListener()
{
+ doDelete = true;
}
ButtonListener::~ButtonListener(void)
diff --git a/ButtonListener.h b/ButtonListener.h
index bbf2e40..b334c63 100644
--- a/ButtonListener.h
+++ b/ButtonListener.h
@@ -1,6 +1,6 @@
#pragma once
//#include "Application.h"
-//#include "BaseButtonInstance.h"
+#include "BaseButtonInstance.h"
class BaseButtonInstance;
@@ -10,6 +10,7 @@ class ButtonListener
ButtonListener();
~ButtonListener(void);
virtual void onButton1MouseClick(BaseButtonInstance*);
+ bool doDelete;
//virtual void onMouseOver(); //TODO
//virtual void onMouseOut(); //TODO
//virtual void onButton1MouseDown(); //TODO
diff --git a/G3DTest.vcproj b/G3DTest.vcproj
index 606f513..cd1ef4d 100644
--- a/G3DTest.vcproj
+++ b/G3DTest.vcproj
@@ -302,10 +302,6 @@
RelativePath=".\StringFunctions.cpp"
>
-
-
@@ -357,6 +353,10 @@
RelativePath=".\TextButtonInstance.cpp"
>
+
+
@@ -393,6 +393,10 @@
RelativePath=".\RotateButtonListener.cpp"
>
+
+
+
+
doDelete = false;
g_fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt"));
g_fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt"));
@@ -51,6 +54,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0)
button->setAllColorsSame();
button->boxOutlineColorOvr = Color3(0,255,255);
button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
+ button->setButtonListener(toolbar);
+ toolbar->addButtonRef(button);
button = makeTextButton();
@@ -66,7 +71,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0)
button->setAllColorsSame();
button->boxOutlineColorOvr = Color3(0,255,255);
button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
-
+ button->setButtonListener(toolbar);
+ toolbar->addButtonRef(button);
button = makeTextButton();
button->boxBegin = Vector2(0, -72);
@@ -81,6 +87,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0)
button->setAllColorsSame();
button->boxOutlineColorOvr = Color3(0,255,255);
button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
+ button->setButtonListener(toolbar);
+ toolbar->addButtonRef(button);
button = makeTextButton();
button->boxBegin = Vector2(0, -96);
@@ -95,6 +103,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0)
button->setAllColorsSame();
button->boxOutlineColorOvr = Color3(0,255,255);
button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
+ button->setButtonListener(toolbar);
+ toolbar->addButtonRef(button);
button = makeTextButton();
button->boxBegin = Vector2(0, -120);
@@ -109,6 +119,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0)
button->setAllColorsSame();
button->boxOutlineColorOvr = Color3(0,255,255);
button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
+ button->setButtonListener(toolbar);
+ toolbar->addButtonRef(button);
//Top bar
button = makeTextButton();
@@ -503,6 +515,11 @@ void GuiRoot::update()
}
}
+GuiRoot::~GuiRoot()
+{
+ delete toolbar;
+}
+
void GuiRoot::onMouseLeftUp(G3D::RenderDevice* renderDevice, int x,int y)
{
std::vector instances_2D = this->getAllChildren();
diff --git a/GuiRoot.h b/GuiRoot.h
index 546c5b5..a19339f 100644
--- a/GuiRoot.h
+++ b/GuiRoot.h
@@ -9,6 +9,7 @@ class GuiRoot : public Instance
{
public:
GuiRoot();
+ GuiRoot::~GuiRoot();
TextButtonInstance* makeTextButton();
void drawButtons(RenderDevice* rd);
ImageButtonInstance* makeImageButton(G3D::TextureRef newImage, G3D::TextureRef overImage, G3D::TextureRef downImage, G3D::TextureRef disableImage);
diff --git a/Tool.h b/Tool.h
index 4489938..2336dbe 100644
--- a/Tool.h
+++ b/Tool.h
@@ -11,6 +11,7 @@ public:
void OnButton1MouseUp();
void OnButton2MouseUp();
void OnButton3MouseUp();
- void OnKeyPress();
- void OnKeyRelease();
+ void OnMouseScroll();
+ void OnKeyDown();
+ void OnKeyUp();
};
diff --git a/ToolbarListener.cpp b/ToolbarListener.cpp
new file mode 100644
index 0000000..f551275
--- /dev/null
+++ b/ToolbarListener.cpp
@@ -0,0 +1,23 @@
+#include "ToolbarListener.h"
+#include "Globals.h"
+#include "StringFunctions.h"
+#include "Application.h"
+
+void ToolbarListener::onButton1MouseClick(BaseButtonInstance* btn)
+{
+ if(TextButtonInstance* button = dynamic_cast(btn))
+ {
+ for(size_t i = 0; i < btns.size(); i++)
+ btns[i]->selected = false;
+ button->selected = true;
+ if(button->title == "Model") g_usableApp->navigateToolbox("http://androdome.com/res/ClientToolbox.php");
+ else if(button->title == "Surface") g_usableApp->navigateToolbox(GetFileInPath("/content/page/surface.html"));
+ else if(button->title == "Color") g_usableApp->navigateToolbox(GetFileInPath("/content/page/color.html"));
+ else if(button->title == "Controller") g_usableApp->navigateToolbox(GetFileInPath("/content/page/controller.html"));
+ else if(button->title == "Hopper") g_usableApp->navigateToolbox(GetFileInPath("/content/page/hopper.html"));
+ }
+}
+void ToolbarListener::addButtonRef(BaseButtonInstance* button)
+{
+ btns.push_back(button);
+}
\ No newline at end of file
diff --git a/ToolbarListener.h b/ToolbarListener.h
new file mode 100644
index 0000000..21079a4
--- /dev/null
+++ b/ToolbarListener.h
@@ -0,0 +1,13 @@
+#pragma once
+#include "buttonlistener.h"
+#pragma once
+#include
+
+class ToolbarListener : public ButtonListener
+{
+public:
+ void onButton1MouseClick(BaseButtonInstance* button);
+ void addButtonRef(BaseButtonInstance* button);
+private:
+ std::vector btns;
+};