143 lines
3.5 KiB
C++
143 lines
3.5 KiB
C++
/************************/
|
|
/* SETCOLOR.CPP */
|
|
/************************/
|
|
/* Affichage et selection de la palette des couleurs disponibles
|
|
dans une frame
|
|
*/
|
|
|
|
#include "fctsys.h"
|
|
#include "gr_basic.h"
|
|
#include "macros.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_COMMAND_RANGE(ID_COLOR_BLACK,ID_COLOR_BLACK+31,
|
|
wxEVT_COMMAND_BUTTON_CLICKED,
|
|
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, butt_ID, buttcolor;
|
|
wxPoint pos;
|
|
int w = 20, h = 20;
|
|
wxStaticText * text;
|
|
int right, bottom, line_height;
|
|
|
|
SetFont(*g_DialogFont);
|
|
|
|
SetReturnCode(-1);
|
|
|
|
bottom = pos.x = 5; right = pos.y = START_Y;
|
|
line_height = h;
|
|
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);
|
|
|
|
text = new wxStaticText(this,-1,
|
|
ColorRefs[ii].m_Name,
|
|
wxPoint(pos.x + 2 + w , pos.y ),
|
|
wxSize(-1,-1), 0 );
|
|
line_height = MAX( line_height, text->GetRect().GetHeight());
|
|
right = MAX(right, text->GetRect().GetRight());
|
|
bottom = MAX(bottom, text->GetRect().GetBottom());
|
|
|
|
Button = new wxBitmapButton(this, butt_ID,
|
|
ButtBitmap,
|
|
wxPoint(pos.x, pos.y - ((h -line_height)/2)),
|
|
wxSize(w,h) );
|
|
|
|
pos.y += line_height + 5;
|
|
if ( ii == 7 )
|
|
{
|
|
pos.x = right + 10; pos.y = START_Y;
|
|
}
|
|
else if ( (ii == 15) || (ii == 23) )
|
|
{
|
|
pos.x = right+ 10; pos.y = START_Y;
|
|
}
|
|
}
|
|
|
|
SetClientSize( wxSize(right + 10, bottom + 10) );
|
|
}
|
|
|
|
|
|
/*********************************************************/
|
|
void WinEDA_SelColorFrame::SelColor(wxCommandEvent& event)
|
|
/*********************************************************/
|
|
{
|
|
int id = event.GetId();
|
|
|
|
EndModal(id - ID_COLOR_BLACK);
|
|
}
|
|
|
|
|
|
|