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