485 lines
13 KiB
C++
485 lines
13 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() { };
|
|
|
|
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;
|
|
|
|
static const 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 ii;
|
|
int id = event.GetId();
|
|
int color;
|
|
int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
|
|
|
|
color = DisplayColorFrame( this,
|
|
*laytool_list[id - ID_COLOR_SETUP]->m_Color );
|
|
if( color < 0 )
|
|
return;
|
|
|
|
for( 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()
|
|
/*************************/
|
|
{
|
|
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;
|
|
}
|