1
0
forked from 0ad/0ad
0ad/source/tools/atlas/AtlasUI/ColourTester/ColourTester.cpp

92 lines
2.6 KiB
C++

#include "stdafx.h"
#include "ColourTester.h"
#include "ColourTesterImageCtrl.h"
#include "ColourTesterColourCtrl.h"
#include "ColourTesterFileCtrl.h"
#include "wx/dnd.h"
DEFINE_EVENT_TYPE(wxEVT_MY_IMAGE_CHANGED)
BEGIN_EVENT_TABLE(ColourTester, wxFrame)
EVT_COMMAND(wxID_ANY, wxEVT_MY_IMAGE_CHANGED, ColourTester::OnImageChanged)
END_EVENT_TABLE()
// Allow drag-and-drop of files onto the window, as a convenient way of opening them
class DropTarget : public wxFileDropTarget
{
public:
DropTarget(ColourTesterImageCtrl* imgctrl)
: m_ImageCtrl(imgctrl)
{}
bool OnDropFiles(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), const wxArrayString& filenames)
{
if (filenames.GetCount() >= 1)
m_ImageCtrl->SetImageFile(filenames[0]);
return true;
}
private:
ColourTesterImageCtrl* m_ImageCtrl;
};
ColourTester::ColourTester(wxWindow* parent)
: wxFrame(parent, wxID_ANY, _("Colour Tester"), wxDefaultPosition, wxSize(800, 700))
{
SetIcon(wxIcon(_T("ICON_ColourTester")));
wxPanel* mainPanel = new wxPanel(this);
//////////////////////////////////////////////////////////////////////////
// Set up sizers:
wxBoxSizer* vertSizer = new wxBoxSizer(wxVERTICAL);
mainPanel->SetSizer(vertSizer);
wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);
vertSizer->Add(topSizer,
wxSizerFlags().Proportion(1).Expand().Border(wxLEFT|wxRIGHT, 5));
wxBoxSizer* bottomSizer = new wxBoxSizer(wxHORIZONTAL);
vertSizer->Add(bottomSizer,
wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT, 5));
//////////////////////////////////////////////////////////////////////////
// Add things to sizers:
m_ImageCtrl = new ColourTesterImageCtrl(mainPanel);
topSizer->Add(new ColourTesterFileCtrl(mainPanel, wxSize(200,200), m_ImageCtrl),
wxSizerFlags().Expand().Border(wxALL, 10));
topSizer->Add(m_ImageCtrl,
wxSizerFlags().Proportion(1).Expand().Border(wxALL, 10));
bottomSizer->Add((wxPanel*)new ColourTesterColourCtrl(mainPanel, m_ImageCtrl),
wxSizerFlags().Border(wxALL, 10));
m_StatusBar = new wxStatusBar(mainPanel, wxID_ANY);
m_StatusBar->SetFieldsCount(2);
int statusWidths[] = { -2, -1 };
m_StatusBar->SetStatusWidths(2, statusWidths);
vertSizer->Add(m_StatusBar,
wxSizerFlags().Expand());
//////////////////////////////////////////////////////////////////////////
SetDropTarget(new DropTarget(m_ImageCtrl));
}
void ColourTester::OnImageChanged(wxCommandEvent& event)
{
ColourTesterImageCtrl* imgCtrl = wxDynamicCast(event.GetEventObject(), ColourTesterImageCtrl);
wxCHECK(imgCtrl, );
m_StatusBar->SetStatusText(event.GetString(), 0);
m_StatusBar->SetStatusText(imgCtrl->GetImageFiletype(), 1);
}