474 lines
10 KiB
C++
474 lines
10 KiB
C++
/* Set up color Layers */
|
|
|
|
#include "fctsys.h"
|
|
#include "gr_basic.h"
|
|
|
|
#include "common.h"
|
|
#include "program.h"
|
|
#include "libcmp.h"
|
|
#include "general.h"
|
|
|
|
#include "id.h"
|
|
|
|
#include "protos.h"
|
|
|
|
|
|
/* Variables locales */
|
|
|
|
/* Fonctions locales: */
|
|
|
|
/* Macro utile : */
|
|
#define ADR(numlayer) &(g_LayerDescr.LayerColor[numlayer])
|
|
|
|
#define BUTT_SIZE_X 30
|
|
#define BUTT_SIZE_Y 20
|
|
|
|
|
|
enum col_sel_id {
|
|
ID_COLOR_SETUP = 1800
|
|
};
|
|
|
|
/**********************************/
|
|
/* Liste des menus de Menu_Layers */
|
|
/**********************************/
|
|
struct ColorButton
|
|
{
|
|
wxString m_Name;
|
|
int * m_Color;
|
|
int m_Id;
|
|
wxBitmapButton * m_Button;
|
|
int m_State;
|
|
};
|
|
|
|
static ColorButton Msg_General=
|
|
{
|
|
_("General"), /* Title */
|
|
NULL
|
|
};
|
|
|
|
static ColorButton Msg_Sheets=
|
|
{
|
|
_("Sheets"), /* Title */
|
|
NULL
|
|
};
|
|
|
|
static ColorButton Layer_Wire_Item=
|
|
{
|
|
_("Wire"), /* Title */
|
|
ADR(LAYER_WIRE) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Bus_Item=
|
|
{
|
|
_("Bus"), /* Title */
|
|
ADR(LAYER_BUS) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Jonction_Item=
|
|
{
|
|
_("Junction"), /* Title */
|
|
ADR(LAYER_JUNCTION) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_LocalLabel_Item=
|
|
{
|
|
_("Label"), /* Title */
|
|
ADR(LAYER_LOCLABEL) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_GlobLabel_Item=
|
|
{
|
|
_("GlobLabel"), /* Title */
|
|
ADR(LAYER_GLOBLABEL) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_PinNum_Item=
|
|
{
|
|
_("PinNum"), /* Title */
|
|
ADR(LAYER_PINNUM) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_PinNam_Item=
|
|
{
|
|
_("PinNam"), /* Title */
|
|
ADR(LAYER_PINNAM) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Reference_Item=
|
|
{
|
|
_("Reference"), /* Title */
|
|
ADR(LAYER_REFERENCEPART) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Value_Item=
|
|
{
|
|
_("Value"), /* Title */
|
|
ADR(LAYER_VALUEPART) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Fields_Item=
|
|
{
|
|
_("Fields"), /* Title */
|
|
ADR(LAYER_FIELDS) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_BodyDevice_Item=
|
|
{
|
|
_("Body"), /* Title */
|
|
ADR(LAYER_DEVICE) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_BodyBackgroundDevice_Item=
|
|
{
|
|
_("Body Bg"), /* Title */
|
|
ADR(LAYER_DEVICE_BACKGROUND) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton MsgDevice_Item=
|
|
{
|
|
_("Device"), /* Title */
|
|
NULL
|
|
};
|
|
|
|
static ColorButton Layer_Notes_Item=
|
|
{
|
|
_("Notes"), /* Title */
|
|
ADR(LAYER_NOTES) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_NetNam_Item=
|
|
{
|
|
_("Netname"), /* Title */
|
|
ADR(LAYER_NETNAM) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Pin_Item=
|
|
{
|
|
_("Pin"), /* Title */
|
|
ADR(LAYER_PIN) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Sheet_Item=
|
|
{
|
|
_("Sheet"), /* Title */
|
|
ADR(LAYER_SHEET) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_SheetName_Item=
|
|
{
|
|
_("SheetName"), /* Title */
|
|
ADR(LAYER_SHEETNAME) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_SheetFileName_Item=
|
|
{
|
|
_("Sheetfile"), /* Title */
|
|
ADR(LAYER_SHEETFILENAME) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_SheetLabel_Item=
|
|
{
|
|
_("SheetLabel"), /* Title */
|
|
ADR(LAYER_SHEETLABEL) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_NoConnect_Item=
|
|
{
|
|
_("NoConn"), /* Title */
|
|
ADR(LAYER_NOCONNECT) /* adr du parametre optionnel */
|
|
};
|
|
|
|
|
|
static ColorButton Msg_ErcMarck=
|
|
{
|
|
_("Erc Mark"), /* Title */
|
|
NULL
|
|
};
|
|
|
|
static ColorButton Layer_Erc_Warning_Item=
|
|
{
|
|
_("Erc Warning"), /* Title */
|
|
ADR(LAYER_ERC_WARN) /* adr du parametre optionnel */
|
|
};
|
|
|
|
static ColorButton Layer_Erc_Error_Item=
|
|
{
|
|
_("Erc Error"), /* Title */
|
|
ADR(LAYER_ERC_ERR) /* adr du parametre optionnel */
|
|
};
|
|
|
|
#define NB_BUTT 26
|
|
static ColorButton * laytool_list[NB_BUTT+1] = {
|
|
&Msg_General,
|
|
&Layer_Wire_Item,
|
|
&Layer_Bus_Item,
|
|
&Layer_Jonction_Item,
|
|
&Layer_LocalLabel_Item,
|
|
&Layer_GlobLabel_Item,
|
|
&Layer_NetNam_Item,
|
|
&Layer_Notes_Item,
|
|
&Layer_NoConnect_Item,
|
|
|
|
&MsgDevice_Item,
|
|
&Layer_BodyDevice_Item,
|
|
&Layer_BodyBackgroundDevice_Item,
|
|
&Layer_Pin_Item,
|
|
&Layer_PinNum_Item,
|
|
&Layer_PinNam_Item,
|
|
&Layer_Reference_Item,
|
|
&Layer_Value_Item,
|
|
&Layer_Fields_Item,
|
|
|
|
&Msg_Sheets,
|
|
&Layer_Sheet_Item,
|
|
&Layer_SheetFileName_Item,
|
|
&Layer_SheetName_Item,
|
|
&Layer_SheetLabel_Item,
|
|
|
|
&Msg_ErcMarck,
|
|
&Layer_Erc_Warning_Item,
|
|
&Layer_Erc_Error_Item,
|
|
|
|
NULL
|
|
};
|
|
|
|
/*************************************************************/
|
|
/* classe derivee pour la frame de Configuration des couleurs*/
|
|
/*************************************************************/
|
|
|
|
class WinEDA_SetColorsFrame: public wxDialog
|
|
{
|
|
private:
|
|
WinEDA_DrawFrame *m_Parent;
|
|
wxRadioBox * m_SelBgColor;
|
|
|
|
public:
|
|
|
|
// Constructor and destructor
|
|
WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent, const wxPoint& framepos);
|
|
~WinEDA_SetColorsFrame(void) {};
|
|
|
|
private:
|
|
void SetColor(wxCommandEvent& event);
|
|
void BgColorChoice(wxCommandEvent& event);
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
|
|
};
|
|
/* Table des evenements pour WinEDA_SetColorsFrame */
|
|
BEGIN_EVENT_TABLE(WinEDA_SetColorsFrame, wxDialog)
|
|
EVT_RADIOBOX(ID_SEL_BG_COLOR, WinEDA_SetColorsFrame::BgColorChoice)
|
|
EVT_COMMAND_RANGE(ID_COLOR_SETUP, ID_COLOR_SETUP+26,
|
|
wxEVT_COMMAND_BUTTON_CLICKED,
|
|
WinEDA_SetColorsFrame::SetColor)
|
|
|
|
END_EVENT_TABLE()
|
|
|
|
|
|
|
|
/**************************************************************/
|
|
void DisplayColorSetupFrame(WinEDA_DrawFrame * parent,
|
|
const wxPoint & framepos)
|
|
/**************************************************************/
|
|
{
|
|
WinEDA_SetColorsFrame * frame =
|
|
new WinEDA_SetColorsFrame(parent, framepos);
|
|
frame->ShowModal(); frame->Destroy();
|
|
}
|
|
|
|
/**********************************************************************/
|
|
WinEDA_SetColorsFrame::WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent,
|
|
const wxPoint& framepos):
|
|
wxDialog(parent, -1, _("EESchema Preferences"), framepos,
|
|
wxSize(500, 270), DIALOG_STYLE)
|
|
/**********************************************************************/
|
|
{
|
|
#define START_Y 15
|
|
wxBitmapButton * Button;
|
|
int ii, yy, butt_ID, buttcolor;
|
|
wxPoint pos;
|
|
int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
|
|
wxStaticText * text;
|
|
int right, bottom, line_height;
|
|
wxPoint bg_color_pos;
|
|
|
|
m_Parent = parent;
|
|
SetFont(*g_DialogFont);
|
|
|
|
pos.x = 10; pos.y = START_Y;
|
|
right = pos.x; bottom = 0;
|
|
line_height = h;
|
|
for ( ii = 0; laytool_list[ii] != NULL; ii++ )
|
|
{
|
|
if( laytool_list[ii]->m_Color == NULL)
|
|
{
|
|
if( pos.y != START_Y )
|
|
{
|
|
pos.x = right + 10;
|
|
pos.y = START_Y;
|
|
bg_color_pos = pos;
|
|
}
|
|
wxString msg = wxGetTranslation(laytool_list[ii]->m_Name);
|
|
text = new wxStaticText(this,-1,
|
|
msg,
|
|
wxPoint(pos.x, pos.y ),
|
|
wxSize(-1,-1), 0 );
|
|
line_height = MAX(line_height, text->GetRect().GetHeight());
|
|
pos.y += line_height;
|
|
continue;
|
|
}
|
|
butt_ID = ID_COLOR_SETUP + ii;
|
|
laytool_list[ii]->m_Id = butt_ID;
|
|
wxMemoryDC iconDC;
|
|
wxBitmap ButtBitmap(w,h);
|
|
iconDC.SelectObject( ButtBitmap );
|
|
buttcolor = *laytool_list[ii]->m_Color;
|
|
wxBrush Brush;
|
|
iconDC.SelectObject( ButtBitmap );
|
|
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.DrawRectangle(0,0, w, h);
|
|
|
|
Button = new wxBitmapButton(this, butt_ID,
|
|
ButtBitmap,
|
|
wxPoint(pos.x, pos.y - ((h -line_height)/2) ),
|
|
wxSize(w,h) );
|
|
laytool_list[ii]->m_Button = Button;
|
|
|
|
wxString msg = wxGetTranslation(laytool_list[ii]->m_Name);
|
|
text = new wxStaticText(this,-1,
|
|
msg,
|
|
wxPoint(pos.x + 5 + w , pos.y ),
|
|
wxSize(-1,-1), 0 );
|
|
wxPoint lowpos;
|
|
lowpos.x = text->GetRect().GetRight();
|
|
lowpos.y = text->GetRect().GetBottom();
|
|
right = MAX(right, lowpos.x);
|
|
bottom = MAX(bottom, lowpos.y);
|
|
bg_color_pos.y = lowpos.y;
|
|
|
|
yy = line_height + 5;
|
|
pos.y += yy;
|
|
}
|
|
|
|
bg_color_pos.x += 5; bg_color_pos.y += 25;
|
|
wxString bg_choice[2] = { _("White Background"), _("Black Background")};
|
|
m_SelBgColor = new wxRadioBox(this, ID_SEL_BG_COLOR,
|
|
_("Background Colour"), bg_color_pos,
|
|
wxDefaultSize, 2, bg_choice, 1, wxRA_SPECIFY_COLS);
|
|
m_SelBgColor->SetSelection( (g_DrawBgColor == BLACK) ? 1 : 0);
|
|
bottom = MAX(bottom, m_SelBgColor->GetRect().GetBottom());;
|
|
right = MAX(right, m_SelBgColor->GetRect().GetRight());;
|
|
|
|
SetClientSize(wxSize(right+10, bottom+10));
|
|
}
|
|
|
|
|
|
/***************************************************************/
|
|
void WinEDA_SetColorsFrame::SetColor(wxCommandEvent& event)
|
|
/***************************************************************/
|
|
{
|
|
int id = event.GetId();
|
|
int color = DisplayColorFrame(this);
|
|
int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
|
|
|
|
if ( color < 0) return;
|
|
|
|
for ( int ii = 0; laytool_list[ii] != NULL; ii++ )
|
|
{
|
|
if( laytool_list[ii]->m_Id != id) continue;
|
|
|
|
if( *laytool_list[ii]->m_Color == color) break;
|
|
|
|
*laytool_list[ii]->m_Color = color;
|
|
wxMemoryDC iconDC;
|
|
|
|
wxBitmapButton * Button = laytool_list[ii]->m_Button;
|
|
|
|
wxBitmap ButtBitmap = Button->GetBitmapLabel();
|
|
iconDC.SelectObject( ButtBitmap );
|
|
int buttcolor = *laytool_list[ii]->m_Color;
|
|
wxBrush Brush;
|
|
iconDC.SelectObject( ButtBitmap );
|
|
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.DrawRectangle(0,0, w, h);
|
|
Button->SetBitmapLabel(ButtBitmap);
|
|
if ( m_Parent->GetScreen() )
|
|
m_Parent->GetScreen()->SetRefreshReq();
|
|
}
|
|
Refresh(FALSE);
|
|
}
|
|
|
|
|
|
/***************************************************************/
|
|
void WinEDA_SetColorsFrame::BgColorChoice(wxCommandEvent& event)
|
|
/***************************************************************/
|
|
{
|
|
int color;
|
|
|
|
if ( m_SelBgColor->GetSelection() == 0 ) color = WHITE;
|
|
else color = BLACK;
|
|
|
|
if ( color != g_DrawBgColor )
|
|
{
|
|
g_DrawBgColor = color;
|
|
m_Parent->SetDrawBgColor(g_DrawBgColor);
|
|
m_Parent->ReDrawPanel();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************/
|
|
void SeedLayers(void)
|
|
/*************************/
|
|
{
|
|
LayerStruct * LayerPointer = &g_LayerDescr;
|
|
int pt;
|
|
|
|
LayerPointer->CommonColor = WHITE;
|
|
LayerPointer->Flags = 0;
|
|
pt=0;
|
|
LayerPointer->CurrentWidth = 1;
|
|
|
|
/* seed Up the Layer colours, set all user layers off */
|
|
for( pt = 0; pt < MAX_LAYERS; pt++ )
|
|
{
|
|
LayerPointer->LayerStatus[pt]= 0;
|
|
LayerPointer->LayerColor[pt] = DARKGRAY;
|
|
}
|
|
|
|
LayerPointer->NumberOfLayers = pt - 1;
|
|
/* Couleurs specifiques: Mise a jour par la lecture de la config*/
|
|
}
|
|
|
|
|
|
/*******************************/
|
|
int ReturnLayerColor(int Layer)
|
|
/*******************************/
|
|
{
|
|
if(g_LayerDescr.Flags==0)
|
|
return(g_LayerDescr.LayerColor[Layer]);
|
|
else
|
|
return(g_LayerDescr.CommonColor);
|
|
}
|
|
|
|
|