I will post the code I have so if anyone wants to take a look and see if there is anything that I could do different / better please feel free.
Code: Select all
#include <wx/wx.h>
class ColorsApp : public wxApp
{
public:
virtual bool OnInit();
};
class ColorsFrame: public wxFrame
{
public:
ColorsFrame(const wxString& title);
~ColorsFrame() { }
private:
void OnClose(wxCloseEvent& event) { Destroy(); }
void OnQuit(wxCommandEvent& event) { Destroy(); }
void OnOK(wxCommandEvent& event);
wxTextCtrl *m_pRedTxtCtrl;
wxTextCtrl *m_pGreenTxtCtrl;
wxTextCtrl *m_pBlueTxtCtrl;
wxPanel *m_pColorPanel;
long m_rColor;
long m_gColor;
long m_bColor;
DECLARE_EVENT_TABLE()
};
enum
{
idMenuQuit = 1000,
idRED,
idGREEN,
idBLUE
};
BEGIN_EVENT_TABLE(ColorsFrame, wxFrame)
EVT_CLOSE(ColorsFrame::OnClose)
EVT_MENU(idMenuQuit, ColorsFrame::OnQuit)
EVT_BUTTON(wxID_OK, ColorsFrame::OnOK)
END_EVENT_TABLE()
IMPLEMENT_APP(ColorsApp);
bool ColorsApp::OnInit()
{
ColorsFrame* Frame = new ColorsFrame("Color Selector");
Frame->Centre();
Frame->Show();
return true;
}
ColorsFrame::ColorsFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition), m_rColor(0), m_gColor(0), m_bColor(0)
{
wxMenuBar* mbar = new wxMenuBar();
wxMenu* fileMenu = new wxMenu("");
fileMenu->Append(idMenuQuit, "&Quit", "Quit the application");
mbar->Append(fileMenu, "&File");
SetMenuBar(mbar);
CreateStatusBar(1);
SetStatusText("Enter RGB values to see the color", 0);
m_pColorPanel = new wxPanel(this, -1);
wxBoxSizer *hBox = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *vBox1 = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *vBox2 = new wxBoxSizer(wxVERTICAL);
wxStaticText *rText = new wxStaticText(this,
-1,
"RED",
wxPoint(5, 5),
wxSize(35, 20) );
wxStaticText *gText = new wxStaticText(this,
-1,
"GREEN",
wxPoint(5, 5),
wxSize(35, 20) );
wxStaticText *bText = new wxStaticText(this,
-1,
"BLUE",
wxPoint(5, 5),
wxSize(35, 20) );
m_pRedTxtCtrl = new wxTextCtrl(this,
idRED,
"0",
wxPoint(5, 5),
wxSize(30, 20),
0,
wxTextValidator(wxFILTER_NUMERIC) );
m_pGreenTxtCtrl = new wxTextCtrl(this,
idGREEN,
"0",
wxPoint(5, 5),
wxSize(30, 20),
0,
wxTextValidator(wxFILTER_NUMERIC) );
m_pBlueTxtCtrl = new wxTextCtrl(this,
idBLUE,
"0",
wxPoint(5, 5),
wxSize(30, 20),
0,
wxTextValidator(wxFILTER_NUMERIC) );
wxButton *okButton = new wxButton(this,
wxID_OK,
"OK",
wxDefaultPosition,
wxSize(30, 30) );
vBox1->Add(rText, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox1->Add(gText, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox1->Add(bText, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox2->Add(m_pRedTxtCtrl, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox2->Add(m_pGreenTxtCtrl, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox2->Add(m_pBlueTxtCtrl, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
vBox2->Add(okButton, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 5);
hBox->Add(vBox1);
hBox->Add(vBox2);
hBox->Add(m_pColorPanel, 1, wxEXPAND, 0);
SetSizer(hBox);
m_pColorPanel->SetBackgroundColour(wxColor(0, 0, 0) );
m_pRedTxtCtrl->SetFocus();
}
void ColorsFrame::OnOK(wxCommandEvent& event)
{
wxString str;
str = m_pRedTxtCtrl->GetValue();
str.ToLong(&m_rColor);
str = m_pGreenTxtCtrl->GetValue();
str.ToLong(&m_gColor);
str = m_pBlueTxtCtrl->GetValue();
str.ToLong(&m_bColor);
if (m_rColor < 0 || m_rColor > 255 || m_gColor < 0 || m_gColor > 255 || m_bColor < 0 || m_bColor > 255)
{
wxMessageBox("An Incorrect value has been entered\nValue range is 0 - 255");
}
else
{
m_pColorPanel->SetBackgroundColour(wxColour(m_rColor, m_gColor, m_bColor) );
Refresh();
}
}