/************************/ /* 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 ); }