kicad/share/selcolor.cpp

167 lines
5.6 KiB
C++

/************************/
/* SETCOLOR.CPP */
/************************/
/* Affichage et selection de la palette des couleurs disponibles
* dans une frame
*/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "colors.h"
enum colors_id {
ID_COLOR_BLACK = 2000, // ID_COLOR_ = ID_COLOR_BLACK a ID_COLOR_BLACK + 31
};
/*******************************************/
class WinEDA_SelColorFrame : public wxDialog
/*******************************************/
/* Frame d'affichage de la palette des couleurs disponibles
*/
{
private:
public:
// Constructor and destructor
WinEDA_SelColorFrame( wxWindow * parent, const wxPoint &framepos );
~WinEDA_SelColorFrame( void ) { };
private:
void SelColor( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};
/* Construction de la table des evenements pour FrameClassMain */
BEGIN_EVENT_TABLE( WinEDA_SelColorFrame, wxDialog )
EVT_BUTTON( ID_COLOR_BLACK, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 1, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 2, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 3, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 4, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 5, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 6, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 7, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 8, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 9, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 10, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 11, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 12, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 13, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 14, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 15, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 16, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 17, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 18, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 19, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 20, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 21, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 22, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 23, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 24, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 25, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 26, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 27, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 28, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 29, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 30, WinEDA_SelColorFrame::SelColor )
EVT_BUTTON( ID_COLOR_BLACK + 31, WinEDA_SelColorFrame::SelColor )
END_EVENT_TABLE()
/***************************************/
int DisplayColorFrame( wxWindow* parent )
/***************************************/
{
wxPoint framepos;
int color;
wxGetMousePosition( &framepos.x, &framepos.y );
WinEDA_SelColorFrame* frame = new WinEDA_SelColorFrame( parent, framepos );
color = frame->ShowModal(); frame->Destroy();
if( color > NBCOLOR )
color = -1;
return color;
}
/*******************************************************************/
WinEDA_SelColorFrame::WinEDA_SelColorFrame( wxWindow* parent,
const wxPoint& framepos ) :
wxDialog( parent, -1, _( "Colors" ), framepos, wxSize( 375, 240 ),
DIALOG_STYLE )
/*******************************************************************/
{
#define START_Y 10
wxBitmapButton* Button;
int ii, yy, butt_ID, buttcolor;
wxPoint pos;
int w = 20, h = 20;
SetFont( *g_DialogFont );
SetReturnCode( -1 );
pos.x = 5; pos.y = START_Y;
for( ii = 0; ColorRefs[ii].m_Name != NULL; ii++ )
{
butt_ID = ID_COLOR_BLACK + ii;
wxMemoryDC iconDC;
wxBitmap ButtBitmap( w, h );
wxBrush Brush;
iconDC.SelectObject( ButtBitmap );
buttcolor = ColorRefs[ii].m_Numcolor;
iconDC.SetPen( *wxBLACK_PEN );
Brush.SetColour(
ColorRefs[buttcolor].m_Red,
ColorRefs[buttcolor].m_Green,
ColorRefs[buttcolor].m_Blue
);
Brush.SetStyle( wxSOLID );
iconDC.SetBrush( Brush );
iconDC.SetBackground( *wxGREY_BRUSH );
iconDC.Clear();
iconDC.DrawRoundedRectangle( 0, 0, w, h, (double) h / 3 );
Button = new wxBitmapButton( this, butt_ID,
ButtBitmap,
wxPoint (pos.x, pos.y), wxSize (w, h) );
new wxStaticText( this, -1,
ColorRefs[ii].m_Name,
wxPoint (pos.x + 2 + w, pos.y + 4 ),
wxSize( -1, -1 ), 0 );
yy = h + 5;
pos.y += yy;
if( ii == 7 )
{
pos.x += w + 80; pos.y = START_Y;
}
else if( (ii == 15) || (ii == 23) )
{
pos.x += w + 110; pos.y = START_Y;
}
}
}
/*********************************************************/
void WinEDA_SelColorFrame::SelColor( wxCommandEvent& event )
/*********************************************************/
{
int id = event.GetId();
EndModal( id - ID_COLOR_BLACK );
}