Commit ec02baab authored by CHARRAS's avatar CHARRAS

remove unused files. some translations.

cvpcb:	set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the display frame
parent a95237d8
......@@ -38,9 +38,9 @@ END_EVENT_TABLE()
/*******************************************************************/
WinEDA3D_DrawFrame::WinEDA3D_DrawFrame(WinEDA_BasePcbFrame * parent,
WinEDA_App *app_parent, const wxString& title ):
WinEDA_App *app_parent, const wxString& title, long style ):
wxFrame(parent, DISPLAY3D_FRAME, title,
wxPoint(-1,-1), wxSize(-1,-1) )
wxPoint(-1,-1), wxSize(-1,-1), style )
/*******************************************************************/
{
m_FrameName = wxT("Frame3D");
......
......@@ -29,6 +29,9 @@
#include "pcbstruct.h"
#include "3d_struct.h"
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE wxDEFAULT_FRAME_STYLE|wxWANTS_CHARS
#define LIB3D_PATH wxT("packages3d/")
class Pcb3D_GLCanvas;
......@@ -124,11 +127,10 @@ public:
private:
wxString m_FrameName; // name used for writting and reading setup
// It is "Frame3D"
public:
WinEDA3D_DrawFrame(WinEDA_BasePcbFrame * parent, WinEDA_App *app_parent,
const wxString& title );
const wxString& title, long style = KICAD_DEFAULT_3D_DRAWFRAME_STYLE );
void Exit3DFrame(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent & Event);
......
......@@ -4,6 +4,19 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2007-Oct-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+ all:
remove unused files.
some translations
+cvpcb:
set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the
display frame
minor other changes
2007-Oct-26 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+ pcbnew:
......
......@@ -18,9 +18,8 @@
WinEDA_BasicFrame::WinEDA_BasicFrame( wxWindow * father, int idtype,
WinEDA_App *parent, const wxString & title,
const wxPoint& pos, const wxSize& size):
wxFrame(father, -1, title, pos, size,
wxDEFAULT_FRAME_STYLE|wxWANTS_CHARS)
const wxPoint& pos, const wxSize& size, long style):
wxFrame(father, -1, title, pos, size, style )
{
wxSize minsize;
......
/////////////////////////////////////////////////////////////////////////////
// Name: svg_print.h
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 05/02/2006 11:05:20
// RCS-ID:
// Copyright: License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 05/02/2006 11:05:20
#ifndef _SVG_PRINT_H_
#define _SVG_PRINT_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "svg_print.h"
#endif
/*!
* Includes
*/
////@begin includes
#include "wx/valgen.h"
#include "wx/spinctrl.h"
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
class wxSpinCtrl;
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define SYMBOL_WINEDA_PRINTSVGFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT
#define SYMBOL_WINEDA_PRINTSVGFRAME_TITLE _("Create SVG file")
#define SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_PRINTSVGFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_PRINTSVGFRAME_POSITION wxDefaultPosition
#define ID_SPINCTRL 10003
#define ID_RADIOBOX_SETPRINTMODE 10007
#define ID_CHECKBOX 10004
#define ID_RADIOBOX 10005
#define ID_PRINT_EXECUTE 10002
#define ID_TEXTCTRL 10001
#define ID_TEXTCTRL1 10006
////@end control identifiers
/*!
* Compatibility
*/
#ifndef wxCLOSE_BOX
#define wxCLOSE_BOX 0x1000
#endif
/*!
* WinEDA_PrintSVGFrame class declaration
*/
class WinEDA_PrintSVGFrame: public wxDialog
{
DECLARE_DYNAMIC_CLASS( WinEDA_PrintSVGFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
WinEDA_PrintSVGFrame( );
WinEDA_PrintSVGFrame( WinEDA_DrawFrame* parent,
wxWindowID id = SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME,
const wxString& caption = SYMBOL_WINEDA_PRINTSVGFRAME_TITLE,
const wxPoint& pos = SYMBOL_WINEDA_PRINTSVGFRAME_POSITION,
const wxSize& size = SYMBOL_WINEDA_PRINTSVGFRAME_SIZE,
long style = SYMBOL_WINEDA_PRINTSVGFRAME_STYLE );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_PRINTSVGFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_PRINTSVGFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_PRINTSVGFRAME_SIZE, long style = SYMBOL_WINEDA_PRINTSVGFRAME_STYLE );
/// Creates the controls and sizers
void CreateControls();
////@begin WinEDA_PrintSVGFrame event handler declarations
/// wxEVT_CLOSE_WINDOW event handler for ID_DIALOG
void OnCloseWindow( wxCloseEvent& event );
/// wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_SPINCTRL
void OnSpinctrlUpdated( wxSpinEvent& event );
/// wxEVT_COMMAND_RADIOBOX_SELECTED event handler for ID_RADIOBOX_SETPRINTMODE
void OnRadioboxSetprintmodeSelected( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_PRINT_EXECUTE
void OnPrintExecuteClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE
void OnCloseClick( wxCommandEvent& event );
////@end WinEDA_PrintSVGFrame event handler declarations
////@begin WinEDA_PrintSVGFrame member function declarations
/// Retrieves bitmap resources
wxBitmap GetBitmapResource( const wxString& name );
/// Retrieves icon resources
wxIcon GetIconResource( const wxString& name );
////@end WinEDA_PrintSVGFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
void PrintSVGDoc(wxCommandEvent& event);
bool DrawPage(const wxString & FullFileName);
void SetPenWidth(wxSpinEvent& event);
wxString ReturnFullFileName();
////@begin WinEDA_PrintSVGFrame member variables
wxSpinCtrl* m_ButtPenWidth;
wxRadioBox* m_ModeColorOption;
wxCheckBox* m_Print_Sheet_Ref;
wxRadioBox* m_PagesOption;
wxTextCtrl* m_FileNameCtrl;
wxTextCtrl* m_MessagesBox;
////@end WinEDA_PrintSVGFrame member variables
WinEDA_DrawFrame * m_Parent;
int m_PrintMaskLayer;
int m_ImageXSize_mm;
};
#endif
// _SVG_PRINT_H_
/////////////////////////////////////////////////////////////////////////////
// Name: svg_print.h
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 27/10/2007 12:48:35
// RCS-ID:
// Copyright: License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 27/10/2007 12:48:35
#ifndef _SVG_PRINT_H_
#define _SVG_PRINT_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "svg_print.h"
#endif
/*!
* Includes
*/
////@begin includes
#include "wx/valgen.h"
#include "wx/spinctrl.h"
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
class wxSpinCtrl;
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define ID_SPINCTRL 10003
#define ID_RADIOBOX_SETPRINTMODE 10007
#define ID_CHECKBOX 10004
#define ID_RADIOBOX 10005
#define ID_PRINT_EXECUTE 10002
#define ID_TEXTCTRL 10001
#define ID_TEXTCTRL1 10006
#define SYMBOL_WINEDA_PRINTSVGFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_PRINTSVGFRAME_TITLE _("Create SVG file")
#define SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_PRINTSVGFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_PRINTSVGFRAME_POSITION wxDefaultPosition
////@end control identifiers
/*!
* WinEDA_PrintSVGFrame class declaration
*/
class WinEDA_PrintSVGFrame: public wxDialog
{
DECLARE_DYNAMIC_CLASS( WinEDA_PrintSVGFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
WinEDA_PrintSVGFrame();
WinEDA_PrintSVGFrame( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_PRINTSVGFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_PRINTSVGFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_PRINTSVGFRAME_SIZE, long style = SYMBOL_WINEDA_PRINTSVGFRAME_STYLE );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_PRINTSVGFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_PRINTSVGFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_PRINTSVGFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_PRINTSVGFRAME_SIZE, long style = SYMBOL_WINEDA_PRINTSVGFRAME_STYLE );
/// Destructor
~WinEDA_PrintSVGFrame();
/// Initialises member variables
void Init();
/// Creates the controls and sizers
void CreateControls();
////@begin WinEDA_PrintSVGFrame event handler declarations
/// wxEVT_CLOSE_WINDOW event handler for ID_DIALOG
void OnCloseWindow( wxCloseEvent& event );
/// wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_SPINCTRL
void OnSpinctrlUpdated( wxSpinEvent& event );
/// wxEVT_COMMAND_RADIOBOX_SELECTED event handler for ID_RADIOBOX_SETPRINTMODE
void OnRadioboxSetprintmodeSelected( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_PRINT_EXECUTE
void OnPrintExecuteClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE
void OnCloseClick( wxCommandEvent& event );
////@end WinEDA_PrintSVGFrame event handler declarations
////@begin WinEDA_PrintSVGFrame member function declarations
/// Retrieves bitmap resources
wxBitmap GetBitmapResource( const wxString& name );
/// Retrieves icon resources
wxIcon GetIconResource( const wxString& name );
////@end WinEDA_PrintSVGFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
////@begin WinEDA_PrintSVGFrame member variables
wxSpinCtrl* m_ButtPenWidth;
wxRadioBox* m_ModeColorOption;
wxCheckBox* m_Print_Sheet_Ref;
wxRadioBox* m_PagesOption;
wxTextCtrl* m_FileNameCtrl;
wxTextCtrl* m_MessagesBox;
////@end WinEDA_PrintSVGFrame member variables
};
#endif
// _SVG_PRINT_H_
/**********************************************************/
/* Routines d'affichage de parametres et caracteristiques */
/**********************************************************/
/* Fichier AFFICHE.CC */
#include "fctsys.h"
#include "wxstruct.h"
#include "menu.h"
#include "pcbnew.h"
#include "cvpcb.h"
#include "3d_struct.h"
#include "protos.h"
......@@ -21,8 +21,8 @@
/*******************************************************/
/* Constructeur de WinEDA_CvpcbFrame: la fenetre generale */
/*******************************************************/
WinEDA_CvpcbFrame::WinEDA_CvpcbFrame(WinEDA_App *parent, const wxString & title ):
WinEDA_BasicFrame(NULL, CVPCB_FRAME, parent, title, wxDefaultPosition, wxDefaultSize )
WinEDA_CvpcbFrame::WinEDA_CvpcbFrame(WinEDA_App *parent, const wxString & title, long style ):
WinEDA_BasicFrame(NULL, CVPCB_FRAME, parent, title, wxDefaultPosition, wxDefaultSize, style )
{
m_FrameName = wxT("CvpcbFrame");
m_ListCmp = NULL;
......
/**********************************************/
/* CVPCB : declaration des variables globales */
/**********************************************/
/**********************************************/
/* CVPCB : declaration des variables globales */
/**********************************************/
#ifndef eda_global
......@@ -15,140 +15,139 @@
#include "colors.h"
// Define print format d to display a schematic component line
#define CMP_FORMAT wxT("%3d %8s - %16s : %-.32s")
#define CMP_FORMAT wxT( "%3d %8s - %16s : %-.32s" )
#define FILTERFOOTPRINTKEY "FilterFootprint"
enum TypeOfStruct
{
STRUCT_NOT_INIT,
STRUCT_COMPONENT,
STRUCT_PIN,
STRUCT_MODULE,
STRUCT_PSEUDOMODULE
};
enum TypeOfStruct {
STRUCT_NOT_INIT,
STRUCT_COMPONENT,
STRUCT_PIN,
STRUCT_MODULE,
STRUCT_PSEUDOMODULE
};
class STOREPIN
{
public:
int m_Type; /* Type de la structure */
STOREPIN * Pnext; /* Chainage avant */
int m_Index; /* variable utilisee selon types de netlistes */
int m_PinType; /* code type electrique ( Entree Sortie Passive..) */
wxString m_PinNet; /* Pointeur sur le texte nom de net */
wxString m_PinNum;
wxString m_PinName;
wxString m_Repere; /* utilise selon formats de netliste */
STOREPIN();
} ;
int m_Type; /* Type de la structure */
STOREPIN* Pnext; /* Chainage avant */
int m_Index; /* variable utilisee selon types de netlistes */
int m_PinType; /* code type electrique ( Entree Sortie Passive..) */
wxString m_PinNet; /* Pointeur sur le texte nom de net */
wxString m_PinNum;
wxString m_PinName;
wxString m_Repere; /* utilise selon formats de netliste */
STOREPIN();
};
class STORECMP
{
public:
int m_Type; /* Type de la structure */
STORECMP * Pnext; /* Chainage avant */
STORECMP * Pback; /* Chainage arriere */
int m_Num; /* Numero d'ordre */
int m_Multi; /* Nombre d' unites par boitier */
STOREPIN * m_Pins; /* pointeur sur la liste des Pins */
wxString m_Reference; /* U3, R5 ... */
wxString m_Valeur; /* 7400, 47K ... */
wxString m_TimeStamp; /* Signature temporelle ("00000000" si absente) */
wxString m_Module; /* Nom du module (Package) corresp */
wxString m_Repere; /* utilise selon formats de netliste */
wxArrayString m_FootprintFilter; /* List of allowed footprints (wildcart allowed
if void: no filtering */
STORECMP();
~STORECMP();
} ;
int m_Type; /* Type de la structure */
STORECMP* Pnext; /* Chainage avant */
STORECMP* Pback; /* Chainage arriere */
int m_Num; /* Numero d'ordre */
int m_Multi; /* Nombre d' unites par boitier */
STOREPIN* m_Pins; /* pointeur sur la liste des Pins */
wxString m_Reference; /* U3, R5 ... */
wxString m_Valeur; /* 7400, 47K ... */
wxString m_TimeStamp; /* Signature temporelle ("00000000" si absente) */
wxString m_Module; /* Nom du module (Package) corresp */
wxString m_Repere; /* utilise selon formats de netliste */
wxArrayString m_FootprintFilter; /* List of allowed footprints (wildcart allowed
* if void: no filtering */
STORECMP();
~STORECMP();
};
class STOREMOD
{
public:
int m_Type; /* Type de la structure */
STOREMOD * Pnext; /* Chainage avant */
STOREMOD * Pback; /* Chainage arriere */
wxString m_Module; /* Nom du module */
wxString m_LibName; /* Nom de la librairie contenant ce module */
int m_Num ; /* Numero d'ordre pour affichage sur la liste */
wxString m_Doc; /* Doc associee */
wxString m_KeyWord; /* Mots cles associes */
STOREMOD();
int m_Type; /* Type de la structure */
STOREMOD* Pnext; /* Chainage avant */
STOREMOD* Pback; /* Chainage arriere */
wxString m_Module; /* Nom du module */
wxString m_LibName; /* Nom de la librairie contenant ce module */
int m_Num; /* Numero d'ordre pour affichage sur la liste */
wxString m_Doc; /* Doc associee */
wxString m_KeyWord; /* Mots cles associes */
STOREMOD();
};
eda_global STOREMOD * g_BaseListePkg;
eda_global STORECMP * g_BaseListeCmp;
eda_global STOREMOD* g_BaseListePkg;
eda_global STORECMP* g_BaseListeCmp;
eda_global FILE *source ;
eda_global FILE *dest ;
eda_global FILE *libcmp ;
eda_global FILE *lib_module ;
eda_global FILE* source;
eda_global FILE* dest;
eda_global FILE* libcmp;
eda_global FILE* lib_module;
/* nom des fichiers a traiter */
eda_global wxString FFileName;
eda_global wxString FFileName;
/* Types de netliste: */
#define TYPE_NON_SPECIFIE 0
#define TYPE_ORCADPCB2 1
#define TYPE_PCAD 2
#define TYPE_NON_SPECIFIE 0
#define TYPE_ORCADPCB2 1
#define TYPE_PCAD 2
#define TYPE_VIEWLOGIC_WIR 3
#define TYPE_VIEWLOGIC_NET 4
/* Gestion des noms des librairies */
eda_global wxString g_EquivExtBuffer
#ifdef MAIN
( wxT(".equ") )
( wxT( ".equ" ) )
#endif
;
eda_global wxString g_ExtCmpBuffer
#ifdef MAIN
( wxT(".cmp") )
( wxT( ".cmp" ) )
#endif
;
eda_global wxString g_UserNetDirBuffer; // Netlist path (void = current working directory)
eda_global wxString g_UserNetDirBuffer; // Netlist path (void = current working directory)
eda_global wxArrayString g_ListName_Equ; // list of .equ files to load
eda_global wxArrayString g_ListName_Equ; // list of .equ files to load
eda_global int g_FlagEESchema;
eda_global int Rjustify; /* flag pout troncature des noms de Net:
= 0: debut de chaine conservee (->ORCADPCB2)
= 1: fin de chaine conservee (->VIEWLOGIC) */
eda_global int selection_type; /* 0 pour sel par U??, 1 pour sel par ref ORCADPCB */
eda_global int g_FlagEESchema;
eda_global int Rjustify; /* flag pout troncature des noms de Net:
* = 0: debut de chaine conservee (->ORCADPCB2)
* = 1: fin de chaine conservee (->VIEWLOGIC) */
eda_global int selection_type; /* 0 pour sel par U??, 1 pour sel par ref ORCADPCB */
eda_global int modified; /* Flag != 0 si modif attribution des modules */
eda_global int ListModIsModified; /* Flag != 0 si modif liste des lib modules */
eda_global int modified; /* Flag != 0 si modif attribution des modules */
eda_global int ListModIsModified; /* Flag != 0 si modif liste des lib modules */
eda_global char alim[1024];
eda_global char alim[1024];
eda_global int nbcomp ; /* nombre de composants trouves */
eda_global int nblib ; /* nombre d'empreintes trouvees */
eda_global int composants_non_affectes ;/* nbre de composants non affectes */
eda_global int nbcomp; /* nombre de composants trouves */
eda_global int nblib; /* nombre d'empreintes trouvees */
eda_global int composants_non_affectes; /* nbre de composants non affectes */
eda_global wxString NameBuffer;
eda_global wxString NetInNameBuffer;
eda_global wxString NetInExtBuffer;
eda_global wxString PkgInExtBuffer;
eda_global wxString NetDirBuffer;
eda_global wxString NameBuffer;
eda_global wxString NetInNameBuffer;
eda_global wxString NetInExtBuffer;
eda_global wxString PkgInExtBuffer;
eda_global wxString NetDirBuffer;
eda_global wxString ExtRetroBuffer
eda_global wxString ExtRetroBuffer
#ifdef MAIN
( wxT(".stf") )
( wxT( ".stf" ) )
#endif
;
// Variables generales */
// Unused, for pcbnew compatibility:
eda_global Ki_PageDescr * SheetList[]
eda_global Ki_PageDescr* SheetList[]
#ifdef MAIN
= {NULL}
= { NULL }
#endif
;
// Unused, for pcbnew compatibility:
void Plume(int state);
void Plume( int state );
......@@ -39,7 +39,8 @@ private:
// Constructor and destructor
public:
WinEDA_CvpcbFrame(WinEDA_App * parent, const wxString & title);
WinEDA_CvpcbFrame(WinEDA_App * parent, const wxString & title,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE);
~WinEDA_CvpcbFrame();
void OnLeftClick(wxListEvent & event);
......@@ -180,7 +181,8 @@ public:
public:
WinEDA_DisplayFrame( wxWindow * father, WinEDA_App *parent,
const wxString & title,
const wxPoint& pos, const wxSize& size);
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE);
~WinEDA_DisplayFrame();
......@@ -194,6 +196,7 @@ public:
void OnLeftDClick(wxDC * DC, const wxPoint& MousePos);
bool OnRightClick(const wxPoint& MousePos, wxMenu * PopMenu);
void SetToolbars();
void GeneralControle( wxDC* DC, wxPoint Mouse );
void InstallOptionsDisplay(wxCommandEvent& event);
MODULE * Get_Module(const wxString & CmpName);
......
......@@ -96,12 +96,14 @@ bool KiConfigCvpcbFrame::Create( wxWindow* parent, wxWindowID id, const wxString
////@end KiConfigCvpcbFrame member initialisation
////@begin KiConfigCvpcbFrame creation
SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls();
GetSizer()->Fit(this);
GetSizer()->SetSizeHints(this);
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
Centre();
////@end KiConfigCvpcbFrame creation
return true;
......@@ -116,7 +118,7 @@ void KiConfigCvpcbFrame::CreateControls()
SetFont(*g_DialogFont);
////@begin KiConfigCvpcbFrame content construction
// Generated by DialogBlocks, 28/02/2006 16:11:39 (unregistered)
// Generated by DialogBlocks, 27/10/2007 10:35:43 (unregistered)
KiConfigCvpcbFrame* itemDialog1 = this;
......@@ -128,7 +130,7 @@ void KiConfigCvpcbFrame::CreateControls()
wxButton* itemButton4 = new wxButton( itemDialog1, SAVE_CFG, _("Save Cfg"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton4->SetForegroundColour(wxColour(198, 0, 0));
itemBoxSizer3->Add(itemButton4, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
itemBoxSizer3->Add(itemButton4, 0, wxGROW|wxALL, 5);
wxButton* itemButton5 = new wxButton( itemDialog1, ID_READ_OLDCFG, _("Read Cfg"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton5->SetForegroundColour(wxColour(0, 0, 255));
......@@ -136,14 +138,14 @@ void KiConfigCvpcbFrame::CreateControls()
wxButton* itemButton6 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton6->SetForegroundColour(wxColour(0, 128, 0));
itemBoxSizer3->Add(itemButton6, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxString m_NetFormatBoxStrings[] = {
_("&PcbNew"),
_("&ViewLogic"),
_("View &Net + Pkg")
};
m_NetFormatBox = new wxRadioBox( itemDialog1, FORMAT_NETLIST, _("NetList Formats:"), wxDefaultPosition, wxDefaultSize, 3, m_NetFormatBoxStrings, 1, wxRA_SPECIFY_COLS );
itemBoxSizer3->Add(itemButton6, 0, wxGROW|wxALL, 5);
wxArrayString m_NetFormatBoxStrings;
m_NetFormatBoxStrings.Add(_("&PcbNew"));
m_NetFormatBoxStrings.Add(_("&ViewLogic"));
m_NetFormatBoxStrings.Add(_("View &Net + Pkg"));
m_NetFormatBox = new wxRadioBox( itemDialog1, FORMAT_NETLIST, _("NetList Formats:"), wxDefaultPosition, wxDefaultSize, m_NetFormatBoxStrings, 1, wxRA_SPECIFY_COLS );
m_NetFormatBox->SetSelection(0);
itemBoxSizer3->Add(m_NetFormatBox, 0, wxGROW|wxALL, 5);
wxStaticBox* itemStaticBoxSizer8Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Files ext:"));
......@@ -154,71 +156,71 @@ void KiConfigCvpcbFrame::CreateControls()
itemBoxSizer2->Add(m_RightBoxSizer, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxHORIZONTAL);
m_RightBoxSizer->Add(itemBoxSizer10, 0, wxALIGN_CENTER_HORIZONTAL, 5);
m_RightBoxSizer->Add(itemBoxSizer10, 1, wxALIGN_CENTER_HORIZONTAL, 5);
wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer10->Add(itemBoxSizer11, 0, wxGROW|wxLEFT|wxTOP|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer11->Add(itemBoxSizer12, 0, wxALIGN_CENTER_HORIZONTAL, 5);
itemBoxSizer11->Add(itemBoxSizer12, 1, wxALIGN_CENTER_HORIZONTAL, 5);
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer12->Add(itemBoxSizer13, 0, wxALIGN_CENTER_HORIZONTAL, 5);
itemBoxSizer12->Add(itemBoxSizer13, 0, wxGROW, 5);
wxButton* itemButton14 = new wxButton( itemDialog1, DEL_LIB, _("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton14 = new wxButton( itemDialog1, DEL_LIB, _("Del"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton14->SetForegroundColour(wxColour(191, 0, 0));
itemBoxSizer13->Add(itemButton14, 0, wxGROW|wxLEFT|wxTOP|wxBOTTOM, 5);
wxButton* itemButton15 = new wxButton( itemDialog1, ADD_LIB, _("Add below"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton15 = new wxButton( itemDialog1, ADD_LIB, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton15->SetForegroundColour(wxColour(0, 128, 0));
itemBoxSizer13->Add(itemButton15, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
wxButton* itemButton16 = new wxButton( itemDialog1, INSERT_LIB, _("Add above"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton16 = new wxButton( itemDialog1, INSERT_LIB, _("Ins"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton16->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer13->Add(itemButton16, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer12->Add(itemBoxSizer17, 0, wxGROW|wxTOP, 5);
itemBoxSizer12->Add(itemBoxSizer17, 1, wxGROW|wxTOP, 5);
wxStaticText* itemStaticText18 = new wxStaticText( itemDialog1, wxID_STATIC, _("Libraries"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticText18->SetForegroundColour(wxColour(204, 0, 0));
itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
wxString* m_ListLibrStrings = NULL;
m_ListLibr = new wxListBox( itemDialog1, ID_LISTBOX, wxDefaultPosition, wxSize(-1, 200), 0, m_ListLibrStrings, wxLB_SINGLE );
itemBoxSizer17->Add(m_ListLibr, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxArrayString m_ListLibrStrings;
m_ListLibr = new wxListBox( itemDialog1, ID_LISTBOX, wxDefaultPosition, wxSize(-1, 200), m_ListLibrStrings, wxLB_SINGLE );
itemBoxSizer17->Add(m_ListLibr, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer10->Add(itemBoxSizer20, 0, wxGROW|wxTOP|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer20->Add(itemBoxSizer21, 0, wxALIGN_CENTER_HORIZONTAL, 5);
itemBoxSizer20->Add(itemBoxSizer21, 1, wxALIGN_CENTER_HORIZONTAL, 5);
wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer21->Add(itemBoxSizer22, 0, wxALIGN_CENTER_HORIZONTAL, 5);
itemBoxSizer21->Add(itemBoxSizer22, 0, wxGROW, 5);
wxButton* itemButton23 = new wxButton( itemDialog1, DEL_EQU, _("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton23 = new wxButton( itemDialog1, DEL_EQU, _("Del"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton23->SetForegroundColour(wxColour(196, 0, 0));
itemBoxSizer22->Add(itemButton23, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
wxButton* itemButton24 = new wxButton( itemDialog1, ADD_EQU, _("Add below"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton24 = new wxButton( itemDialog1, ADD_EQU, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton24->SetForegroundColour(wxColour(0, 128, 0));
itemBoxSizer22->Add(itemButton24, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
wxButton* itemButton25 = new wxButton( itemDialog1, INSERT_EQU, _("Add above"), wxDefaultPosition, wxDefaultSize, 0 );
wxButton* itemButton25 = new wxButton( itemDialog1, INSERT_EQU, _("Ins"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton25->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer22->Add(itemButton25, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer21->Add(itemBoxSizer26, 0, wxGROW|wxTOP, 5);
itemBoxSizer21->Add(itemBoxSizer26, 1, wxGROW|wxTOP, 5);
wxStaticText* itemStaticText27 = new wxStaticText( itemDialog1, wxID_STATIC, _("Equiv"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticText27->SetForegroundColour(wxColour(204, 0, 0));
itemBoxSizer26->Add(itemStaticText27, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
wxString* m_ListEquivStrings = NULL;
m_ListEquiv = new wxListBox( itemDialog1, ID_LISTBOX1, wxDefaultPosition, wxSize(-1, 200), 0, m_ListEquivStrings, wxLB_SINGLE );
itemBoxSizer26->Add(m_ListEquiv, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxArrayString m_ListEquivStrings;
m_ListEquiv = new wxListBox( itemDialog1, ID_LISTBOX1, wxDefaultPosition, wxSize(-1, 200), m_ListEquivStrings, wxLB_SINGLE );
itemBoxSizer26->Add(m_ListEquiv, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_FileExtBoxSizerH = new wxBoxSizer(wxHORIZONTAL);
m_RightBoxSizer->Add(m_FileExtBoxSizerH, 0, wxGROW, 5);
......
......@@ -35,11 +35,6 @@ class wxBoxSizer;
////@begin control identifiers
#define ID_DIALOG 10000
#define SYMBOL_KICONFIGCVPCBFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_KICONFIGCVPCBFRAME_TITLE _("Dialog")
#define SYMBOL_KICONFIGCVPCBFRAME_IDNAME ID_DIALOG
#define SYMBOL_KICONFIGCVPCBFRAME_SIZE wxSize(400, 300)
#define SYMBOL_KICONFIGCVPCBFRAME_POSITION wxDefaultPosition
#define SAVE_CFG 10001
#define ID_READ_OLDCFG 10002
#define FORMAT_NETLIST 10003
......@@ -51,6 +46,11 @@ class wxBoxSizer;
#define ADD_EQU 10008
#define INSERT_EQU 10009
#define ID_LISTBOX1 10011
#define SYMBOL_KICONFIGCVPCBFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
#define SYMBOL_KICONFIGCVPCBFRAME_TITLE _("Cvpcb Configuration")
#define SYMBOL_KICONFIGCVPCBFRAME_IDNAME ID_DIALOG
#define SYMBOL_KICONFIGCVPCBFRAME_SIZE wxSize(400, 300)
#define SYMBOL_KICONFIGCVPCBFRAME_POSITION wxDefaultPosition
////@end control identifiers
/*!
......
......@@ -221,7 +221,7 @@
<string name="proxy-Implementation filename">"dialog_cvpcb_config.cpp"</string>
<string name="proxy-Header filename">"dialog_cvpcb_config.h"</string>
<string name="proxy-XRC filename">""</string>
<string name="proxy-Title">"Dialog"</string>
<string name="proxy-Title">"Cvpcb Configuration"</string>
<bool name="proxy-Centre">1</bool>
<string name="proxy-Icon">""</string>
<bool name="proxy-Dialog units">0</bool>
......@@ -360,7 +360,7 @@
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
......@@ -477,7 +477,7 @@
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
......@@ -620,7 +620,7 @@
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">0</bool>
<bool name="proxy-wxRIGHT">0</bool>
......@@ -670,7 +670,7 @@
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">0</bool>
<bool name="proxy-wxRIGHT">0</bool>
......@@ -693,7 +693,7 @@
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Horizontal"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
......@@ -898,7 +898,7 @@
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">0</bool>
<bool name="proxy-wxRIGHT">0</bool>
......@@ -1027,7 +1027,7 @@
<long name="proxy-Height">200</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
......@@ -1082,7 +1082,7 @@
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">0</bool>
<bool name="proxy-wxRIGHT">0</bool>
......@@ -1105,7 +1105,7 @@
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Horizontal"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
......@@ -1310,7 +1310,7 @@
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">0</bool>
<bool name="proxy-wxRIGHT">0</bool>
......@@ -1439,7 +1439,7 @@
<long name="proxy-Height">200</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
......
......@@ -133,7 +133,7 @@ void WinEDA_FootprintDisplayOptionsFrame::CreateControls()
SetFont(*g_DialogFont);
////@begin WinEDA_FootprintDisplayOptionsFrame content construction
// Generated by DialogBlocks, 25/10/2007 10:39:07 (unregistered)
// Generated by DialogBlocks, 27/10/2007 09:57:04 (unregistered)
WinEDA_FootprintDisplayOptionsFrame* itemDialog1 = this;
......@@ -149,7 +149,7 @@ void WinEDA_FootprintDisplayOptionsFrame::CreateControls()
m_EdgesDisplayOptionStrings.Add(_("&Sketch"));
m_EdgesDisplayOption = new wxRadioBox( itemDialog1, EDGE_SELECT, _("Edges:"), wxDefaultPosition, wxDefaultSize, m_EdgesDisplayOptionStrings, 1, wxRA_SPECIFY_COLS );
m_EdgesDisplayOption->SetSelection(0);
MainBoxSizer->Add(m_EdgesDisplayOption, 1, wxALIGN_TOP|wxALL, 5);
MainBoxSizer->Add(m_EdgesDisplayOption, 0, wxALIGN_TOP|wxALL, 5);
wxArrayString m_TextDisplayOptionStrings;
m_TextDisplayOptionStrings.Add(_("&Line"));
......@@ -157,7 +157,7 @@ void WinEDA_FootprintDisplayOptionsFrame::CreateControls()
m_TextDisplayOptionStrings.Add(_("&Sketch"));
m_TextDisplayOption = new wxRadioBox( itemDialog1, TEXT_SELECT, _("Texts:"), wxDefaultPosition, wxDefaultSize, m_TextDisplayOptionStrings, 1, wxRA_SPECIFY_COLS );
m_TextDisplayOption->SetSelection(0);
MainBoxSizer->Add(m_TextDisplayOption, 1, wxALIGN_TOP|wxALL, 5);
MainBoxSizer->Add(m_TextDisplayOption, 0, wxALIGN_TOP|wxALL, 5);
ColumnBoxSizer = new wxBoxSizer(wxVERTICAL);
MainBoxSizer->Add(ColumnBoxSizer, 1, wxALIGN_TOP|wxLEFT|wxRIGHT|wxTOP, 5);
......@@ -168,14 +168,14 @@ void WinEDA_FootprintDisplayOptionsFrame::CreateControls()
m_IsShowPadNum = new wxCheckBox( itemDialog1, PADNUM_OPT, _("Display Pad &Num"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
m_IsShowPadNum->SetValue(false);
if (WinEDA_FootprintDisplayOptionsFrame::ShowToolTips())
if (ShowToolTips())
m_IsShowPadNum->SetToolTip(_("Display pad number"));
ColumnBoxSizer->Add(m_IsShowPadNum, 1, wxGROW|wxALL, 5);
ColumnBoxSizer->Add(5, 5, 0, wxGROW|wxTOP, 5);
wxButton* itemButton10 = new wxButton( itemDialog1, ID_SAVE_CONFIG, _("Save Cfg"), wxDefaultPosition, wxDefaultSize, 0 );
ColumnBoxSizer->Add(itemButton10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
ColumnBoxSizer->Add(itemButton10, 0, wxALIGN_LEFT|wxALL, 5);
wxStaticLine* itemStaticLine11 = new wxStaticLine( itemDialog1, ID_STATICLINE1, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
OuterBoxSizer->Add(itemStaticLine11, 0, wxGROW|wxALL, 5);
......
......@@ -10,10 +10,8 @@
<bool name="convert_images_to_xpm">0</bool>
<bool name="inline_images">0</bool>
<bool name="generate_cpp_for_xrc">0</bool>
<long name="working_mode">1</long>
<bool name="use_help_text_for_tooltips">1</bool>
<bool name="translate_strings">1</bool>
<bool name="make_unicode_strings">1</bool>
<bool name="extract_strings">0</bool>
<string name="user_name">"jean-pierre Charras"</string>
<string name="copyright_string">"License GNU"</string>
......@@ -215,7 +213,6 @@
<bool name="use-id-suffix">0</bool>
<string name="id-suffix">""</string>
<long name="use-xrc">0</long>
<long name="working-mode">0</long>
<string name="proxy-Id name">"ID_DIALOG"</string>
<long name="proxy-Id value">10000</long>
<string name="proxy-Class">"WinEDA_FootprintDisplayOptionsFrame"</string>
......@@ -236,13 +233,6 @@
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Texture">""</string>
<string name="proxy-Texture style">"Tiled"</string>
<bool name="proxy-wxDEFAULT_DIALOG_STYLE">1</bool>
<bool name="proxy-wxCAPTION">0</bool>
<bool name="proxy-wxRESIZE_BORDER">0</bool>
......@@ -353,11 +343,6 @@
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">"DisplayOpt.DisplayModEdge"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxRA_SPECIFY_ROWS">0</bool>
<bool name="proxy-wxRA_SPECIFY_COLS">1</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
......@@ -370,7 +355,7 @@
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
......@@ -416,11 +401,6 @@
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">"DisplayOpt.DisplayModText"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxRA_SPECIFY_ROWS">0</bool>
<bool name="proxy-wxRA_SPECIFY_COLS">1</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
......@@ -433,7 +413,7 @@
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
......@@ -496,11 +476,6 @@
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">"DisplayOpt.DisplayPadFill"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
......@@ -559,11 +534,6 @@
<string name="proxy-Tooltip text">"Display pad number"</string>
<string name="proxy-Data variable">"DisplayOpt.DisplayPadNum"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
......@@ -647,13 +617,6 @@
<bool name="proxy-Default">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
......@@ -681,7 +644,7 @@
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
......@@ -794,13 +757,6 @@
<bool name="proxy-Default">1</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">"FF0000"</string>
<string name="proxy-Font">""</string>
......@@ -860,13 +816,6 @@
<bool name="proxy-Default">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">"0000FF"</string>
<string name="proxy-Font">""</string>
......@@ -926,13 +875,6 @@
<bool name="proxy-Default">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
......
......@@ -29,21 +29,26 @@ EVT_TOOL( ID_CVPCB_SHOW3D_FRAME, WinEDA_BasePcbFrame::Show3D_Frame )
END_EVENT_TABLE()
/*********************************************************************/
/* Constructeur de WinEDA_DisplayFrame: la fenetre de visu du composant */
/*********************************************************************/
/***************************************************************************/
/* WinEDA_DisplayFrame: the frame to display the current focused footprint */
/***************************************************************************/
WinEDA_DisplayFrame::WinEDA_DisplayFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size ) :
WinEDA_BasePcbFrame( father, parent, CVPCB_DISPLAY_FRAME, title, pos, size )
const wxPoint& pos, const wxSize& size, long style ) :
WinEDA_BasePcbFrame( father, parent, CVPCB_DISPLAY_FRAME, title, pos, size, style )
{
m_FrameName = wxT( "CmpFrame" );
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines
m_Draw_Grid = TRUE; // TRUE pour avoir la axes dessinee
m_Draw_Sheet_Ref = FALSE; // TRUE pour avoir le cartouche dessin
SetIcon( wxIcon( wxT( "icon_cvpcb" ) ) ); // Give an icon
m_Draw_Axis = TRUE; // TRUE if we want the axis
m_Draw_Grid = TRUE; // TRUE if we want the grid
m_Draw_Sheet_Ref = FALSE; // TRUE if we want the sheet references
// Give an icon
#ifdef __WINDOWS__
SetIcon( wxICON( a_icon_cvpcb ) );
#else
SetIcon( wxICON( icon_cvpcb ) );
#endif
SetTitle( title );
m_Pcb = new BOARD( NULL, this );
......@@ -58,17 +63,16 @@ WinEDA_DisplayFrame::WinEDA_DisplayFrame( wxWindow* father, WinEDA_App* parent,
}
/*****************************************/
/* Fonctions de base de WinEDA_DisplayFrame */
/*****************************************/
// Destructeur
/******************************************/
WinEDA_DisplayFrame::~WinEDA_DisplayFrame()
/******************************************/
// Destructor
{
delete m_CurrentScreen;
delete m_Pcb;
m_Parent->m_CvpcbFrame->DrawFrame = NULL;
}
......@@ -77,7 +81,8 @@ WinEDA_DisplayFrame::~WinEDA_DisplayFrame()
void WinEDA_DisplayFrame::OnCloseWindow( wxCloseEvent& event )
/************************************************************/
/* Fermeture par icone ou systeme
/* Called when the frame is closed
* Save current settings (frame position and size
*/
{
wxPoint pos;
......@@ -162,12 +167,12 @@ void WinEDA_DisplayFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
bool WinEDA_DisplayFrame::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu )
/*********************************************************************************/
{
return true;
return true;
}
/****************************************************************/
void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
void WinEDA_DisplayFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
/****************************************************************/
{
wxSize delta;
......@@ -216,28 +221,28 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
m_CurrentScreen->m_O_Curseur = m_CurrentScreen->m_Curseur;
break;
case WXK_NUMPAD8: /* Deplacement curseur vers le haut */
case WXK_NUMPAD8: /* cursor moved up */
case WXK_UP:
DrawPanel->CalcScrolledPosition( Mouse.x, Mouse.y - delta.y,
&Mouse.x, &Mouse.y );
GRMouseWarp( DrawPanel, Mouse );
break;
case WXK_NUMPAD2: /* Deplacement curseur vers le bas */
case WXK_NUMPAD2: /* cursor moved down */
case WXK_DOWN:
DrawPanel->CalcScrolledPosition( Mouse.x, Mouse.y + delta.y,
&Mouse.x, &Mouse.y );
GRMouseWarp( DrawPanel, Mouse );
break;
case WXK_NUMPAD4: /* Deplacement curseur vers la gauche */
case WXK_NUMPAD4: /* cursor moved left */
case WXK_LEFT:
DrawPanel->CalcScrolledPosition( Mouse.x - delta.x, Mouse.y,
&Mouse.x, &Mouse.y );
GRMouseWarp( DrawPanel, Mouse );
break;
case WXK_NUMPAD6: /* Deplacement curseur vers la droite */
case WXK_NUMPAD6: /* cursor moved right */
case WXK_RIGHT:
DrawPanel->CalcScrolledPosition( Mouse.x + delta.x, Mouse.y,
&Mouse.x, &Mouse.y );
......@@ -246,9 +251,8 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
}
}
/* Recalcul de la position du curseur schema */
m_CurrentScreen->m_Curseur = curpos;
/* Placement sur la grille generale */
/* Put cursor on grid */
PutOnGrid( &m_CurrentScreen->m_Curseur );
if( m_CurrentScreen->IsRefreshReq() )
......@@ -276,7 +280,7 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
}
}
Affiche_Status_Box(); /* Affichage des coord curseur */
Affiche_Status_Box(); /* Display new cursor coordinates */
}
......@@ -284,10 +288,11 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
void WinEDA_DisplayFrame::Process_Special_Functions( wxCommandEvent& event )
/*************************************************************************/
/* Traite les selections d'outils et les commandes appelees du menu POPUP
/* Called when a tool is selected, or when a popup menu is clicked
* Currently : no action exists
*/
{
int id = event.GetId();
int id = event.GetId();
wxClientDC dc( DrawPanel );
......
......@@ -33,7 +33,6 @@ OBJECTS = $(TARGET).o \
setvisu.o\
dialog_display_options.o\
zoom.o \
visumod.o\
tracemod.o \
classpcb.o \
class_board.o \
......@@ -136,8 +135,6 @@ setvisu.o: setvisu.cpp $(DEPEND)
zoom.o: ../share/zoom.cpp $(DEPEND)
$(CC) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp
visumod.o: visumod.cpp $(DEPEND)
tracemod.o: ../pcbnew/tracemod.cpp ../include/gr_basic.h $(DEPEND)
$(CC) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
......
......@@ -17,7 +17,8 @@
void WinEDA_CvpcbFrame::CreateScreenCmp()
/*******************************************/
/* Creation de la fenetre d'affichage du composant
/* Create or Update the frame showing the current highlighted footprint
* and (if showed) the 3D display frame
*/
{
wxString msg, FootprintName;
......@@ -28,15 +29,13 @@ void WinEDA_CvpcbFrame::CreateScreenCmp()
if( DrawFrame == NULL )
{
DrawFrame = new WinEDA_DisplayFrame( this, m_Parent, _( "Module" ),
wxPoint( 0, 0 ), wxSize( 600, 400 ) );
wxPoint( 0, 0 ), wxSize( 600,
400 ),
KICAD_DEFAULT_DRAWFRAME_STYLE |
wxFRAME_FLOAT_ON_PARENT );
IsNew = TRUE;
DrawFrame->Show( TRUE );
}
else
DrawFrame->Maximize( FALSE );
DrawFrame->SetFocus(); /* Active entree clavier */
DrawFrame->Show( TRUE );
if( !FootprintName.IsEmpty() )
{
......@@ -44,19 +43,19 @@ void WinEDA_CvpcbFrame::CreateScreenCmp()
DrawFrame->SetTitle( msg );
STOREMOD* Module = GetModuleDescrByName( FootprintName );
msg = _( "Lib: " );
if( Module )
msg += Module->m_LibName;
else
msg += wxT( "???" );
DrawFrame->SetStatusText( msg, 0 );
if( DrawFrame->m_Pcb->m_Modules )
{
// there is only one module in the list
DrawFrame->m_Pcb->m_Modules->DeleteStructure();
DrawFrame->m_Pcb->m_Modules = NULL;
}
......@@ -73,3 +72,32 @@ void WinEDA_CvpcbFrame::CreateScreenCmp()
DrawFrame->m_Draw3DFrame->NewDisplay();
}
}
/*******************************************************************/
void WinEDA_DisplayFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
/*******************************************************************/
/* Draws the current highlighted footprint */
{
if( !m_Pcb )
return;
MODULE* Module = m_Pcb->m_Modules;
ActiveScreen = (PCB_SCREEN*) GetScreen();
if( EraseBg )
DrawPanel->EraseScreen( DC );
DrawPanel->DrawBackGround( DC );
if( Module )
{
Module->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_COPY );
Module->Display_Infos( this );
}
Affiche_Status_Box();
DrawPanel->Trace_Curseur( DC );
}
/************************************************/
/* Routines de visualisation du module courant */
/************************************************/
#include "fctsys.h"
#include "common.h"
#include "cvpcb.h"
#include "macros.h"
#include "pcbnew.h"
#include "protos.h"
/* defines locaux */
/* Variables locales */
/*******************************************************************/
void WinEDA_DisplayFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
/*******************************************************************/
/* Affiche le module courant */
{
if( !m_Pcb )
return;
MODULE* Module = m_Pcb->m_Modules;
ActiveScreen = (PCB_SCREEN*) GetScreen();
if( EraseBg )
DrawPanel->EraseScreen( DC );
DrawPanel->DrawBackGround( DC );
if( Module )
{
Module->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_COPY );
Module->Display_Infos( this );
}
Affiche_Status_Box();
DrawPanel->Trace_Curseur( DC );
}
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_set_status.cpp
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 11/02/2006 21:42:23
// RCS-ID:
// Copyright: License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 11/02/2006 21:42:23
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "dialog_set_status.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
////@begin includes
////@end includes
#include "dialog_set_status.h"
////@begin XPM images
////@end XPM images
/*!
* WinEDA_ConfigFrame type definition
*/
IMPLEMENT_DYNAMIC_CLASS( WinEDA_ConfigFrame, wxDialog )
/*!
* WinEDA_ConfigFrame event table definition
*/
BEGIN_EVENT_TABLE( WinEDA_ConfigFrame, wxDialog )
////@begin WinEDA_ConfigFrame event table entries
EVT_BUTTON( ID_BUTTON, WinEDA_ConfigFrame::OnButtonClick )
EVT_BUTTON( ID_BUTTON1, WinEDA_ConfigFrame::OnButton1Click )
EVT_BUTTON( ID_BUTTON2, WinEDA_ConfigFrame::OnButton2Click )
EVT_BUTTON( ID_BUTTON3, WinEDA_ConfigFrame::OnButton3Click )
////@end WinEDA_ConfigFrame event table entries
END_EVENT_TABLE()
/*!
* WinEDA_ConfigFrame constructors
*/
WinEDA_ConfigFrame::WinEDA_ConfigFrame( )
{
}
WinEDA_ConfigFrame::WinEDA_ConfigFrame( WinEDA_SchematicFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
m_Parent = parent;
m_LibListChanged = FALSE;
msg = _("from ") + EDA_Appl->m_CurrentOptionFile;
SetTitle(msg);
Create(parent, id, caption, pos, size, style);
}
/*!
* WinEDA_ConfigFrame creator
*/
bool WinEDA_ConfigFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
////@begin WinEDA_ConfigFrame member initialisation
m_CmpfileExtText = NULL;
m_NetfileExtText = NULL;
m_LibfileExtText = NULL;
m_SymbolfileExtText = NULL;
m_SchfileExtText = NULL;
m_ListLibr = NULL;
m_CmpfileExtText = NULL;
m_LibDirCtrl = NULL;
////@end WinEDA_ConfigFrame member initialisation
////@begin WinEDA_ConfigFrame creation
SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls();
GetSizer()->Fit(this);
GetSizer()->SetSizeHints(this);
Centre();
////@end WinEDA_ConfigFrame creation
return true;
}
/*!
* Control creation for WinEDA_ConfigFrame
*/
void WinEDA_ConfigFrame::CreateControls()
{
SetFont(*g_DialogFont);
////@begin WinEDA_ConfigFrame content construction
// Generated by DialogBlocks, 11/02/2006 22:06:21 (unregistered)
WinEDA_ConfigFrame* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
itemDialog1->SetSizer(itemBoxSizer2);
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer2->Add(itemBoxSizer3, 0, 0, 0);
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer3->Add(itemBoxSizer4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton5 = new wxButton( itemDialog1, ID_BUTTON, _("Save Cfg"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton5->SetForegroundColour(wxColour(204, 0, 0));
itemBoxSizer4->Add(itemButton5, 0, wxGROW|wxALL, 5);
wxString itemRadioBox6Strings[] = {
_("&PcbNew"),
_("&OrcadPcb2"),
_("&CadStar"),
_("&Spice"),
_("Other")
};
wxRadioBox* itemRadioBox6 = new wxRadioBox( itemDialog1, ID_RADIOBOX, _("NetList Formats:"), wxDefaultPosition, wxDefaultSize, 5, itemRadioBox6Strings, 1, wxRA_SPECIFY_COLS );
itemBoxSizer4->Add(itemRadioBox6, 0, wxGROW|wxALL, 5);
wxStaticBox* itemStaticBoxSizer7Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Files ext:"));
wxStaticBoxSizer* itemStaticBoxSizer7 = new wxStaticBoxSizer(itemStaticBoxSizer7Static, wxVERTICAL);
itemBoxSizer4->Add(itemStaticBoxSizer7, 0, wxGROW|wxALL, 5);
m_CmpfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Cmp file Ext: "), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add(m_CmpfileExtText, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
m_NetfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Net file Ext: "), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add(m_NetfileExtText, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
m_LibfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Library file Ext: "), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add(m_LibfileExtText, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
m_SymbolfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Symbol file Ext: "), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add(m_SymbolfileExtText, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
m_SchfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Schematic file Ext: "), wxDefaultPosition, wxDefaultSize, 0 );
m_SchfileExtText->Enable(false);
itemStaticBoxSizer7->Add(m_SchfileExtText, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer3->Add(itemBoxSizer13, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer13->Add(itemBoxSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxButton* itemButton15 = new wxButton( itemDialog1, ID_BUTTON1, _("Del"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton15->SetForegroundColour(wxColour(204, 0, 0));
itemBoxSizer14->Add(itemButton15, 0, wxGROW|wxALL, 5);
wxButton* itemButton16 = new wxButton( itemDialog1, ID_BUTTON2, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton16->SetForegroundColour(wxColour(0, 128, 0));
itemBoxSizer14->Add(itemButton16, 0, wxGROW|wxALL, 5);
wxButton* itemButton17 = new wxButton( itemDialog1, ID_BUTTON3, _("Ins"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton17->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer14->Add(itemButton17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxStaticText* itemStaticText18 = new wxStaticText( itemDialog1, wxID_STATIC, _("Libraries:"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticText18->SetForegroundColour(wxColour(196, 0, 0));
itemBoxSizer13->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
wxString* m_ListLibrStrings = NULL;
m_ListLibr = new wxListBox( itemDialog1, ID_LISTBOX, wxDefaultPosition, wxSize(-1, 250), 0, m_ListLibrStrings, wxLB_SINGLE );
itemBoxSizer13->Add(m_ListLibr, 0, wxGROW|wxALL, 5);
m_CmpfileExtText = new wxStaticText( itemDialog1, wxID_STATIC, _("Library files path:"), wxDefaultPosition, wxDefaultSize, 0 );
m_CmpfileExtText->SetForegroundColour(wxColour(198, 0, 0));
itemBoxSizer2->Add(m_CmpfileExtText, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_LibDirCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer2->Add(m_LibDirCtrl, 0, wxGROW|wxALL, 5);
////@end WinEDA_ConfigFrame content construction
}
/*!
* Should we show tooltips?
*/
bool WinEDA_ConfigFrame::ShowToolTips()
{
return true;
}
/*!
* Get bitmap resources
*/
wxBitmap WinEDA_ConfigFrame::GetBitmapResource( const wxString& name )
{
// Bitmap retrieval
////@begin WinEDA_ConfigFrame bitmap retrieval
wxUnusedVar(name);
return wxNullBitmap;
////@end WinEDA_ConfigFrame bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon WinEDA_ConfigFrame::GetIconResource( const wxString& name )
{
// Icon retrieval
////@begin WinEDA_ConfigFrame icon retrieval
wxUnusedVar(name);
return wxNullIcon;
////@end WinEDA_ConfigFrame icon retrieval
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON
*/
void WinEDA_ConfigFrame::OnButtonClick( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON in WinEDA_ConfigFrame.
// Before editing this code, remove the block markers.
event.Skip();
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON in WinEDA_ConfigFrame.
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1
*/
void WinEDA_ConfigFrame::OnButton1Click( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1 in WinEDA_ConfigFrame.
// Before editing this code, remove the block markers.
event.Skip();
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1 in WinEDA_ConfigFrame.
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON2
*/
void WinEDA_ConfigFrame::OnButton2Click( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON2 in WinEDA_ConfigFrame.
// Before editing this code, remove the block markers.
event.Skip();
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON2 in WinEDA_ConfigFrame.
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON3
*/
void WinEDA_ConfigFrame::OnButton3Click( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON3 in WinEDA_ConfigFrame.
// Before editing this code, remove the block markers.
event.Skip();
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON3 in WinEDA_ConfigFrame.
}
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_set_status.h
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 11/02/2006 21:42:23
// RCS-ID:
// Copyright: License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 11/02/2006 21:42:23
#ifndef _DIALOG_SET_STATUS_H_
#define _DIALOG_SET_STATUS_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "dialog_set_status.h"
#endif
/*!
* Includes
*/
////@begin includes
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define SYMBOL_WINEDA_CONFIGFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
#define SYMBOL_WINEDA_CONFIGFRAME_TITLE _("from ")
#define SYMBOL_WINEDA_CONFIGFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_CONFIGFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_CONFIGFRAME_POSITION wxDefaultPosition
#define ID_BUTTON 10001
#define ID_RADIOBOX 10006
#define ID_BUTTON1 10002
#define ID_BUTTON2 10003
#define ID_BUTTON3 10004
#define ID_LISTBOX 10005
#define ID_TEXTCTRL 10007
////@end control identifiers
/*!
* Compatibility
*/
#ifndef wxCLOSE_BOX
#define wxCLOSE_BOX 0x1000
#endif
/*!
* WinEDA_ConfigFrame class declaration
*/
class WinEDA_ConfigFrame: public wxDialog
{
DECLARE_DYNAMIC_CLASS( WinEDA_ConfigFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
WinEDA_ConfigFrame( );
WinEDA_ConfigFrame( WinEDA_SchematicFrame* parent, wxWindowID id = SYMBOL_WINEDA_CONFIGFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_CONFIGFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_CONFIGFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_CONFIGFRAME_SIZE, long style = SYMBOL_WINEDA_CONFIGFRAME_STYLE );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_CONFIGFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_CONFIGFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_CONFIGFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_CONFIGFRAME_SIZE, long style = SYMBOL_WINEDA_CONFIGFRAME_STYLE );
/// Creates the controls and sizers
void CreateControls();
////@begin WinEDA_ConfigFrame event handler declarations
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON
void OnButtonClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1
void OnButton1Click( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON2
void OnButton2Click( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON3
void OnButton3Click( wxCommandEvent& event );
////@end WinEDA_ConfigFrame event handler declarations
////@begin WinEDA_ConfigFrame member function declarations
/// Retrieves bitmap resources
wxBitmap GetBitmapResource( const wxString& name );
/// Retrieves icon resources
wxIcon GetIconResource( const wxString& name );
////@end WinEDA_ConfigFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
////@begin WinEDA_ConfigFrame member variables
wxStaticText* m_CmpfileExtText;
wxStaticText* m_NetfileExtText;
wxStaticText* m_LibfileExtText;
wxStaticText* m_SymbolfileExtText;
wxStaticText* m_SchfileExtText;
wxListBox* m_ListLibr;
wxStaticText* m_CmpfileExtText;
wxTextCtrl* m_LibDirCtrl;
////@end WinEDA_ConfigFrame member variables
};
#endif
// _DIALOG_SET_STATUS_H_
/***************************************************/
/* EESchema: */
/* Edition des textes sur Composants en Schematique */
/****************************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "wx/checklst.h"
#include "protos.h"
/* Fonctions exportees */
/* Fonctions locales */
static void AbortMoveCmpField( WinEDA_DrawFrame* frame, wxDC* DC );
static void MoveCmpField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
/* variables locales */
static PartTextStruct* CurrentField;
static int Multiflag;
static int TextFieldSize = DEFAULT_SIZE_TEXT;
static wxPoint OldPos;
/* Classe de la frame des proprits d'un composant en librairie */
enum id_cmpedit {
ID_SCHEDIT_NOTEBOOK = 3200,
ID_PANEL_BASIC,
ID_PANEL_REFERENCE,
ID_PANEL_VALUE,
ID_PANEL_FIELD1,
ID_PANEL_FIELD2,
ID_PANEL_FIELD3,
ID_PANEL_FIELD4,
ID_PANEL_FIELD5,
ID_PANEL_FIELD6,
ID_PANEL_FIELD7,
ID_PANEL_FIELD8,
ID_PANEL_MODULEPCB,
ID_PANEL_SUBSCHEMATIC,
ID_CLOSE_CMP_PROPERTIES,
ID_ACCEPT_CMP_PROPERTIES,
ID_RESTORE_CMP_DEFAULTS
};
/************************************/
/* class WinEDA_PartPropertiesFrame */
/************************************/
class WinEDA_ComponentPropertiesFrame : public wxDialog
{
private:
WinEDA_SchematicFrame* m_Parent;
EDA_SchComponentStruct* m_Cmp;
EDA_LibComponentStruct* m_LibEntry;
wxCheckBox* m_ConvertButt;
wxRadioBox* m_SelectUnit;
wxRadioBox* m_MirrorUnit;
wxRadioBox* m_OrientUnit;
wxNotebook* m_NoteBook;
WinEDA_EnterText* m_RefInLib;
wxPanel* m_PanelBasic;
wxPanel* m_PanelField[NUMBER_OF_FIELDS];
wxCheckBox* ShowFieldText[NUMBER_OF_FIELDS];
wxCheckBox* VorientFieldText[NUMBER_OF_FIELDS];
WinEDA_GraphicTextCtrl* FieldTextCtrl[NUMBER_OF_FIELDS];
WinEDA_PositionCtrl* FieldPosition[NUMBER_OF_FIELDS];
int FieldFlags[NUMBER_OF_FIELDS];
int FieldOrient[NUMBER_OF_FIELDS];
public:
// Constructor and destructor
WinEDA_ComponentPropertiesFrame( WinEDA_SchematicFrame* parent, wxPoint& pos,
EDA_SchComponentStruct* cmp );
~WinEDA_ComponentPropertiesFrame()
{
}
private:
void BuildPanelBasic();
void ComponentPropertiesAccept( wxCommandEvent& event );
void SetInitCmp( wxCommandEvent& event );
void OnQuit( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE( WinEDA_ComponentPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_CMP_PROPERTIES, WinEDA_ComponentPropertiesFrame::ComponentPropertiesAccept )
EVT_BUTTON( ID_CLOSE_CMP_PROPERTIES, WinEDA_ComponentPropertiesFrame::OnQuit )
EVT_BUTTON( ID_RESTORE_CMP_DEFAULTS, WinEDA_ComponentPropertiesFrame::SetInitCmp )
END_EVENT_TABLE()
/**********************************************************************/
void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos,
EDA_SchComponentStruct* cmp )
/*********************************************************************/
/* Create the dialog box for the current component edition
*/
{
parent->DrawPanel->m_IgnoreMouseEvents = TRUE;
if( cmp->Type() != DRAW_LIB_ITEM_STRUCT_TYPE )
{
DisplayError( parent,
wxT( "InstallCmpeditFrame() error: This struct is not a component" ) );
}
else
{
WinEDA_ComponentPropertiesFrame* frame =
new WinEDA_ComponentPropertiesFrame( parent, pos, cmp );
frame->ShowModal();
frame->Destroy();
}
parent->DrawPanel->m_IgnoreMouseEvents = FALSE;
}
#define XSIZE 370
#define YSIZE 300
/***********************************************************************************/
WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame(
WinEDA_SchematicFrame* parent, wxPoint& framepos, EDA_SchComponentStruct* cmp ) :
wxDialog( parent, -1, _( "Component properties" ), framepos,
wxSize( XSIZE, YSIZE ), DIALOG_STYLE )
/***********************************************************************************/
{
wxPoint pos, postmp;
wxLayoutConstraints* c;
wxPoint cmp_pos;
int ii;
Centre();
m_Parent = parent;
m_Cmp = cmp;
cmp_pos = m_Cmp->m_Pos;
m_LibEntry = FindLibPart( m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
if( m_LibEntry == NULL )
{
SetTitle( _( "Component properties (Not found in lib)" ) );
}
SetAutoLayout( TRUE );
m_NoteBook = new wxNotebook( this, ID_SCHEDIT_NOTEBOOK,
wxDefaultPosition, wxSize( XSIZE - 6, YSIZE - 70 ) );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 4 );
c->right.SameAs( this, wxRight, 4 );
c->top.SameAs( this, wxTop, 4 );
c->bottom.SameAs( this, wxBottom, 40 );
m_NoteBook->SetConstraints( c );
m_NoteBook->SetAutoLayout( TRUE );
/* Creation des boutons de commande */
pos.x = 40; pos.y = YSIZE - 60;
wxButton* GButton = new wxButton( this, ID_CLOSE_CMP_PROPERTIES,
_( "Close" ), pos );
GButton->SetForegroundColour( *wxBLUE );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
GButton->SetConstraints( c );
pos.x += GButton->GetDefaultSize().x + 10;
wxButton* MButton = new wxButton( this, ID_RESTORE_CMP_DEFAULTS,
_( "Defaults" ), pos );
MButton->SetForegroundColour( *wxRED );
c = new wxLayoutConstraints;
c->left.SameAs( GButton, wxRight, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
MButton->SetConstraints( c );
pos.x += MButton->GetDefaultSize().x + 10;
wxButton* Button = new wxButton( this, ID_ACCEPT_CMP_PROPERTIES,
_( "OK" ), pos );
Button->SetForegroundColour( *wxBLUE );
c = new wxLayoutConstraints;
c->left.SameAs( MButton, wxRight, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
Button->SetConstraints( c );
// Add panel Basic
BuildPanelBasic();
m_NoteBook->AddPage( m_PanelBasic, _( "Options" ), TRUE );
// Add panel Fields
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
{
m_PanelField[ii] = new wxPanel( m_NoteBook, ID_PANEL_REFERENCE + ii );
c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
m_PanelField[ii]->SetConstraints( c );
m_NoteBook->AddPage( m_PanelField[ii],
DrawPartStruct::ReturnFieldName( ii ), FALSE );
pos.x = 10; pos.y = 20;
ShowFieldText[ii] = new wxCheckBox( m_PanelField[ii], -1,
_( "Show Text" ), pos );
if( (m_Cmp->m_Field[ii].m_Attributs & TEXT_NO_VISIBLE ) == 0 )
ShowFieldText[ii]->SetValue( TRUE );
pos.x += 150;
VorientFieldText[ii] = new wxCheckBox( m_PanelField[ii], -1,
_( "Vertical" ), pos );
if( m_Cmp->m_Field[ii].m_Orient )
VorientFieldText[ii]->SetValue( TRUE );
pos.x = 10; pos.y += 50;
wxPoint field_pos;
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl( m_PanelField[ii],
DrawPartStruct::ReturnFieldName( ii ),
m_Cmp->m_Field[ii].m_Text,
m_Cmp->m_Field[ii].m_Size.x,
g_UnitMetric,
pos, 200, TRUE );
field_pos.x = m_Cmp->m_Field[ii].m_Pos.x - cmp_pos.x;
field_pos.y = m_Cmp->m_Field[ii].m_Pos.y - cmp_pos.y;
if( m_Cmp->m_Field[ii].m_Text == wxEmptyString ) // Field non initialis, set pos a 0,0)
field_pos = wxPoint( 0, 0 );
FieldPosition[ii] = new WinEDA_PositionCtrl( m_PanelField[ii], _( "Pos" ),
field_pos,
g_UnitMetric,
wxPoint( pos.x + 150, pos.y + 32 ),
m_Parent->m_InternalUnits );
}
if( m_LibEntry && m_LibEntry->m_Options == ENTRY_POWER )
FieldTextCtrl[VALUE]->Enable( FALSE );
}
/************************************************************************/
void WinEDA_ComponentPropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) )
/************************************************************************/
{
// true is to force the frame to close
Close( true );
}
/**********************************************************/
void WinEDA_ComponentPropertiesFrame::BuildPanelBasic()
/**********************************************************/
/* create the basic panel for component properties editing
*/
{
wxPoint pos, postmp;
int ii, jj;
m_PanelBasic = new wxPanel( m_NoteBook, ID_PANEL_BASIC );
wxLayoutConstraints* c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
m_PanelBasic->SetConstraints( c );
pos.x = 5; pos.y = 15;
#define NB_MAX_UNIT 16
int nb_units = m_LibEntry ? MAX( m_LibEntry->m_UnitCount, 1 ) : 0;
wxString list_units[NB_MAX_UNIT];
if( nb_units > 16 )
nb_units = 16;
for( ii = 0; ii < NB_MAX_UNIT; ii++ )
list_units[ii] << _( "Unit" ) << (ii + 1);
m_SelectUnit = new wxRadioBox( m_PanelBasic, -1, _( "Unit:" ),
pos, wxSize( -1, -1 ),
(nb_units < 8 ) ? 8 : nb_units, list_units, 1 );
for( ii = nb_units; ii < 8; ii++ )
{
m_SelectUnit->Enable( ii, FALSE ); // Disable non existant units
}
m_SelectUnit->SetSelection( m_Cmp->m_Multi - 1 );
m_SelectUnit->GetSize( &ii, &jj );
pos.x += ii + 5; postmp = pos;
wxString list_orient[4] = { wxT( "0" ), wxT( "+90" ), wxT( "180" ), wxT( "-90" ) };
pos.x += 45; pos.y = 15;
m_OrientUnit = new wxRadioBox( m_PanelBasic, -1, _( "Orient:" ),
pos, wxSize( -1, -1 ), 4, list_orient, 1 );
ii = m_Cmp->GetRotationMiroir() & ~(CMP_MIROIR_X | CMP_MIROIR_Y);
if( ii == CMP_ORIENT_90 )
m_OrientUnit->SetSelection( 1 );
else if( ii == CMP_ORIENT_180 )
m_OrientUnit->SetSelection( 2 );
else if( ii == CMP_ORIENT_270 )
m_OrientUnit->SetSelection( 3 );
m_OrientUnit->GetSize( &ii, &jj );
pos.x += ii + 30;
wxString list_mirror[3] = { _( "Normal" ), _( "Mirror --" ), _( "Mirror |" ) };
m_MirrorUnit = new wxRadioBox( m_PanelBasic, -1, _( "Mirror:" ),
pos, wxSize( -1, -1 ), 3, list_mirror, 1 );
ii = m_Cmp->GetRotationMiroir() & (CMP_MIROIR_X | CMP_MIROIR_Y);
if( ii == CMP_MIROIR_X )
m_MirrorUnit->SetSelection( 1 );
else if( ii == CMP_MIROIR_Y )
m_MirrorUnit->SetSelection( 2 );
// Positionnement de la selection normal/convert
m_OrientUnit->GetSize( &ii, &jj );
pos = postmp;
pos.y += jj + 10;
m_ConvertButt = new wxCheckBox( m_PanelBasic, -1, _( "Convert" ), pos );
if( m_Cmp->m_Convert > 1 )
m_ConvertButt->SetValue( TRUE );
if( (m_LibEntry == NULL) || LookForConvertPart( m_LibEntry ) <= 1 )
{
m_ConvertButt->Enable( FALSE );
}
// Show the "Parts Locked" option:
if( m_LibEntry && m_LibEntry->m_UnitSelectionLocked )
{
new wxStaticText( m_PanelBasic, -1, _( "Parts are locked" ),
wxPoint( m_MirrorUnit->GetRect().x, pos.y ) );
}
// Positionnement de la reference en librairie
m_ConvertButt->GetSize( &ii, &jj );
pos.y += jj + 20;
m_RefInLib = new WinEDA_EnterText( m_PanelBasic, _( "Chip Name:" ),
m_Cmp->m_ChipName,
pos, wxSize( XSIZE - pos.x - 30, -1 ) );
}
/***********************************************************************************/
void WinEDA_ComponentPropertiesFrame::ComponentPropertiesAccept( wxCommandEvent& event )
/***********************************************************************************/
/* Update the new parameters for the current edited component
*/
{
wxPoint cmp_pos = m_Cmp->m_Pos;
wxClientDC dc( m_Parent->DrawPanel );
wxString newname;
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
newname = m_RefInLib->GetValue();
newname.MakeUpper();
newname.Replace( wxT( " " ), wxT( "_" ) );
if( newname.IsEmpty() )
DisplayError( this, _( "No Component Name!" ) );
else if( newname.CmpNoCase( m_Cmp->m_ChipName ) )
{
if( FindLibPart( newname.GetData(), wxEmptyString, FIND_ALIAS ) == NULL )
{
wxString msg;
msg.Printf( _( "Component [%s] not found!" ), newname.GetData() );
DisplayError( this, msg );
}
else // Changement de composant!
{
m_Cmp->m_ChipName = newname;
}
}
// Mise a jour de la representation:
if( m_ConvertButt->IsEnabled() )
(m_ConvertButt->GetValue() == TRUE) ?
m_Cmp->m_Convert = 2 : m_Cmp->m_Convert = 1;
//Mise a jour de la selection de l'lment dans le boitier
if( m_Cmp->m_Multi )
m_Cmp->m_Multi = m_SelectUnit->GetSelection() + 1;
//Mise a jour de l'orientation:
switch( m_OrientUnit->GetSelection() )
{
case 0:
m_Cmp->SetRotationMiroir( CMP_ORIENT_0 );
break;
case 1:
m_Cmp->SetRotationMiroir( CMP_ORIENT_90 );
break;
case 2:
m_Cmp->SetRotationMiroir( CMP_ORIENT_180 );
break;
case 3:
m_Cmp->SetRotationMiroir( CMP_ORIENT_270 );
break;
}
switch( m_MirrorUnit->GetSelection() )
{
case 0:
break;
case 1:
m_Cmp->SetRotationMiroir( CMP_MIROIR_X );
break;
case 2:
m_Cmp->SetRotationMiroir( CMP_MIROIR_Y );
break;
}
// Mise a jour des textes
for( int ii = REFERENCE; ii < NUMBER_OF_FIELDS; ii++ )
{
if( ii == REFERENCE ) // la reference ne peut etre vide
{
if( !FieldTextCtrl[ii]->GetText().IsEmpty() )
m_Cmp->m_Field[ii].m_Text = FieldTextCtrl[ii]->GetText();
}
else if( ii == VALUE ) // la valeur ne peut etre vide et ne peut etre change sur un POWER
{
EDA_LibComponentStruct* Entry = FindLibPart( m_Cmp->m_ChipName.GetData(
), wxEmptyString, FIND_ROOT );
if( Entry && (Entry->m_Options == ENTRY_POWER) )
m_Cmp->m_Field[ii].m_Text = m_Cmp->m_ChipName;
else if( !FieldTextCtrl[ii]->GetText().IsEmpty() )
{
m_Cmp->m_Field[ii].m_Text = FieldTextCtrl[ii]->GetText();
}
}
else
m_Cmp->m_Field[ii].m_Text = FieldTextCtrl[ii]->GetText();
m_Cmp->m_Field[ii].m_Size.x =
m_Cmp->m_Field[ii].m_Size.y = FieldTextCtrl[ii]->GetTextSize();
if( ShowFieldText[ii]->GetValue() )
m_Cmp->m_Field[ii].m_Attributs &= ~TEXT_NO_VISIBLE;
else
m_Cmp->m_Field[ii].m_Attributs |= TEXT_NO_VISIBLE;
m_Cmp->m_Field[ii].m_Orient = VorientFieldText[ii]->GetValue() ? 1 : 0;
m_Cmp->m_Field[ii].m_Pos = FieldPosition[ii]->GetValue();
m_Cmp->m_Field[ii].m_Pos.x += cmp_pos.x;
m_Cmp->m_Field[ii].m_Pos.y += cmp_pos.y;
}
m_Parent->m_CurrentScreen->SetModify();
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
m_Parent->TestDanglingEnds( m_Parent->m_CurrentScreen->EEDrawList, &dc );
Close();
}
/************************************************************************************/
void WinEDA_SchematicFrame::StartMoveCmpField( PartTextStruct* Field, wxDC* DC )
/************************************************************************************/
/* Prepare le deplacement du texte en cours d'edition
*/
{
EDA_LibComponentStruct* Entry;
CurrentField = Field;
if( Field == NULL )
return;
if( Field->m_Text == wxEmptyString )
{
DisplayError( this, _( "No Field to move" ), 10 );
return;
}
OldPos = Field->m_Pos;
Multiflag = 0;
if( Field->m_FieldId == REFERENCE )
{
Entry = FindLibPart( ( (EDA_SchComponentStruct*) Field->m_Parent )->m_ChipName.GetData(),
wxEmptyString, FIND_ROOT );
if( Entry != NULL )
{
if( Entry->m_UnitCount > 1 )
Multiflag = 1;
}
}
DrawPanel->ForceCloseManageCurseur = AbortMoveCmpField;
DrawPanel->ManageCurseur = MoveCmpField;
Field->m_Flags = IS_MOVED;
}
/**********************************************************************************/
void WinEDA_SchematicFrame::EditCmpFieldText( PartTextStruct* Field, wxDC* DC )
/**********************************************************************************/
/* Routine de changement du texte selectionne */
{
int FieldNumber, flag;
EDA_LibComponentStruct* Entry;
if( Field == NULL )
{
DisplayError( this, _( "No Field To Edit" ), 10 );
return;
}
FieldNumber = Field->m_FieldId;
if( FieldNumber == VALUE )
{
Entry = FindLibPart( ( (EDA_SchComponentStruct*) Field->m_Parent )->m_ChipName.GetData(),
wxEmptyString, FIND_ROOT );
if( Entry && (Entry->m_Options == ENTRY_POWER) )
{
DisplayInfo( this,
_(
"Part is a POWER, value cannot be modified!\nYou must create a new power" )
);
return;
}
}
flag = 0;
if( FieldNumber == REFERENCE )
{
Entry = FindLibPart( ( (EDA_SchComponentStruct*) Field->m_Parent )->m_ChipName.GetData(),
wxEmptyString, FIND_ROOT );
if( Entry != NULL )
{
if( Entry->m_UnitCount > 1 )
flag = 1;
}
}
wxString newtext = Field->m_Text;
Get_Message( DrawPartStruct::ReturnFieldName( FieldNumber ), newtext, this );
DrawTextField( DrawPanel, DC, Field, flag, g_XorMode );
if( !newtext.IsEmpty() )
{
if( Field->m_Text.IsEmpty() )
{
Field->m_Pos = ( (EDA_SchComponentStruct*) Field->m_Parent )->m_Pos;
Field->m_Size.x = Field->m_Size.y = TextFieldSize;
}
Field->m_Text = newtext;
}
else /* Nouveau texte NULL */
{
if( FieldNumber == REFERENCE )
{
DisplayError( this, _( "Reference needed !, No change" ) );
}
else if( FieldNumber == VALUE )
{
DisplayError( this, _( "Value needed !, No change" ) );
}
else
{
Field->m_Text = wxT( "~" );
}
}
DrawTextField( DrawPanel, DC, Field, flag, g_XorMode );
( (EDA_SchComponentStruct*) Field->m_Parent )->Display_Infos( this );
m_CurrentScreen->SetModify();
}
/************************************************************************/
static void MoveCmpField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
/************************************************************************/
/* Routine de deplacement d'un texte type Field.
* Celle routine est normalement attachee au deplacement du curseur
*/
{
#define TRF ( (EDA_SchComponentStruct*) CurrentField->m_Parent )->m_Transform
wxPoint pos;
int x1, y1;
int FieldNumber;
if( CurrentField == NULL )
return;
FieldNumber = CurrentField->m_FieldId;
/* Effacement: */
if( erase )
DrawTextField( panel, DC, CurrentField, Multiflag, g_XorMode );
pos = ( (EDA_SchComponentStruct*) CurrentField->m_Parent )->m_Pos;
/* Les positions sont caculees par la matrice TRANSPOSEE de la matrice
* de rotation-miroir */
x1 = panel->GetScreen()->m_Curseur.x - pos.x;
y1 = panel->GetScreen()->m_Curseur.y - pos.y;
CurrentField->m_Pos.x = pos.x + TRF[0][0] * x1 + TRF[1][0] * y1;
CurrentField->m_Pos.y = pos.y + TRF[0][1] * x1 + TRF[1][1] * y1;
DrawTextField( panel, DC, CurrentField, Multiflag, g_XorMode );
}
/******************************************************************/
static void AbortMoveCmpField( WinEDA_DrawFrame* frame, wxDC* DC )
/******************************************************************/
{
frame->DrawPanel->ForceCloseManageCurseur = NULL;
frame->DrawPanel->ManageCurseur = NULL;
if( CurrentField )
{
DrawTextField( frame->DrawPanel, DC, CurrentField, Multiflag, g_XorMode );
CurrentField->m_Flags = 0;
CurrentField->m_Pos = OldPos;
DrawTextField( frame->DrawPanel, DC, CurrentField, Multiflag, GR_DEFAULT_DRAWMODE );
}
CurrentField = NULL;
}
/*********************************************************************************/
void WinEDA_SchematicFrame::RotateCmpField( PartTextStruct* Field, wxDC* DC )
/*********************************************************************************/
{
int FieldNumber, flag;
EDA_LibComponentStruct* Entry;
if( Field == NULL )
return;
if( Field->m_Text == wxEmptyString )
return;
FieldNumber = Field->m_FieldId;
flag = 0;
if( FieldNumber == REFERENCE )
{
Entry = FindLibPart( ( (EDA_SchComponentStruct*) Field->m_Parent )->m_ChipName.GetData(),
wxEmptyString, FIND_ROOT );
if( Entry != NULL )
{
if( Entry->m_UnitCount > 1 )
flag = 1;
}
}
DrawTextField( DrawPanel, DC, Field, flag, g_XorMode );
if( Field->m_Orient == TEXT_ORIENT_HORIZ )
Field->m_Orient = TEXT_ORIENT_VERT;
else
Field->m_Orient = TEXT_ORIENT_HORIZ;
DrawTextField( DrawPanel, DC, Field, flag, g_XorMode );
GetScreen()->SetModify();
}
/***************************************************************/
void PartTextStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
/***************************************************************/
{
int FieldNumber, flag;
EDA_LibComponentStruct* Entry;
frame->DrawPanel->ManageCurseur = NULL;
frame->DrawPanel->ForceCloseManageCurseur = NULL;
FieldNumber = m_FieldId;
flag = 0;
if( FieldNumber == REFERENCE )
{
Entry = FindLibPart( ( (EDA_SchComponentStruct*) m_Parent )->m_ChipName.GetData(),
wxEmptyString, FIND_ROOT );
if( Entry != NULL )
{
if( Entry->m_UnitCount > 1 )
flag = 1;
}
}
DrawTextField( frame->DrawPanel, DC, this, flag, GR_DEFAULT_DRAWMODE );
m_Flags = 0;
frame->GetScreen()->SetCurItem( NULL );
frame->GetScreen()->SetModify();
CurrentField = NULL;
}
/**************************************************************************************************/
void WinEDA_SchematicFrame::EditComponentReference( EDA_SchComponentStruct* DrawLibItem, wxDC* DC )
/**************************************************************************************************/
/* Edit the component text reference*/
{
wxString msg;
EDA_LibComponentStruct* Entry;
int flag = 0;
if( DrawLibItem == NULL )
return;
Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
if( Entry == NULL )
return;
if( Entry->m_UnitCount > 1 )
flag = 1;
PartTextStruct* TextField = &DrawLibItem->m_Field[REFERENCE];
msg = TextField->m_Text;
Get_Message( _( "Reference" ), msg, this );
if( !msg.IsEmpty() ) // New text entered
{
DrawTextField( DrawPanel, DC, &DrawLibItem->m_Field[REFERENCE], flag, g_XorMode );
TextField->m_Text = msg;
DrawTextField( DrawPanel, DC, &DrawLibItem->m_Field[REFERENCE], flag,
DrawLibItem->m_Flags ? g_XorMode : GR_DEFAULT_DRAWMODE );
GetScreen()->SetModify();
}
DrawLibItem->Display_Infos( this );
}
/*****************************************************************************************/
void WinEDA_SchematicFrame::EditComponentValue( EDA_SchComponentStruct* DrawLibItem, wxDC* DC )
/*****************************************************************************************/
/* Routine de changement du texte selectionne */
{
wxString msg;
EDA_LibComponentStruct* Entry;
int flag = 0;
if( DrawLibItem == NULL )
return;
Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
if( Entry == NULL )
return;
if( Entry->m_UnitCount > 1 )
flag = 1;
PartTextStruct* TextField = &DrawLibItem->m_Field[VALUE];
msg = TextField->m_Text;
Get_Message( _( "Value" ), msg, this );
if( !msg.IsEmpty() )
{
DrawTextField( DrawPanel, DC, &DrawLibItem->m_Field[VALUE], flag, g_XorMode );
TextField->m_Text = msg;
DrawTextField( DrawPanel, DC, &DrawLibItem->m_Field[VALUE], flag,
DrawLibItem->m_Flags ? g_XorMode : GR_DEFAULT_DRAWMODE );
m_CurrentScreen->SetModify();
}
DrawLibItem->Display_Infos( this );
}
/*****************************************************************************/
void WinEDA_ComponentPropertiesFrame::SetInitCmp( wxCommandEvent& event )
/*****************************************************************************/
/* Replace le composant en position normale, dimensions et positions
* fields comme definies en librairie
*/
{
EDA_LibComponentStruct* Entry;
if( m_Cmp == NULL )
return;
Entry = FindLibPart( m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
if( Entry == NULL )
return;
wxClientDC dc( m_Parent->DrawPanel );
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
/* Mise aux valeurs par defaut des champs et orientation */
m_Cmp->m_Field[REFERENCE].m_Pos.x =
Entry->m_Prefix.m_Pos.x + m_Cmp->m_Pos.x;
m_Cmp->m_Field[REFERENCE].m_Pos.y =
Entry->m_Prefix.m_Pos.y + m_Cmp->m_Pos.y;
m_Cmp->m_Field[REFERENCE].m_Orient = Entry->m_Prefix.m_Orient;
m_Cmp->m_Field[REFERENCE].m_Size = Entry->m_Prefix.m_Size;
m_Cmp->m_Field[REFERENCE].m_HJustify = Entry->m_Prefix.m_HJustify;
m_Cmp->m_Field[REFERENCE].m_VJustify = Entry->m_Prefix.m_VJustify;
m_Cmp->m_Field[VALUE].m_Pos.x =
Entry->m_Name.m_Pos.x + m_Cmp->m_Pos.x;
m_Cmp->m_Field[VALUE].m_Pos.y =
Entry->m_Name.m_Pos.y + m_Cmp->m_Pos.y;
m_Cmp->m_Field[VALUE].m_Orient = Entry->m_Name.m_Orient;
m_Cmp->m_Field[VALUE].m_Size = Entry->m_Name.m_Size;
m_Cmp->m_Field[VALUE].m_HJustify = Entry->m_Name.m_HJustify;
m_Cmp->m_Field[VALUE].m_VJustify = Entry->m_Name.m_VJustify;
m_Cmp->SetRotationMiroir( CMP_NORMAL );
m_Parent->m_CurrentScreen->SetModify();
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
Close();
}
/**********************************************************/
/* EECLASS.CPP */
/* fonctions relatives aux classes definies dans EESCHEMA */
/**********************************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
/************************************************************/
void SetStructFather( EDA_BaseStruct* Struct, BASE_SCREEN* Screen )
/************************************************************/
{
switch( Struct->Type() )
{
case DRAW_POLYLINE_STRUCT_TYPE:
case DRAW_JUNCTION_STRUCT_TYPE:
case DRAW_TEXT_STRUCT_TYPE:
case DRAW_LABEL_STRUCT_TYPE:
case DRAW_GLOBAL_LABEL_STRUCT_TYPE:
case DRAW_LIB_ITEM_STRUCT_TYPE:
case DRAW_SEGMENT_STRUCT_TYPE:
case DRAW_BUSENTRY_STRUCT_TYPE:
case DRAW_SHEET_STRUCT_TYPE:
case DRAW_MARKER_STRUCT_TYPE:
case DRAW_NOCONNECT_STRUCT_TYPE:
Struct->m_Parent = Screen;
break;
case DRAW_SHEETLABEL_STRUCT_TYPE:
case DRAW_PICK_ITEM_STRUCT_TYPE:
break;
default:
break;
}
}
/*************************************************************/
void EDA_BaseStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
/*************************************************************/
{
if( m_Flags & IS_NEW )
{
Pnext = frame->m_CurrentScreen->EEDrawList;
frame->m_CurrentScreen->EEDrawList = this;
g_ItemToRepeat = this;
}
m_Flags = 0;
SetFlagModify( frame->GetScreen() );
frame->GetScreen()->SetCurItem( NULL );
frame->DrawPanel->ManageCurseur = NULL;
frame->DrawPanel->ForceCloseManageCurseur = NULL;
frame->DrawPanel->CursorOff( DC ); // Erase schematic cursor
RedrawOneStruct( frame->DrawPanel, DC, this, GR_DEFAULT_DRAWMODE );
frame->DrawPanel->CursorOn( DC ); // Display schematic cursor
}
/**************************************************/
/* Class SCH_SCREEN: classe de gestion d'un affichage pour schematique */
/***************************************************/
static int table_zoom[] = { 1, 2, 4, 8, 16, 32, 64, 128, 0 }; /* Valeurs standards du zoom */
/* Constructeur de SCREEN */
SCH_SCREEN::SCH_SCREEN( EDA_BaseStruct* parent, WinEDA_DrawFrame* frame_source, int idtype ) :
BASE_SCREEN( parent, frame_source, idtype )
{
EEDrawList = NULL; /* Schematic items list */
m_Zoom = 32;
m_Grid = wxSize( 50, 50 ); /* pas de la grille */
SetZoomList( table_zoom );
SetGridList( g_GridList );
m_UndoRedoCountMax = 10;
}
/****************************/
SCH_SCREEN::~SCH_SCREEN()
/****************************/
{
ClearUndoRedoList();
FreeDrawList();
}
/*************************************/
SCH_SCREEN* SCH_SCREEN::GenCopy()
/*************************************/
{
// TODO
return NULL;
}
/***********************************/
void SCH_SCREEN::FreeDrawList()
/***********************************/
/* Routine to clear EESchema drawing list of a screen.
*/
{
EDA_BaseStruct* DrawStruct;
while( EEDrawList != NULL )
{
DrawStruct = EEDrawList;
EEDrawList = EEDrawList->Pnext;
delete DrawStruct;
}
}
/*********************************************************************/
/* EESchema - edition des librairies: Edition des champs ( Fields ) */
/*********************************************************************/
/* Fichier fieldedi.cpp */
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
#include "wx/spinctrl.h"
static char* PanelText[] =
{
"Ref", /* Champ Reference of part, i.e. "IC21" */
"Name", /* Champ Value of part, i.e. "3.3K" */
"Fld1",
"Fld2",
"Fld3",
"Fld4",
"Fld5",
"Fld6",
"Fld7",
"Fld8",
"Pcb", /* Champ Name Module PCB, i.e. "16DIP300" */
"Sheet" /* Champ Name Schema component, i.e. "cnt16.sch" */
};
/* Routines locales */
static void MoveField( wxDC* DC, int flag );
static char* PrefixText( LibraryEntryStruct* LibEntry, int Unit );
/* Variables locales */
extern int CurrentUnit;
static wxPoint StartCursor;
/* Classe de la frame des proprits d'un composant en librairie */
enum id_libedit {
ID_LIBEDIT_NOTEBOOK = 3200,
ID_PANEL_BASIC,
ID_PANEL_ALIAS,
ID_PANEL_REFERENCE,
ID_PANEL_VALUE,
ID_PANEL_FIELD1,
ID_PANEL_FIELD2,
ID_PANEL_FIELD3,
ID_PANEL_FIELD4,
ID_PANEL_FIELD5,
ID_PANEL_FIELD6,
ID_PANEL_FIELD7,
ID_PANEL_FIELD8,
ID_PANEL_MODULEPCB,
ID_PANEL_SUBSCHEMATIC,
ID_CLOSE_PART_PROPERTIES,
ID_ACCEPT_PART_PROPERTIES,
ID_ADD_ALIAS,
ID_DELETE_ONE_ALIAS,
ID_DELETE_ALL_ALIAS
};
/************************************/
/* class WinEDA_PartPropertiesFrame */
/************************************/
class WinEDA_PartPropertiesFrame : public wxDialog
{
private:
WinEDA_LibeditFrame* m_Parent;
wxNotebook* m_NoteBook;
wxListBox* PartAliasList;
wxPanel* PanelBasic;
wxPanel* PanelAlias;
wxPanel* PanelDoc;
wxPanel* PanelField[NUMBER_OF_FIELDS];
wxCheckBox* AsConvertButt;
wxCheckBox* ShowFieldText[NUMBER_OF_FIELDS];
wxCheckBox* VorientFieldText[NUMBER_OF_FIELDS];
wxCheckBox* ShowPinNumButt;
wxCheckBox* ShowPinNameButt;
wxCheckBox* PinsNameInsideButt;
wxSpinCtrl* SelNumberOfUnits;
wxSpinCtrl* m_SetSkew;
WinEDA_GraphicTextCtrl* FieldTextCtrl[NUMBER_OF_FIELDS];
WinEDA_PositionCtrl* FieldPosition[NUMBER_OF_FIELDS];
int FieldFlags[NUMBER_OF_FIELDS];
int FieldOrient[NUMBER_OF_FIELDS];
WinEDA_EnterText* NewDoc;
WinEDA_EnterText* NewDocfile;
WinEDA_EnterText* NewKeywords;
ListOfAliasStruct* AliasListCopy;
public:
// Constructor and destructor
WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame * parent, wxPoint & pos );
~WinEDA_PartPropertiesFrame()
{
if( AliasListCopy )
AliasListCopy->FreeList();
};
private:
void PartPropertiesAccept( wxCommandEvent& event );
void DeleteAllAliasOfPart();
void DeleteAliasOfPart();
void AddAliasOfPart();
bool ChangeNbUnitsPerPackage( int newUnit );
bool SetUnsetConvert();
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE( WinEDA_PartPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_PART_PROPERTIES, WinEDA_PartPropertiesFrame::PartPropertiesAccept )
EVT_BUTTON( ID_CLOSE_PART_PROPERTIES, WinEDA_PartPropertiesFrame::Close )
EVT_BUTTON( ID_ADD_ALIAS, WinEDA_PartPropertiesFrame::AddAliasOfPart )
EVT_BUTTON( ID_DELETE_ONE_ALIAS, WinEDA_PartPropertiesFrame::DeleteAliasOfPart )
EVT_BUTTON( ID_DELETE_ALL_ALIAS, WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart )
END_EVENT_TABLE()
void InstallLibeditFrame( WinEDA_LibeditFrame* parent, wxPoint& pos )
{
WinEDA_PartPropertiesFrame* frame = new WinEDA_PartPropertiesFrame( parent, pos );
frame->ShowModal(); frame->Destroy();
}
WinEDA_PartPropertiesFrame::WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame* parent,
wxPoint& framepos ) :
wxDialog( parent, -1, _( "Componant properties" ), framepos, wxSize( 320, 300 ),
wxDEFAULT_DIALOG_STYLE | FLOAT_ON_PARENT )
{
wxPoint pos;
wxLayoutConstraints* c;
m_Parent = parent;
SetAutoLayout( TRUE );
Doc[0] = 0; Docfile[0] = 0; Keywords[0] = 0;
AliasListCopy = NULL;
for( int ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
{
FieldFlags[ii] = 0;
}
if( CurrentLibEntry )
{
if( ListAlias )
AliasListCopy = ListAlias->DupList();
if( CurrentLibEntry->Doc )
strncpy( Doc, CurrentLibEntry->Doc, 256 );
if( CurrentLibEntry->KeyWord )
strncpy( Keywords, CurrentLibEntry->KeyWord, 256 );
if( CurrentLibEntry->DocFile )
strncpy( Docfile, CurrentLibEntry->DocFile, 256 );
FieldFlags[REFERENCE] = CurrentLibEntry->m_Prefix.m_Attributs;
FieldOrient[REFERENCE] = CurrentLibEntry->m_Prefix.m_Orient;
FieldFlags[VALUE] = CurrentLibEntry->m_Name.m_Attributs;
FieldOrient[VALUE] = CurrentLibEntry->m_Name.m_Orient;
LibDrawField* Field = CurrentLibEntry->Fields;
while( Field )
{
FieldFlags[Field->m_FieldId] = Field->m_Attributs;
FieldOrient[Field->m_FieldId] = Field->m_Orient;
Field = (LibDrawField*) Field->Pnext;
}
}
m_NoteBook = new wxNotebook( this, ID_LIBEDIT_NOTEBOOK );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 4 );
c->right.SameAs( this, wxRight, 4 );
c->top.SameAs( this, wxTop, 4 );
c->bottom.SameAs( this, wxBottom, 40 );
m_NoteBook->SetConstraints( c );
m_NoteBook->SetAutoLayout( TRUE );
/* Creation des boutons de commande */
pos.x = 80; pos.y = 240;
wxButton* Button = new wxButton( this, ID_CLOSE_PART_PROPERTIES,
_( "Close" ), pos );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
Button->SetConstraints( c );
pos.x += Button->GetDefaultSize().x + 10;
Button = new wxButton( this, ID_ACCEPT_PART_PROPERTIES,
_( "Ok" ), pos );
c = new wxLayoutConstraints;
c->right.SameAs( this, wxRight, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
Button->SetConstraints( c );
// Add panel Basic
PanelBasic = new wxPanel( m_NoteBook, ID_PANEL_BASIC );
c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
PanelBasic->SetConstraints( c );
m_NoteBook->AddPage( PanelBasic, _( "Options" ), TRUE );
pos.x = 5; pos.y = 25;
new wxStaticBox( PanelBasic, -1, _( " General : " ), pos, wxSize( 150, 120 ) );
pos.x = 10; pos.y += 22;
AsConvertButt = new wxCheckBox( PanelBasic, -1, _( "As Convert" ), pos );
if( g_AsDeMorgan )
AsConvertButt->SetValue( TRUE );
pos.y += 20;
ShowPinNumButt = new wxCheckBox( PanelBasic, -1, _( "Show Pin Num" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->DrawPinNum )
ShowPinNumButt->SetValue( TRUE );
}
else
ShowPinNumButt->SetValue( TRUE );
pos.y += 20;
ShowPinNameButt = new wxCheckBox( PanelBasic, -1, _( "Show Pin Name" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->DrawPinName )
ShowPinNameButt->SetValue( TRUE );
}
else
ShowPinNameButt->SetValue( TRUE );
pos.y += 20;
PinsNameInsideButt = new wxCheckBox( PanelBasic, -1, _( "Pin Name Inside" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->TextInside )
PinsNameInsideButt->SetValue( TRUE );
}
else
PinsNameInsideButt->SetValue( TRUE );
pos.y += 40;
new wxStaticText( PanelBasic, -1, _( "Number of Units:" ), pos );
pos.y += 15;
wxString number;
if( CurrentLibEntry )
number.Printf( "%d", CurrentLibEntry->NumOfUnits );
else
number = "1";
SelNumberOfUnits = new wxSpinCtrl( PanelBasic, -1, number, pos,
wxDefaultSize, wxSP_ARROW_KEYS | wxSP_WRAP,
1, 16 );
pos.y -= 15; pos.x += 140;
new wxStaticText( PanelBasic, -1, _( "Skew:" ), pos );
pos.y += 15;
if( CurrentLibEntry && CurrentLibEntry->TextInside )
number.Printf( "%d", CurrentLibEntry->TextInside );
else
number = "40";
m_SetSkew = new wxSpinCtrl( PanelBasic, -1, number, pos,
wxDefaultSize, wxSP_ARROW_KEYS | wxSP_WRAP,
1, 100 );
// Add Panel Documentation
PanelDoc = new wxPanel( m_NoteBook, -1 );
c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
PanelDoc->SetConstraints( c );
m_NoteBook->AddPage( PanelDoc, _( "Doc" ), FALSE );
pos.x = 5; pos.y = 40;
NewDoc = new WinEDA_EnterText( PanelDoc,
_( "Doc:" ), Doc,
pos, wxSize( 285, -1 ) );
pos.y += 50;
NewKeywoed = new WinEDA_EnterText( PanelDoc,
_( "Keywords:" ), Keywords,
pos, wxSize( 285, -1 ) );
pos.y += 50;
NewDocFile = new WinEDA_EnterText( PanelDoc,
_( "DocFileName:" ), Docfile,
pos, wxSize( 285, -1 ) );
// Add Panel Alias List
PanelAlias = new wxPanel( m_NoteBook, -1 );
c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
PanelAlias->SetConstraints( c );
m_NoteBook->AddPage( PanelAlias, _( "Alias" ), FALSE );
pos.x = 200; pos.y = 70;
new wxButton( PanelAlias, ID_ADD_ALIAS,
_( "Add" ), pos );
pos.y += Button->GetDefaultSize().y + 10;
new wxButton( PanelAlias, ID_DELETE_ONE_ALIAS,
_( "Delete" ), pos );
pos.y += Button->GetDefaultSize().y + 10;
new wxButton( PanelAlias, ID_DELETE_ALL_ALIAS,
_( "Delete All" ), pos );
pos.x = 5; pos.y = 30;
PartAliasList = new wxListBox( PanelAlias,
-1,
pos, wxSize( 160, 170 ),
0, NULL,
wxLB_ALWAYS_SB | wxLB_SINGLE );
wxStaticText* Msg = new wxStaticText( PanelAlias, -1, _( "Alias" ),
wxPoint (pos.x, pos.y - 20) );
Msg->SetForegroundColour( wxColour( 200, 0, 0 ) );
/* lecture des alias */
ListOfAliasStruct* Alias = AliasListCopy;
while( Alias )
{
PartAliasList->Append( Alias->m_Name.m_Text );
Alias = Alias->Next;
}
// Add panel Fields
for( int ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
{
PanelField[ii] = new wxPanel( m_NoteBook, ID_PANEL_REFERENCE + ii );
c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
PanelField[ii]->SetConstraints( c );
m_NoteBook->AddPage( PanelField[ii], PanelText[ii], FALSE );
pos.x = 10; pos.y = 20;
ShowFieldText[ii] = new wxCheckBox( PanelField[ii], -1,
_( "Show Text" ), pos );
if( (FieldFlags[ii] & TEXT_NO_VISIBLE ) == 0 )
ShowFieldText[ii]->SetValue( TRUE );
pos.x += 150;
VorientFieldText[ii] = new wxCheckBox( PanelField[ii], -1,
_( "Vertical" ), pos );
if( FieldOrient[ii] )
VorientFieldText[ii]->SetValue( TRUE );
pos.x = 10; pos.y += 50;
wxPoint txtpos;
switch( ii )
{
case REFERENCE:
if( CurrentLibEntry )
txtpos = CurrentLibEntry->m_Prefix.m_Pos;
else
txtpos = wxPoint( 0, 0 );
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl(
PanelField[ii],
PanelText[ii],
CurrentLibEntry ? CurrentLibEntry->
m_Prefix.m_Text : (char*) "U",
CurrentLibEntry ? CurrentLibEntry->
m_Prefix.m_Size : 50,
UnitMetric,
pos,
200,
TRUE );
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
txtpos,
UnitMetric, wxPoint (pos.x + 150,
pos.y + 32) );
break;
case VALUE:
if( CurrentLibEntry )
txtpos = CurrentLibEntry->m_Name.m_Pos;
else
txtpos = wxPoint( 0, 0 );
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl(
PanelField[ii],
PanelText[ii],
CurrentLibEntry ? CurrentLibEntry->
m_Name.m_Text : NULL,
CurrentLibEntry ? CurrentLibEntry->
m_Name.m_Size : 50,
UnitMetric,
pos,
200,
TRUE );
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
txtpos,
UnitMetric, wxPoint (pos.x + 150,
pos.y + 32) );
break;
default:
int fsize; char* ftext; wxPoint fpos;
fsize = 50; ftext = NULL;
LibDrawField* Field = NULL;
fpos = wxPoint( 0, 0 );
//recherche du Field de FieldId correspondant, s'il existe
if( CurrentLibEntry )
{
Field = CurrentLibEntry->Fields;
while( Field )
{
if( Field->m_FieldId == ii )
{
fsize = Field->m_Size; ftext = Field->m_Text;
fpos = Field->m_Pos;
break;
}
Field = (LibDrawField*) Field->Pnext;
}
}
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl( PanelField[ii],
PanelText[ii],
ftext, fsize,
UnitMetric,
pos, 200, TRUE );
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
fpos,
UnitMetric, wxPoint (pos.x + 150,
pos.y + 32) );
break;
}
}
SetModal( TRUE );
}
/***************************************************************************/
/* WinEDA_PartPropertiesFrame::PartPropertiesAccept(wxCommandEvent& event) */
/***************************************************************************/
/* Met a jour les differents parametres pour le composant en cours d'dition
*/
void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
{
bool recreateTB = FALSE;
if( CurrentLibEntry == NULL )
{
Close(); return;
}
m_Parent->CurrentScreen->SetModify();
m_Parent->CurrentScreen->SetRefreshReq();
if( ListAlias )
ListAlias->FreeList();
if( AliasListCopy )
ListAlias = AliasListCopy->DupList();
if( CurrentLibEntry->Doc && strcmp( Doc, CurrentLibEntry->Doc ) )
{
free( CurrentLibEntry->Doc ); CurrentLibEntry->Doc = NULL;
}
if( strlen( Doc ) )
CurrentLibEntry->Doc = strdup( Doc );
if( CurrentLibEntry->KeyWord && strcmp( Keywords, CurrentLibEntry->KeyWord ) )
{
free( CurrentLibEntry->KeyWord ); CurrentLibEntry->KeyWord = NULL;
}
if( strlen( Keywords ) )
CurrentLibEntry->KeyWord = strdup( Keywords );
if( CurrentLibEntry->DocFile && strcmp( Docfile, CurrentLibEntry->DocFile ) )
{
free( CurrentLibEntry->DocFile ); CurrentLibEntry->DocFile = NULL;
}
if( strlen( Docfile ) )
CurrentLibEntry->DocFile = strdup( Docfile );
CurrentLibEntry->m_Prefix.SetText( (char*) FieldTextCtrl[REFERENCE]->GetText() );
CurrentLibEntry->m_Name.SetText( (char*) FieldTextCtrl[VALUE]->GetText() );
CurrentLibEntry->m_Prefix.m_Size = FieldTextCtrl[REFERENCE]->GetTextSize();
CurrentLibEntry->m_Name.m_Size = FieldTextCtrl[VALUE]->GetTextSize();
CurrentLibEntry->m_Prefix.m_Pos = FieldPosition[REFERENCE]->GetCoord();
CurrentLibEntry->m_Name.m_Pos = FieldPosition[VALUE]->GetCoord();
CurrentLibEntry->m_Prefix.m_Orient = VorientFieldText[REFERENCE]->GetValue() ? 1 : 0;
CurrentLibEntry->m_Name.m_Orient = VorientFieldText[VALUE]->GetValue() ? 1 : 0;
if( ShowFieldText[REFERENCE]->GetValue() )
CurrentLibEntry->m_Prefix.m_Attributs &= ~TEXT_NO_VISIBLE;
else
CurrentLibEntry->m_Prefix.m_Attributs |= TEXT_NO_VISIBLE;
if( ShowFieldText[VALUE]->GetValue() )
CurrentLibEntry->m_Name.m_Attributs &= ~TEXT_NO_VISIBLE;
else
CurrentLibEntry->m_Name.m_Attributs |= TEXT_NO_VISIBLE;
for( int ii = FIELD1; ii < NUMBER_OF_FIELDS; ii++ )
{
LibDrawField* Field = CurrentLibEntry->Fields;
LibDrawField* NextField, * previousField = NULL;
while( Field )
{
NextField = (LibDrawField*) Field->Pnext;
if( Field->m_FieldId == ii )
{
Field->SetText( (char*) FieldTextCtrl[ii]->GetText() );
Field->m_Size = FieldTextCtrl[ii]->GetTextSize();
if( ShowFieldText[ii]->GetValue() )
Field->m_Attributs &= ~TEXT_NO_VISIBLE;
else
Field->m_Attributs |= TEXT_NO_VISIBLE;
Field->m_Orient = VorientFieldText[ii]->GetValue() ? 1 : 0;
Field->m_Pos = FieldPosition[Field->m_FieldId]->GetCoord();
if( Field->m_Text == NULL )
{
delete Field;
if( previousField )
previousField->Pnext = NextField;
else
CurrentLibEntry->Fields = NextField;
}
break;
}
previousField = Field;
Field = NextField;
}
if( (Field == NULL) && strlen( FieldTextCtrl[ii]->GetText() ) )
{ // N'existe pas: a creer
Field = new LibDrawField( ii );
Field->SetText( (char*) FieldTextCtrl[ii]->GetText() );
Field->m_Size = FieldTextCtrl[ii]->GetTextSize();
Field->Pnext = CurrentLibEntry->Fields;
if( ShowFieldText[Field->m_FieldId]->GetValue() )
Field->m_Attributs &= ~TEXT_NO_VISIBLE;
else
Field->m_Attributs |= TEXT_NO_VISIBLE;
Field->m_Orient = VorientFieldText[Field->m_FieldId]->GetValue() ? 1 : 0;
Field->m_Pos = FieldPosition[Field->m_FieldId]->GetCoord();
CurrentLibEntry->Fields = Field;
}
}
int ii = SelNumberOfUnits->GetValue();
if( ChangeNbUnitsPerPackage( ii ) )
recreateTB = TRUE;
if( AsConvertButt->GetValue() )
{
if( !g_AsDeMorgan )
{
g_AsDeMorgan = 1;
if( SetUnsetConvert() )
recreateTB = TRUE;
}
}
else
{
if( g_AsDeMorgan )
{
g_AsDeMorgan = 0;
if( SetUnsetConvert() )
recreateTB = TRUE;
}
}
CurrentLibEntry->DrawPinNum = ShowPinNumButt->GetValue() ? 1 : 0;
CurrentLibEntry->DrawPinName = ShowPinNameButt->GetValue() ? 1 : 0;
if( PinsNameInsideButt->GetValue() == FALSE )
CurrentLibEntry->TextInside = 0;
else
CurrentLibEntry->TextInside = m_SetSkew->GetValue();
if( recreateTB )
m_Parent->ReCreateHToolbar();
Close();
}
/***************************************************************/
/* void WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart() */
/***************************************************************/
void WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart()
{
if( CurrentLibEntry && AliasListCopy )
{
if( confirmation( _( "Ok to Delete Alias LIST" ) ) == YES )
{
if( AliasListCopy )
AliasListCopy->FreeList();
AliasListCopy = NULL;
PartAliasList->Clear();
}
}
}
/*********************************************************/
/* void WinEDA_PartPropertiesFrame::AddAliasOfPart() */
/*********************************************************/
void WinEDA_PartPropertiesFrame::AddAliasOfPart()
{
char Line[LINE_LEN];
int llen;
ListOfAliasStruct* NewAlias;
if( CurrentLibEntry == NULL )
return;
*Line = 0;
if( Get_Message( _( "Alias:" ), Line, this ) != 0 )
return;
ChangeSpaces( Line, '_' );
llen = strlen( Line ) + 1;
NewAlias = LocateAlias( AliasListCopy, Line );
if( NewAlias )
{
DisplayError( _( "Already in use" ), 10 ); return;
}
NewAlias = new ListOfAliasStruct( Line );
NewAlias->Next = AliasListCopy;
AliasListCopy = NewAlias;
/* affichage des alias */
PartAliasList->Clear();
ListOfAliasStruct* Alias = AliasListCopy;
while( Alias )
{
PartAliasList->Append( Alias->m_Name.m_Text );
Alias = Alias->Next;
}
}
/********************************/
/* void DeleteAliasOfPart() */
/********************************/
void WinEDA_PartPropertiesFrame::DeleteAliasOfPart()
{
ListOfAliasStruct* Alias;
wxString aliasname;
if( CurrentLibEntry == NULL )
return;
if( AliasListCopy == NULL )
return;
aliasname = PartAliasList->GetStringSelection();
if( aliasname == "" )
return;
Alias = AliasListCopy;
ListOfAliasStruct* Previous = NULL;
while( Alias )
{
if( stricmp( aliasname.GetData(), Alias->m_Name.m_Text ) == 0 )
{
if( Previous )
Previous->Next = Alias->Next;
else
AliasListCopy = Alias->Next;
delete Alias;
break;
}
Previous = Alias;
Alias = Alias->Next;
}
/* affichage des alias */
PartAliasList->Clear();
Alias = AliasListCopy;
while( Alias )
{
PartAliasList->Append( Alias->m_Name.m_Text );
Alias = Alias->Next;
}
}
/************************************************************/
static void ExitMoveField( WinEDA_DrawFrame* frame, wxDC* DC )
/************************************************************/
{
frame->CurrentScreen->ManageCurseur = NULL;
frame->CurrentScreen->ForceCloseManageCurseur = NULL;
if( CurrentDrawItem == NULL )
return;
wxPoint curpos;
curpos = frame->CurrentScreen->Curseur;
frame->CurrentScreen->Curseur = StartCursor;
MoveField( DC, 1 );
frame->CurrentScreen->Curseur = curpos;
CurrentDrawItem->m_Flags = 0;
CurrentDrawItem = NULL;
}
/*********************************************/
/* static void StartMoveField(COMMAND * Cmd) */
/*********************************************/
/* Initialise le deplacement d'un champ ( ref ou Name) */
void WinEDA_LibeditFrame::StartMoveField( wxDC* DC, LibDrawField* field )
{
if( (CurrentLibEntry == NULL) || ( field == NULL ) )
return;
CurrentDrawItem = field;
CurrentDrawItem->m_Flags |= IS_MOVED;
CurrentScreen->ManageCurseur = MoveField;
CurrentScreen->ForceCloseManageCurseur = ExitMoveField;
CurrentScreen->ManageCurseur( DC, 1 );
StartCursor = CurrentScreen->Curseur;
}
/*****************************************************************/
/* Routine d'affichage du texte 'Field' en cours de deplacement. */
/* Routine normalement attachee au curseur */
/*****************************************************************/
static void MoveField( wxDC* DC, int flag )
{
int color;
LibDrawField* Field = (LibDrawField*) CurrentDrawItem;
if( (CurrentLibEntry == NULL) || (Field == NULL) )
return;
GRSetDrawMode( DC, XOR_MODE );
switch( Field->m_FieldId )
{
case VALUE:
color = ReturnLayerColor( LAYER_VALUEPART );
break;
case REFERENCE:
color = ReturnLayerColor( LAYER_REFERENCEPART );
break;
default:
color = ReturnLayerColor( LAYER_FIELDS );
break;
}
if( Field->m_Attributs & TEXT_NO_VISIBLE )
color = DARKGRAY;
if( flag >= 0 )
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
Field->m_Pos.x = ActiveScreen->Curseur.x;
Field->m_Pos.y = -ActiveScreen->Curseur.y;
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
}
/********************************/
/* static void PlaceField() */
/********************************/
void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field )
{
int color;
if( Field == NULL )
return;
GRSetDrawMode( DC, GR_DEFAULT_DRAWMODE );
switch( Field->m_FieldId )
{
case REFERENCE:
color = ReturnLayerColor( LAYER_REFERENCEPART );
break;
case VALUE:
color = ReturnLayerColor( LAYER_VALUEPART );
break;
default:
color = ReturnLayerColor( LAYER_FIELDS );
break;
}
if( Field->m_Attributs & TEXT_NO_VISIBLE )
color = DARKGRAY;
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
Field->m_Flags = 0;
CurrentScreen->SetModify();
CurrentScreen->ManageCurseur = NULL;
CurrentScreen->ForceCloseManageCurseur = NULL;
CurrentDrawItem = NULL;
}
/****************************************/
/* static void EditField(COMMAND * Cmd) */
/****************************************/
void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field )
{
char Text[LINE_LEN];
int color;
wxClientDC dc( DrawPanel );
if( Field== NULL )
return;
switch( Field->m_FieldId )
{
case REFERENCE:
color = ReturnLayerColor( LAYER_REFERENCEPART );
break;
case VALUE:
color = ReturnLayerColor( LAYER_VALUEPART );
break;
default:
color = ReturnLayerColor( LAYER_FIELDS );
break;
}
*Text = 0;
if( Field->m_Attributs & TEXT_NO_VISIBLE )
color = DARKGRAY;
if( Field->m_Text )
strcpy( Text, Field->m_Text );
Get_Message( _( "Text: " ), Text, this );
ChangeSpaces( Text, '_' );
GRSetDrawMode( &dc, XOR_MODE );
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
Field->SetText( Text );
if( Field->m_Flags == 0 )
GRSetDrawMode( &dc, GR_DEFAULT_DRAWMODE );
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
CurrentScreen->SetModify();
}
/*******************************************************************/
void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field )
/*******************************************************************/
/*
* Routine de modification de l'orientation ( Horiz ou Vert. ) du champ.
* si un champ est en cours d'edition, modif de celui ci.
* sinon Modif du champ pointe par la souris
*/
{
int color;
if( Field == NULL )
return;
CurrentScreen->SetModify();
switch( Field->m_FieldId )
{
case REFERENCE:
color = ReturnLayerColor( LAYER_REFERENCEPART );
break;
case VALUE:
color = ReturnLayerColor( LAYER_VALUEPART );
break;
default:
color = ReturnLayerColor( LAYER_FIELDS );
break;
}
if( Field->m_Attributs & TEXT_NO_VISIBLE )
color = DARKGRAY;
GRSetDrawMode( DC, XOR_MODE );
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
if( Field->m_Orient )
Field->m_Orient = 0;
else
Field->m_Orient = 1;
if( Field->m_Flags == 0 )
GRSetDrawMode( DC, GR_DEFAULT_DRAWMODE );
Gr_E_texte( DC, Field->m_Pos.x, -Field->m_Pos.y,
color, Field->m_Text,
Field->m_Orient, Field->m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
}
/********************************************************/
/* static int LocateField(LibraryEntryStruct *LibEntry) */
/********************************************************/
/* Localise le champ (ref ou name) pointe par la souris
* retourne:
* < 0: Pas de champ
* 0: Ref
* 1: Name(s)
* > 2 = Num Field
*/
LibDrawField* WinEDA_LibeditFrame::LocateField( LibraryEntryStruct* LibEntry )
{
int x0, y0, x1, y1; /* Rectangle d'encadrement des textes a localiser */
int dx, dy; /* Dimensions du texte */
LibDrawField* Field;
/* Localisation du Nom */
x0 = LibEntry->m_Name.m_Pos.x;
y0 = -LibEntry->m_Name.m_Pos.y;
dx = LibEntry->m_Name.m_Size * strlen( LibEntry->m_Name.m_Text ),
dy = LibEntry->m_Name.m_Size;
if( LibEntry->m_Name.m_Orient )
EXCHG( dx, dy );
x0 -= dx / 2; y0 -= dy / 2;
x1 = x0 + dx; y1 = y0 + dy;
if( (CurrentScreen->Curseur.x >= x0) && ( CurrentScreen->Curseur.x <= x1)
&& (CurrentScreen->Curseur.y >= y0) && ( CurrentScreen->Curseur.y <= y1) )
return &LibEntry->m_Name;
/* Localisation du Prefix */
x0 = LibEntry->m_Prefix.m_Pos.x;
y0 = -LibEntry->m_Prefix.m_Pos.y;
dx = LibEntry->m_Prefix.m_Size * strlen( LibEntry->m_Prefix.m_Text ),
dy = LibEntry->m_Prefix.m_Size;
if( LibEntry->m_Prefix.m_Orient )
EXCHG( dx, dy );
x0 -= dx / 2; y0 -= dy / 2;
x1 = x0 + dx; y1 = y0 + dy;
if( (CurrentScreen->Curseur.x >= x0) && ( CurrentScreen->Curseur.x <= x1)
&& (CurrentScreen->Curseur.y >= y0) && ( CurrentScreen->Curseur.y <= y1) )
return &LibEntry->m_Prefix;
/* Localisation des autres fields */
for( Field = LibEntry->Fields; Field != NULL;
Field = (LibDrawField*) Field->Pnext )
{
if( Field->m_Text == NULL )
continue;
x0 = Field->m_Pos.x; y0 = -Field->m_Pos.y;
dx = Field->m_Size * strlen( Field->m_Text ),
dy = Field->m_Size;
if( Field->m_Orient )
EXCHG( dx, dy );
x0 -= dx / 2; y0 -= dy / 2;
x1 = x0 + dx; y1 = y0 + dy;
if( (CurrentScreen->Curseur.x >= x0) && ( CurrentScreen->Curseur.x <= x1)
&& (CurrentScreen->Curseur.y >= y0) && ( CurrentScreen->Curseur.y <= y1) )
return Field;
}
return NULL;
}
/*********************************************************************/
/* static char * PrefixText(LibraryEntryStruct * LibEntry, int Unit) */
/*********************************************************************/
/* Calcule l'affichage complet du prefixe ( texte + '?' + ident unit )
* Retourne un pointeur sur le nouveau texte (allocation statique)
*/
static char* PrefixText( LibraryEntryStruct* LibEntry, int Unit )
{
static char Text[LINE_LEN];
if( LibEntry->NumOfUnits > 1 )
sprintf( Text, "%s?%c", LibEntry->m_Prefix.m_Text, Unit + 'A' - 1 );
else
sprintf( Text, "%s?", LibEntry->m_Prefix.m_Text );
return Text;
}
/*****************************************************************/
/* void WinEDA_PartPropertiesFrame::ChangeNbUnitsPerPackagevoid) */
/*****************************************************************/
/* Routine de modification du nombre d'unites par package pour le
* composant courant;
*/
bool WinEDA_PartPropertiesFrame::ChangeNbUnitsPerPackage( int MaxUnit )
{
int OldNumUnits, ii, FlagDel = -1;
LibEDA_BaseStruct* DrawItem, * NextDrawItem;
if( CurrentLibEntry == NULL )
return FALSE;
/* Si pas de changement: termine */
if( CurrentLibEntry->NumOfUnits == MaxUnit )
return FALSE;
OldNumUnits = CurrentLibEntry->NumOfUnits;
if( OldNumUnits < 1 )
OldNumUnits = 1;
CurrentLibEntry->NumOfUnits = MaxUnit;
/* Traitement des unites enlevees ou rajoutees */
if( OldNumUnits > CurrentLibEntry->NumOfUnits )
{
DrawItem = CurrentLibEntry->Drawings;
for( ; DrawItem != NULL; DrawItem = NextDrawItem )
{
NextDrawItem = DrawItem->Pnext;
if( DrawItem->m_Unit > MaxUnit ) /* Item a effacer */
{
if( FlagDel < 0 )
{
if( confirmation( _( "Delete units" ) ) == YES )
{
/* Si part selectee n'existe plus: selection 1ere unit */
if( CurrentUnit > MaxUnit )
CurrentUnit = 1;
FlagDel = 1;
}
else
{
FlagDel = 0;
MaxUnit = OldNumUnits;
CurrentLibEntry->NumOfUnits = MaxUnit;
return FALSE;
}
}
DeleteOneLibraryDrawStruct( NULL, CurrentLibEntry,
DrawItem, 0 );
}
}
return TRUE;
}
if( OldNumUnits < CurrentLibEntry->NumOfUnits )
{
DrawItem = CurrentLibEntry->Drawings;
for( ; DrawItem != NULL; DrawItem = DrawItem->Pnext )
{
/* Duplication des items pour autres elements */
if( DrawItem->m_Unit == 1 )
{
for( ii = OldNumUnits + 1; ii <= MaxUnit; ii++ )
{
NextDrawItem = CopyDrawEntryStruct( DrawItem );
NextDrawItem->Pnext = CurrentLibEntry->Drawings;
CurrentLibEntry->Drawings = NextDrawItem;
NextDrawItem->m_Unit = ii;
}
}
}
}
return TRUE;
}
/**********************************************************/
/* void WinEDA_PartPropertiesFrame::SetUnsetConvert() */
/**********************************************************/
/* cre ou efface (selon option AsConvert) les lments
* de la reprsentation convertie d'un composant
*/
bool WinEDA_PartPropertiesFrame::SetUnsetConvert()
{
int FlagDel = 0;
LibEDA_BaseStruct* DrawItem = NULL, * NextDrawItem;
if( g_AsDeMorgan ) /* Representation convertie a creer */
{
/* Traitement des elements a ajouter ( pins seulement ) */
if( CurrentLibEntry )
DrawItem = CurrentLibEntry->Drawings;
for( ; DrawItem != NULL; DrawItem = DrawItem->Pnext )
{
/* Duplication des items pour autres elements */
if( DrawItem->Type() != PIN_DRAW_TYPE )
continue;
if( DrawItem->m_Convert == 1 )
{
if( FlagDel == 0 )
{
if( confirmation( _( "Create pins for Convert items" ) ) == YES )
FlagDel = 1;
else
{
if( confirmation( _( "Part as \"De Morgan\" anymore" ) ) == YES )
return TRUE;
g_AsDeMorgan = 0; return FALSE;
}
}
NextDrawItem = CopyDrawEntryStruct( DrawItem );
NextDrawItem->Pnext = CurrentLibEntry->Drawings;
CurrentLibEntry->Drawings = NextDrawItem;
NextDrawItem->m_Convert = 2;
}
}
}
else /* Representation convertie a supprimer */
{
/* Traitement des elements supprimer */
if( CurrentLibEntry )
DrawItem = CurrentLibEntry->Drawings;
for( ; DrawItem != NULL; DrawItem = NextDrawItem )
{
NextDrawItem = DrawItem->Pnext;
if( DrawItem->m_Convert > 1 ) /* Item a effacer */
{
if( FlagDel == 0 )
{
if( confirmation( _( "Delete Convert items" ) ) == YES )
{
CurrentConvert = 1;
FlagDel = 1;
}
else
{
g_AsDeMorgan = 1;
return FALSE;
}
}
ActiveScreen->SetModify();
DeleteOneLibraryDrawStruct( NULL, CurrentLibEntry, DrawItem, 0 );
}
}
}
return TRUE;
}
/***********************************************************/
/* genliste.cpp */
/* Module de generation de listing de composants, labels.. */
/***********************************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "netlist.h"
#include "protos.h"
/* Structures pour memo et liste des elements */
typedef struct ListLabel
{
int Type();
void * m_Label;
int m_SheetNumber;
} ListLabel;
/* fonctions locales */
static void GenereListeOfItems(wxWindow * frame, const wxString & FullFileName);
static int GenListeGLabels( ListLabel * List );
static int ListTriComposantByRef(EDA_SchComponentStruct **Objet1,
EDA_SchComponentStruct **Objet2);
static int ListTriComposantByVal(EDA_SchComponentStruct **Objet1,
EDA_SchComponentStruct **Objet2);
static int ListTriGLabelBySheet(ListLabel *Objet1, ListLabel *Objet2);
static int ListTriGLabelByVal(ListLabel *Objet1, ListLabel *Objet2);
static void DeleteSubCmp( EDA_BaseStruct ** List , int NbItems);
static int PrintListeCmpByRef( FILE *f, EDA_BaseStruct **List, int NbItems);
static int PrintListeCmpByVal( FILE *f, EDA_BaseStruct **List, int NbItems);
static int PrintListeGLabel( FILE *f, ListLabel *List, int NbItems);
// Constantes:
#define LISTCMP_BY_REF 1
#define LISTCMP_BY_VAL 2
#define LIST_SUBCMP 4
#define LIST_HPINS_BY_NAME 8
#define LIST_HPINS_BY_SHEET 0x10
/* Variable locales */
int ItemsToList = LISTCMP_BY_REF | LISTCMP_BY_VAL;
enum id_tools {
ID_TOOLS_GEN_LIST = 1500,
ID_EXIT_TOOLS,
ID_SET_FILENAME_LIST
};
/* Classe de la frame de gestion de l'annotation */
class WinEDA_GenCmpListFrame: public wxDialog
{
public:
WinEDA_DrawFrame * m_Parent;
wxCheckBox * m_ListCmpbyRefItems;
wxCheckBox * m_ListCmpbyValItems;
wxCheckBox * m_ListSubCmpItems;
wxCheckBox * m_GenListLabelsbyVal;
wxCheckBox * m_GenListLabelsbySheet;
wxString m_LibArchiveFileName;
wxString m_ListFileName;
// Constructor and destructor
WinEDA_GenCmpListFrame(WinEDA_DrawFrame *parent, wxPoint& pos);
~WinEDA_GenCmpListFrame() {};
void GenList(wxCommandEvent& event);
void GenListUpdateOpt();
void ToolsExit(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE(WinEDA_GenCmpListFrame, wxDialog)
EVT_BUTTON(ID_EXIT_TOOLS, WinEDA_GenCmpListFrame::ToolsExit)
EVT_BUTTON(ID_TOOLS_GEN_LIST, WinEDA_GenCmpListFrame::GenList)
END_EVENT_TABLE()
/***************************************************************/
void InstallToolsFrame(WinEDA_DrawFrame *parent, wxPoint & pos)
/***************************************************************/
{
WinEDA_GenCmpListFrame * frame = new WinEDA_GenCmpListFrame(parent, pos);
frame->ShowModal(); frame->Destroy();
}
/*****************************************************************************/
WinEDA_GenCmpListFrame::WinEDA_GenCmpListFrame(WinEDA_DrawFrame *parent,
wxPoint& framepos):
wxDialog(parent, -1, _("List of Material"), framepos, wxSize(360, 200),
DIALOG_STYLE)
/*****************************************************************************/
{
wxPoint pos;
m_Parent = parent;
SetFont(*g_DialogFont);
if ( (framepos.x == -1) && (framepos.x == -1) ) Centre();
/* Calcul du nom du fichier d'archivage */
m_LibArchiveFileName = MakeFileName(wxEmptyString,ScreenSch->m_FileName,wxEmptyString);
/* mise a jour extension */
ChangeFileNameExt(m_LibArchiveFileName, g_LibExtBuffer);
/* Calcul du nom du fichier de listage */
m_ListFileName = MakeFileName(wxEmptyString,ScreenSch->m_FileName,wxEmptyString);
/* mise a jour extension */
ChangeFileNameExt(m_ListFileName, wxT(".lst"));
pos.x = 5; pos.y = 15;
new wxStaticBox(this, -1,_(" List items: "), pos, wxSize(230, 120));
pos.x = 10; pos.y += 22;
m_ListCmpbyRefItems = new wxCheckBox(this,-1, _("Components by Reference"), pos);
if ( ItemsToList & LISTCMP_BY_REF ) m_ListCmpbyRefItems->SetValue(TRUE);
pos.y += 17;
m_ListCmpbyValItems = new wxCheckBox(this,-1, _("Components by Value"), pos);
if ( ItemsToList & LISTCMP_BY_VAL ) m_ListCmpbyValItems->SetValue(TRUE);
pos.y += 17;
m_ListSubCmpItems = new wxCheckBox(this,-1, _("Sub Components (i.e U2A, U2B..)"), pos);
if ( ItemsToList & LIST_SUBCMP ) m_ListSubCmpItems->SetValue(TRUE);
pos.y += 17;
m_GenListLabelsbyVal = new wxCheckBox(this,-1, _("Hierachy Pins by name"), pos);
if ( ItemsToList & LIST_HPINS_BY_NAME ) m_GenListLabelsbyVal->SetValue(TRUE);
pos.y += 17;
m_GenListLabelsbySheet = new wxCheckBox(this,-1, _("Hierachy Pins by Sheets"), pos);
if ( ItemsToList & LIST_HPINS_BY_SHEET ) m_GenListLabelsbySheet->SetValue(TRUE);
/* Creation des boutons de commande */
pos.x = 260; pos.y = 40;
wxButton * Button = new wxButton(this, ID_TOOLS_GEN_LIST,
_("&Create List"), pos);
Button->SetForegroundColour(*wxRED);
pos.y += Button->GetSize().y + 5;
Button = new wxButton(this, ID_EXIT_TOOLS,
_("&Exit"), pos);
Button->SetForegroundColour(*wxBLUE);
}
// Fonctions de positionnement des variables d'option
void WinEDA_GenCmpListFrame::GenListUpdateOpt()
{
ItemsToList = 0;
if ( m_ListCmpbyRefItems->GetValue() ) ItemsToList |= LISTCMP_BY_REF;
if ( m_ListCmpbyValItems->GetValue() ) ItemsToList |= LISTCMP_BY_VAL;
if ( m_ListSubCmpItems->GetValue() ) ItemsToList |= LIST_SUBCMP;
if ( m_GenListLabelsbyVal->GetValue() ) ItemsToList |= LIST_HPINS_BY_NAME;
if ( m_GenListLabelsbySheet->GetValue() ) ItemsToList |= LIST_HPINS_BY_SHEET;
}
void WinEDA_GenCmpListFrame::GenList(wxCommandEvent& event)
{
#define EXT_LIST wxT(".lst")
wxString mask, filename;
GenListUpdateOpt();
mask = wxT("*"); mask += EXT_LIST;
filename = EDA_FileSelector(_("List of material:"),
wxEmptyString, /* Chemin par defaut (ici dir courante) */
m_ListFileName, /* nom fichier par defaut, et resultat */
EXT_LIST, /* extension par defaut */
mask, /* Masque d'affichage */
this,
wxSAVE,
TRUE
);
if ( filename.IsEmpty() ) return;
else m_ListFileName = filename;
GenereListeOfItems(this, m_ListFileName);
Close();
}
void WinEDA_GenCmpListFrame::ToolsExit(wxCommandEvent& event)
{
GenListUpdateOpt();
Close();
}
/***************************************************************************/
static void GenereListeOfItems(wxWindow * frame, const wxString & FullFileName)
/***************************************************************************/
/*
Routine principale pour la creation des listings ( composants et/ou labels
globaux et "sheet labels" )
*/
{
FILE *f;
EDA_BaseStruct ** List;
ListLabel * ListOfLabels;
int NbItems;
char Line[1024];
wxString msg;
/* Creation de la liste des elements */
if ((f = wxFopen(FullFileName, wxT("wt"))) == NULL)
{
msg = _("Failed to open file "); msg << FullFileName;
DisplayError(frame, msg);
return;
}
NbItems = GenListeCmp(NULL );
if ( NbItems )
{
List = (EDA_BaseStruct **)
MyZMalloc( NbItems * sizeof(EDA_BaseStruct **) );
if (List == NULL )
{
fclose(f); return;
}
GenListeCmp(List);
/* generation du fichier listing */
DateAndTime(Line);
fprintf( f, "%s >> Creation date: %s\n", CONV_TO_UTF8(Main_Title), Line );
/* Tri et impression de la liste des composants */
qsort( List, NbItems, sizeof( EDA_BaseStruct * ),
(int(*)(const void*, const void*))ListTriComposantByRef);
if( (ItemsToList & LIST_SUBCMP) == 0 ) DeleteSubCmp(List, NbItems);
if( (ItemsToList & LISTCMP_BY_REF) )
{
PrintListeCmpByRef(f, List, NbItems);
}
if( (ItemsToList & LISTCMP_BY_VAL) )
{
qsort( List, NbItems, sizeof( EDA_BaseStruct * ),
(int(*)(const void*, const void*))ListTriComposantByVal);
PrintListeCmpByVal(f, List, NbItems);
}
MyFree( List );
}
/***************************************/
/* Generation liste des Labels globaux */
/***************************************/
NbItems = GenListeGLabels( NULL );
if ( NbItems )
{
ListOfLabels = (ListLabel *) MyZMalloc( NbItems * sizeof(ListLabel) );
if (ListOfLabels == NULL )
{
fclose(f); return;
}
GenListeGLabels(ListOfLabels);
/* Tri de la liste */
if( (ItemsToList & LIST_HPINS_BY_SHEET) )
{
qsort( ListOfLabels, NbItems, sizeof( ListLabel ),
(int(*)(const void*, const void*))ListTriGLabelBySheet);
msg = _("\n#Glob labels ( order = Sheet Number )\n");
fprintf( f, "%s", CONV_TO_UTF8(msg));
PrintListeGLabel(f, ListOfLabels, NbItems);
}
if( (ItemsToList & LIST_HPINS_BY_NAME) )
{
qsort( ListOfLabels, NbItems, sizeof( ListLabel ),
(int(*)(const void*, const void*))ListTriGLabelByVal);
msg = _("\n#Glob labels ( order = Alphab. )\n");
fprintf( f, "%s", CONV_TO_UTF8(msg));
PrintListeGLabel(f, ListOfLabels, NbItems);
}
MyFree( ListOfLabels );
}
msg = _("\n#End List\n");
fprintf( f, "%s", CONV_TO_UTF8(msg));
fclose(f);
}
/****************************************/
int GenListeCmp( EDA_BaseStruct ** List )
/****************************************/
/* Routine de generation de la liste des elements utiles du dessin
Si List == NULL: comptage des elements
Sinon remplissage de la liste
Initialise "FlagControlMulti" a SheetNumber pour la sortie des listes
et m_Father comme pointeur sur la sheet d'appartenance
*/
{
int ii = 0;
EDA_BaseStruct *DrawList;
EDA_SchComponentStruct *DrawLibItem;
BASE_SCREEN * screen = ScreenSch;
for( ; screen != NULL ; screen = (BASE_SCREEN*)screen->Pnext )
{
DrawList = screen->EEDrawList;
while ( DrawList )
{
switch( DrawList->Type() )
{
case DRAW_LIB_ITEM_STRUCT_TYPE :
ii++;
DrawLibItem = (EDA_SchComponentStruct *) DrawList;
DrawLibItem->m_FlagControlMulti = screen->m_SheetNumber;
DrawLibItem->m_Parent = screen;
if( List )
{
*List = DrawList; List++;
}
break;
default: break;
}
DrawList = DrawList->Pnext;
}
}
return ( ii );
}
/*********************************************/
static int GenListeGLabels( ListLabel * List )
/*********************************************/
/* Count the Glabels, or fill the list Listwith Glabel pointers
If List == NULL: Item count only
Else fill list of Glabels
*/
{
int ii = 0;
EDA_BaseStruct *DrawList;
DrawSheetLabelStruct *SheetLabel;
BASE_SCREEN * screen = ScreenSch;
for( ; screen != NULL ; screen = (BASE_SCREEN*)screen->Pnext )
{
DrawList = screen->EEDrawList;
while ( DrawList )
{
switch( DrawList->Type() )
{
case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
if( List )
{
List->Type() = DRAW_TEXT_STRUCT_TYPE;
List->m_SheetNumber = screen->m_SheetNumber;
List->m_Label = DrawList; List++;
}
ii++;
break;
case DRAW_SHEET_STRUCT_TYPE :
{
#define Sheet ((DrawSheetStruct * ) DrawList)
SheetLabel= Sheet->m_Label;
while( SheetLabel != NULL )
{
if ( List )
{
List->Type() = DRAW_SHEETLABEL_STRUCT_TYPE;
List->m_SheetNumber = screen->m_SheetNumber;
List->m_Label = SheetLabel;
List++;
}
ii++;
SheetLabel = (DrawSheetLabelStruct*)(SheetLabel->Pnext);
}
break;
}
default: break;
}
DrawList = DrawList->Pnext;
}
}
return ( ii );
}
/**********************************************************/
static int ListTriComposantByVal(EDA_SchComponentStruct **Objet1,
EDA_SchComponentStruct **Objet2)
/**********************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
Les composants sont tries
par valeur
si meme valeur: par reference
si meme valeur: par numero d'unite
*/
{
int ii;
const wxString * Text1, *Text2;
if( (*Objet1 == NULL) && (*Objet2 == NULL ) ) return(0);
if( *Objet1 == NULL) return(-1);
if( *Objet2 == NULL) return(1);
Text1 = &(*Objet1)->m_Field[VALUE].m_Text;
Text2 = &(*Objet2)->m_Field[VALUE].m_Text;
ii = Text1->CmpNoCase(*Text2);
if( ii == 0 )
{
Text1 = &(*Objet1)->m_Field[REFERENCE].m_Text;
Text2 = &(*Objet2)->m_Field[REFERENCE].m_Text;
ii = Text1->CmpNoCase(*Text2);
}
if ( ii == 0 )
{
ii = (*Objet1)->m_Multi - (*Objet2)->m_Multi;
}
return(ii);
}
/**********************************************************/
static int ListTriComposantByRef(EDA_SchComponentStruct **Objet1,
EDA_SchComponentStruct **Objet2)
/**********************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
Les composants sont tries
par reference
si meme referenece: par valeur
si meme valeur: par numero d'unite
*/
{
int ii;
const wxString * Text1, *Text2;
if( (*Objet1 == NULL) && (*Objet2 == NULL ) ) return(0);
if( *Objet1 == NULL) return(-1);
if( *Objet2 == NULL) return(1);
Text1 = &(*Objet1)->m_Field[REFERENCE].m_Text;
Text2 = &(*Objet2)->m_Field[REFERENCE].m_Text;
ii = Text1->CmpNoCase(*Text2);
if( ii == 0 )
{
Text1 = &(*Objet1)->m_Field[VALUE].m_Text;
Text2 = &(*Objet2)->m_Field[VALUE].m_Text;
ii = Text1->CmpNoCase(*Text2);
}
if ( ii == 0 )
{
ii = (*Objet1)->m_Multi - (*Objet2)->m_Multi;
}
return(ii);
}
/******************************************************************/
static int ListTriGLabelByVal(ListLabel *Objet1, ListLabel *Objet2)
/*******************************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
Les labels sont tries
par comparaison ascii
si meme valeur: par numero de sheet
*/
{
int ii;
const wxString * Text1, *Text2;
if( Objet1->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
Text1 = &((DrawSheetLabelStruct *)Objet1->m_Label)->m_Text;
else
Text1 = &((DrawTextStruct *)Objet1->m_Label)->m_Text;
if( Objet2->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
Text2 = &((DrawSheetLabelStruct *)Objet2->m_Label)->m_Text;
else
Text2 = &((DrawTextStruct *)Objet2->m_Label)->m_Text;
ii = Text1->CmpNoCase(*Text2);
if ( ii == 0 )
{
ii = Objet1->m_SheetNumber - Objet2->m_SheetNumber;
}
return(ii);
}
/*******************************************************************/
static int ListTriGLabelBySheet(ListLabel *Objet1, ListLabel *Objet2)
/*******************************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
Les labels sont tries
par sheet number
si meme valeur, par ordre alphabetique
*/
{
int ii;
const wxString * Text1, *Text2;
ii = Objet1->m_SheetNumber - Objet2->m_SheetNumber;
if ( ii == 0 )
{
if( Objet1->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
Text1 = &((DrawSheetLabelStruct *)Objet1->m_Label)->m_Text;
else
Text1 = &((DrawTextStruct *)Objet1->m_Label)->m_Text;
if( Objet2->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
Text2 = &((DrawSheetLabelStruct *)Objet2->m_Label)->m_Text;
else
Text2 = &((DrawTextStruct *)Objet2->m_Label)->m_Text;
ii = Text1->CmpNoCase(*Text2);
}
return(ii);
}
/**************************************************************/
static void DeleteSubCmp( EDA_BaseStruct ** List, int NbItems )
/**************************************************************/
/* Supprime les sous-composants, c'est a dire les descriptions redonnantes des
boitiers multiples
La liste des composant doit etre triee par reference et par num d'unite
*/
{
int ii;
EDA_SchComponentStruct * LibItem;
const wxString * OldName = NULL;
for( ii = 0; ii < NbItems ; ii++ )
{
LibItem = (EDA_SchComponentStruct *) List[ii];
if ( LibItem == NULL ) continue;
if( OldName )
{
if ( OldName->CmpNoCase( LibItem->m_Field[REFERENCE].m_Text ) == 0 )
{
List[ii] = NULL;
}
}
OldName = &LibItem->m_Field[REFERENCE].m_Text;
}
}
/**********************************************************************/
int PrintListeCmpByRef( FILE * f, EDA_BaseStruct ** List, int NbItems )
/**********************************************************************/
/* Impression de la liste des composants tries par reference
*/
{
int ii, Multi, Unit;
EDA_BaseStruct *DrawList;
EDA_SchComponentStruct *DrawLibItem;
EDA_LibComponentStruct *Entry;
char NameCmp[80];
wxString msg;
msg = _("\n#Cmp ( order = Reference )");
if ( (ItemsToList & LIST_SUBCMP) ) msg << _(" (with SubCmp)");
fprintf( f, "%s\n", CONV_TO_UTF8(msg));
for ( ii = 0; ii < NbItems; ii++ )
{
DrawList = List[ii];
if( DrawList == NULL ) continue;
if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) continue;
DrawLibItem = (EDA_SchComponentStruct *) DrawList;
if( DrawLibItem->m_Field[REFERENCE].m_Text[0] == '#' ) continue;
Multi = 0; Unit = ' ';
Entry = FindLibPart(DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT);
if( Entry ) Multi = Entry->m_UnitCount;
if( (Multi > 1 ) && ( ItemsToList & LIST_SUBCMP ) )
Unit = DrawLibItem->m_Multi + 'A' - 1;
sprintf( NameCmp,"%s%c", CONV_TO_UTF8(DrawLibItem->m_Field[REFERENCE].m_Text),
Unit);
fprintf(f, "| %-10.10s %-12.12s",
NameCmp,
CONV_TO_UTF8(DrawLibItem->m_Field[VALUE].m_Text));
if ( (ItemsToList & LIST_SUBCMP) )
{
BASE_SCREEN * screen = (BASE_SCREEN *)(DrawLibItem->m_Parent);
wxString sheetname;
if( screen->m_Parent )
sheetname = ((DrawSheetStruct*)screen->m_Parent)->m_Field[VALUE].m_Text.GetData();
else sheetname = _("Root");
fprintf(f, " (Sheet %.2d: \"%s\")", DrawLibItem->m_FlagControlMulti,
CONV_TO_UTF8(sheetname));
}
fprintf(f,"\n");
}
msg = _("#End Cmp\n");
fprintf(f, CONV_TO_UTF8(msg));
return(0);
}
/***********************************************************************/
int PrintListeCmpByVal( FILE * f, EDA_BaseStruct ** List, int NbItems )
/**********************************************************************/
{
int ii, Multi;
wxChar Unit;
EDA_BaseStruct *DrawList;
EDA_SchComponentStruct *DrawLibItem;
EDA_LibComponentStruct *Entry;
wxString msg;
msg = _("\n#Cmp ( order = Value )");
if ( (ItemsToList & LIST_SUBCMP) ) msg << _(" (with SubCmp)");
msg << wxT("\n");
fprintf(f, CONV_TO_UTF8(msg));
for ( ii = 0; ii < NbItems; ii++ )
{
DrawList = List[ii];
if( DrawList == NULL ) continue;
if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) continue;
DrawLibItem = (EDA_SchComponentStruct *) DrawList;
if( DrawLibItem->m_Field[REFERENCE].m_Text[0] == '#' ) continue;
Multi = 0; Unit = ' ';
Entry = FindLibPart(DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT);
if( Entry ) Multi = Entry->m_UnitCount;
if( (Multi > 1 ) && ( ItemsToList & LIST_SUBCMP ) )
Unit = DrawLibItem->m_Multi + 'A' - 1;
msg = DrawLibItem->m_Field[REFERENCE].m_Text;
msg.Append(Unit);
fprintf(f, "| %-12.12s %-10.10s",
CONV_TO_UTF8(DrawLibItem->m_Field[VALUE].m_Text),
CONV_TO_UTF8(msg) );
if ( (ItemsToList & LIST_SUBCMP) )
{
fprintf(f, " (Sheet %.2d)", DrawLibItem->m_FlagControlMulti);
}
fprintf(f,"\n");
}
msg = _("#End Cmp\n");
fprintf(f, CONV_TO_UTF8(msg));
return(0);
}
/******************************************************************/
static int PrintListeGLabel( FILE *f, ListLabel *List, int NbItems)
/******************************************************************/
{
int ii, jj;
DrawGlobalLabelStruct *DrawTextItem;
DrawSheetLabelStruct * DrawSheetLabel;
ListLabel * LabelItem;
wxString msg;
for ( ii = 0; ii < NbItems; ii++ )
{
LabelItem = & List[ii];
switch( LabelItem->Type() )
{
case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
DrawTextItem = (DrawGlobalLabelStruct *)(LabelItem->m_Label);
msg.Printf(
_("> %-28.28s Global (Sheet %.2d) pos: %3.3f, %3.3f\n"),
DrawTextItem->m_Text.GetData(),
LabelItem->m_SheetNumber,
(float)DrawTextItem->m_Pos.x / 1000,
(float)DrawTextItem->m_Pos.y / 1000);
fprintf(f, CONV_TO_UTF8(msg));
break;
case DRAW_SHEETLABEL_STRUCT_TYPE :
{
DrawSheetLabel = (DrawSheetLabelStruct *) LabelItem->m_Label;
jj = DrawSheetLabel->m_Shape;
if ( jj < 0 ) jj = NET_TMAX; if ( jj > NET_TMAX ) jj = 4;
wxString labtype = CONV_FROM_UTF8(SheetLabelType[jj]);
msg.Printf(
_("> %-28.28s Sheet %-7.7s (Sheet %.2d) pos: %3.3f, %3.3f\n"),
DrawSheetLabel->m_Text.GetData(),
labtype.GetData(),
LabelItem->m_SheetNumber,
(float)DrawSheetLabel->m_Pos.x / 1000,
(float)DrawSheetLabel->m_Pos.y / 1000);
fprintf(f, CONV_TO_UTF8(msg));
}
break;
default: break;
}
}
msg = _("#End labels\n");
fprintf(f, CONV_TO_UTF8(msg));
return(0);
}
/**************************************************************/
/* librairy editor: edition of component general properties */
/**************************************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
#include "wx/spinctrl.h"
/* Routines locales */
/* Variables locales */
extern int CurrentUnit;
/* Classe de la frame des proprits d'un composant en librairie */
enum id_libedit {
ID_LIBEDIT_NOTEBOOK = 3200,
ID_PANEL_BASIC,
ID_PANEL_ALIAS,
ID_PANEL_REFERENCE,
ID_PANEL_VALUE,
ID_PANEL_FOOTPRINT,
ID_PANEL_SUBSCHEMATIC,
ID_PANEL_FIELD1,
ID_PANEL_FIELD2,
ID_PANEL_FIELD3,
ID_PANEL_FIELD4,
ID_PANEL_FIELD5,
ID_PANEL_FIELD6,
ID_PANEL_FIELD7,
ID_PANEL_FIELD8,
ID_CLOSE_PART_PROPERTIES,
ID_ACCEPT_PART_PROPERTIES,
ID_COPY_DOC_TO_ALIAS,
ID_BROWSE_DOC_FILES,
ID_ADD_ALIAS,
ID_DELETE_ONE_ALIAS,
ID_DELETE_ALL_ALIAS
};
/************************************************/
class WinEDA_PartPropertiesFrame : public wxDialog
/************************************************/
/* Cette classe genere une fenetre type NoteBook, pour l'edition des proprits
* d'un composant le librairie.
* On peut diter:
* Texte dimensions et justification de tous les champs (Ref, Val, et autres champs)
* Documentation et mots clefs
* Nombre de part par boitier
* et autres proprirs gnrales
*/
{
private:
WinEDA_LibeditFrame* m_Parent;
wxNotebook* m_NoteBook;
wxListBox* m_PartAliasList;
wxPanel* m_PanelBasic;
wxPanel* m_PanelAlias;
wxPanel* m_PanelDoc;
wxPanel* PanelField[NUMBER_OF_FIELDS];
wxCheckBox* AsConvertButt;
wxCheckBox* ShowFieldText[NUMBER_OF_FIELDS];
wxCheckBox* VorientFieldText[NUMBER_OF_FIELDS];
wxCheckBox* ShowPinNumButt;
wxCheckBox* ShowPinNameButt;
wxCheckBox* m_PinsNameInsideButt;
wxSpinCtrl* SelNumberOfUnits;
wxSpinCtrl* m_SetSkew;
wxCheckBox* m_OptionPower;
wxCheckBox* m_OptionPartsLocked;
WinEDA_GraphicTextCtrl* FieldTextCtrl[NUMBER_OF_FIELDS];
WinEDA_PositionCtrl* FieldPosition[NUMBER_OF_FIELDS];
int FieldFlags[NUMBER_OF_FIELDS];
int FieldOrient[NUMBER_OF_FIELDS];
wxRadioBox* FieldHJustify[NUMBER_OF_FIELDS];
wxRadioBox* FieldVJustify[NUMBER_OF_FIELDS];
WinEDA_EnterText* m_Doc;
WinEDA_EnterText* m_Docfile;
WinEDA_EnterText* m_Keywords;
bool m_RecreateToolbar;
int m_AliasLocation;
public:
// Constructor and destructor
WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame * parent, wxPoint & pos );
~WinEDA_PartPropertiesFrame()
{
};
private:
void BuildPanelBasic();
void BuildPanelDoc();
void BuildPanelAlias();
void BuildPanelEditField( int fieldId );
void PartPropertiesAccept( wxCommandEvent& event );
void OnQuit( wxCommandEvent& event );
void DeleteAllAliasOfPart( wxCommandEvent& event );
void DeleteAliasOfPart( wxCommandEvent& event );
void AddAliasOfPart( wxCommandEvent& event );
bool ChangeNbUnitsPerPackage( int newUnit );
bool SetUnsetConvert();
void CopyDocToAlias( wxCommandEvent& event );
void BrowseAndSelectDocFile( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE( WinEDA_PartPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_PART_PROPERTIES, WinEDA_PartPropertiesFrame::PartPropertiesAccept )
EVT_BUTTON( ID_CLOSE_PART_PROPERTIES, WinEDA_PartPropertiesFrame::OnQuit )
EVT_BUTTON( ID_ADD_ALIAS, WinEDA_PartPropertiesFrame::AddAliasOfPart )
EVT_BUTTON( ID_DELETE_ONE_ALIAS, WinEDA_PartPropertiesFrame::DeleteAliasOfPart )
EVT_BUTTON( ID_DELETE_ALL_ALIAS, WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart )
EVT_BUTTON( ID_COPY_DOC_TO_ALIAS, WinEDA_PartPropertiesFrame::CopyDocToAlias )
EVT_BUTTON( ID_BROWSE_DOC_FILES, WinEDA_PartPropertiesFrame::BrowseAndSelectDocFile )
END_EVENT_TABLE()
/*****************************************************************/
void WinEDA_LibeditFrame::InstallLibeditFrame( const wxPoint& pos )
/*****************************************************************/
{
wxPoint fpos = pos;
WinEDA_PartPropertiesFrame* frame =
new WinEDA_PartPropertiesFrame( this, fpos );
frame->ShowModal(); frame->Destroy();
}
#define XSIZE 370
#define YSIZE 385
/**********************************************************************************/
WinEDA_PartPropertiesFrame::WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame* parent,
wxPoint& framepos ) :
wxDialog( parent, -1, wxEmptyString, framepos, wxSize( XSIZE, YSIZE ),
DIALOG_STYLE )
/**********************************************************************************/
{
wxPoint pos;
wxLayoutConstraints* c;
wxString msg_text;
wxButton* Button;
int ii;
m_Parent = parent;
m_RecreateToolbar = FALSE;
SetFont( *g_DialogFont );
SetAutoLayout( TRUE );
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
FieldFlags[ii] = 0;
m_AliasLocation = -1;
if( CurrentLibEntry )
{
msg_text = _( "Properties for " );
if( !CurrentAliasName.IsEmpty() )
{
m_AliasLocation = LocateAlias( CurrentLibEntry->m_AliasList, CurrentAliasName );
SetTitle( msg_text + CurrentAliasName +
_( "(alias of " ) +
wxString( CurrentLibEntry->m_Name.m_Text )
+ wxT( ")" ) );
}
else
{
SetTitle( msg_text + CurrentLibEntry->m_Name.m_Text );
CurrentAliasName.Empty();
}
FieldFlags[REFERENCE] = CurrentLibEntry->m_Prefix.m_Attributs;
FieldOrient[REFERENCE] = CurrentLibEntry->m_Prefix.m_Orient;
FieldFlags[VALUE] = CurrentLibEntry->m_Name.m_Attributs;
FieldOrient[VALUE] = CurrentLibEntry->m_Name.m_Orient;
LibDrawField* Field = CurrentLibEntry->Fields;
while( Field )
{
FieldFlags[Field->m_FieldId] = Field->m_Attributs;
FieldOrient[Field->m_FieldId] = Field->m_Orient;
Field = (LibDrawField*) Field->Pnext;
}
}
else
SetTitle( _( "Lib Component Properties" ) );
m_NoteBook = new wxNotebook( this, ID_LIBEDIT_NOTEBOOK,
wxDefaultPosition, wxSize (XSIZE - 6, YSIZE - 70) );
SetFont( *g_DialogFont );
m_NoteBook->SetAutoLayout( TRUE );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 4 );
c->right.SameAs( this, wxRight, 4 );
c->top.SameAs( this, wxTop, 4 );
c->bottom.SameAs( this, wxBottom, 40 );
m_NoteBook->SetConstraints( c );
/* Creation des boutons de commande */
pos.x = 50; pos.y = YSIZE - 60;
Button = new wxButton( this, ID_CLOSE_PART_PROPERTIES,
_( "Cancel" ), pos );
Button->SetForegroundColour( *wxBLUE );
c = new wxLayoutConstraints;
c->left.SameAs( this, wxLeft, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
Button->SetConstraints( c );
pos.x += Button->GetDefaultSize().x + 70;
Button = new wxButton( this, ID_ACCEPT_PART_PROPERTIES,
_( "OK" ), pos );
Button->SetForegroundColour( *wxRED );
c = new wxLayoutConstraints;
c->right.SameAs( this, wxRight, 20 );
c->height.AsIs();
c->width.AsIs();
c->bottom.SameAs( this, wxBottom, 5 );
Button->SetConstraints( c );
// Add panel Basic
BuildPanelBasic();
m_NoteBook->AddPage( m_PanelBasic, _( "Options" ), TRUE );
// Add Panel Documentation
BuildPanelDoc();
m_NoteBook->AddPage( m_PanelDoc, _( "Doc" ), FALSE );
// Add Panel Alias List
BuildPanelAlias();
m_NoteBook->AddPage( m_PanelAlias, _( "Alias" ), FALSE );
// Add panel Fields
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
BuildPanelEditField( ii );
}
/*****************************************************/
void WinEDA_PartPropertiesFrame::BuildPanelAlias()
/*****************************************************/
/* create the panel for component alias list editing
*/
{
wxPoint pos;
wxButton* Button;
m_PanelAlias = new wxPanel( m_NoteBook, -1 );
m_PanelAlias->SetFont( *g_DialogFont );
wxLayoutConstraints* c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
m_PanelAlias->SetConstraints( c );
pos.x = 200; pos.y = 70;
Button = new wxButton( m_PanelAlias, ID_ADD_ALIAS, _( "Add" ), pos );
Button->SetForegroundColour( *wxBLUE );
pos.y += Button->GetSize().y + 10;
Button = new wxButton( m_PanelAlias, ID_DELETE_ONE_ALIAS,
_( "Delete" ), pos );
Button->SetForegroundColour( *wxRED );
pos.y += Button->GetSize().y + 10;
Button = new wxButton( m_PanelAlias, ID_DELETE_ALL_ALIAS,
_( "Delete All" ), pos );
Button->SetForegroundColour( *wxRED );
if( !CurrentAliasName.IsEmpty() )
Button->Enable( FALSE );
pos.x = 5; pos.y = 30;
m_PartAliasList = new wxListBox( m_PanelAlias,
-1,
pos, wxSize( 160, 170 ),
0, NULL,
wxLB_ALWAYS_SB | wxLB_SINGLE );
wxStaticText* Msg = new wxStaticText( m_PanelAlias, -1, _( "Alias" ),
wxPoint (pos.x, pos.y - 20) );
Msg->SetForegroundColour( wxColour( 200, 0, 0 ) );
/* lecture des noms des alias */
if( CurrentLibEntry )
{
for( unsigned ii = 0; ii < CurrentLibEntry->m_AliasList.GetCount(); ii += ALIAS_NEXT )
m_PartAliasList->Append( CurrentLibEntry->m_AliasList[ii + ALIAS_NAME] );
}
}
/*****************************************************/
void WinEDA_PartPropertiesFrame::BuildPanelDoc()
/*****************************************************/
/* create the panel for component doc editing
*/
{
wxPoint pos;
wxButton* Button;
wxString msg_text;
m_PanelDoc = new wxPanel( m_NoteBook, -1 );
m_PanelDoc->SetFont( *g_DialogFont );
wxLayoutConstraints* c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
m_PanelDoc->SetConstraints( c );
pos.x = 5; pos.y = 15;
if( CurrentLibEntry )
{
msg_text = _( "Properties for " );
if( !CurrentAliasName.IsEmpty() )
{
msg_text += _( "alias " );
msg_text += CurrentAliasName;
}
else
{
msg_text += CurrentLibEntry->m_Name.m_Text;
}
wxStaticText* text = new wxStaticText( m_PanelDoc, -1, msg_text, pos );
text->SetForegroundColour( *wxBLUE );
}
pos.y += 30;
if( m_AliasLocation >= 0 )
msg_text = CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_DOC];
else
{
if( CurrentLibEntry && CurrentLibEntry->m_Doc )
msg_text = CurrentLibEntry->m_Doc;
}
m_Doc = new WinEDA_EnterText( m_PanelDoc,
_( "Doc:" ), msg_text,
pos, wxSize( 285, -1 ) );
pos.y += 40;
msg_text.Empty();
if( m_AliasLocation >= 0 )
msg_text = CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_KEYWORD];
else
{
if( CurrentLibEntry )
msg_text = CurrentLibEntry->m_KeyWord;
}
m_Keywords = new WinEDA_EnterText( m_PanelDoc,
_( "Keywords:" ), msg_text,
pos, wxSize( 285, -1 ) );
pos.y += 40;
msg_text.Empty();
if( m_AliasLocation >= 0 )
msg_text = CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_DOC_FILENAME];
else
{
if( CurrentLibEntry )
msg_text = CurrentLibEntry->m_DocFile;
}
m_Docfile = new WinEDA_EnterText( m_PanelDoc,
_( "DocFileName:" ), msg_text,
pos, wxSize( 285, -1 ) );
pos.y += 40;
Button = new wxButton( m_PanelDoc, ID_COPY_DOC_TO_ALIAS,
_( "Copy Doc" ), pos );
Button->SetForegroundColour( *wxRED );
if( m_AliasLocation < 0 )
Button->Enable( FALSE );
Button = new wxButton( m_PanelDoc, ID_BROWSE_DOC_FILES,
_( "Browse DocFiles" ), wxPoint (pos.x + 140, pos.y) );
Button->SetForegroundColour( *wxBLUE );
}
/*****************************************************/
void WinEDA_PartPropertiesFrame::BuildPanelBasic()
/*****************************************************/
/* create the basic panel for component properties editing
*/
{
wxPoint pos;
m_PanelBasic = new wxPanel( m_NoteBook, ID_PANEL_BASIC );
m_PanelBasic->SetFont( *g_DialogFont );
wxLayoutConstraints* c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
m_PanelBasic->SetConstraints( c );
pos.x = 5; pos.y = 25;
new wxStaticBox( m_PanelBasic, -1, _( "General :" ), pos, wxSize( 250, 120 ) );
pos.x = 10; pos.y += 22;
AsConvertButt = new wxCheckBox( m_PanelBasic, -1, _( "As Convert" ), pos );
if( g_AsDeMorgan )
AsConvertButt->SetValue( TRUE );
pos.y += 20;
ShowPinNumButt = new wxCheckBox( m_PanelBasic, -1, _( "Show Pin Num" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->m_DrawPinNum )
ShowPinNumButt->SetValue( TRUE );
}
else
ShowPinNumButt->SetValue( TRUE );
pos.y += 20;
ShowPinNameButt = new wxCheckBox( m_PanelBasic, -1, _( "Show Pin Name" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->m_DrawPinName )
ShowPinNameButt->SetValue( TRUE );
}
else
ShowPinNameButt->SetValue( TRUE );
pos.y += 20;
m_PinsNameInsideButt = new wxCheckBox( m_PanelBasic, -1, _( "Pin Name Inside" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->m_TextInside )
m_PinsNameInsideButt->SetValue( TRUE );
}
else
m_PinsNameInsideButt->SetValue( TRUE );
pos.y += 40;
new wxStaticText( m_PanelBasic, -1, _( "Number of Units:" ), pos );
pos.y += 15;
wxString number;
if( CurrentLibEntry )
number.Printf( wxT( "%d" ), CurrentLibEntry->m_UnitCount );
else
number = wxT( "1" );
SelNumberOfUnits = new wxSpinCtrl( m_PanelBasic, -1, number, pos,
wxDefaultSize, wxSP_ARROW_KEYS | wxSP_WRAP,
1, 16 );
pos.y -= 15; pos.x += 180;
new wxStaticText( m_PanelBasic, -1, _( "Skew:" ), pos );
pos.y += 15;
if( CurrentLibEntry && CurrentLibEntry->m_TextInside )
number.Printf( wxT( "%d" ), CurrentLibEntry->m_TextInside );
else
number = wxT( "40" );
m_SetSkew = new wxSpinCtrl( m_PanelBasic, -1, number, pos,
wxDefaultSize, wxSP_ARROW_KEYS | wxSP_WRAP,
1, 100 );
pos.x = 5; pos.y += 40;
m_OptionPower = new wxCheckBox( m_PanelBasic, -1, _( "Power Symbol" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->m_Options == ENTRY_POWER )
m_OptionPower->SetValue( TRUE );
}
pos.y = m_OptionPower->GetRect().GetBottom() + 10;
m_OptionPartsLocked = new wxCheckBox( m_PanelBasic, -1, _( "Parts are locked" ), pos );
if( CurrentLibEntry )
{
if( CurrentLibEntry->m_UnitSelectionLocked )
m_OptionPartsLocked->SetValue( TRUE );
}
if( number == wxT( "1" ) )
m_OptionPartsLocked->Enable( FALSE );
}
/****************************************************************/
void WinEDA_PartPropertiesFrame::BuildPanelEditField( int fieldId )
/****************************************************************/
{
wxPoint pos;
int xx, yy;
LibDrawField* Field;
wxString Hjustify_list[] =
{ _( "Left justify" ), _( "Center" ), _( "Right justify" ) };
wxString Vjustify_list[] =
{ _( "Bottom justify" ), _( "Center" ), _( "Top justify" ) };
int ii = fieldId;
PanelField[ii] = new wxPanel( m_NoteBook, ID_PANEL_REFERENCE + ii );
PanelField[ii]->SetFont( *g_DialogFont );
wxLayoutConstraints* c = new wxLayoutConstraints;
c->left.SameAs( m_NoteBook, wxLeft );
c->right.SameAs( m_NoteBook, wxRight );
c->bottom.SameAs( m_NoteBook, wxBottom );
PanelField[ii]->SetConstraints( c );
m_NoteBook->AddPage( PanelField[ii], DrawPartStruct::ReturnFieldName( ii ), FALSE );
pos.x = 10; pos.y = 10;
ShowFieldText[ii] = new wxCheckBox( PanelField[ii], -1,
_( "Show Text" ), pos );
if( (FieldFlags[ii] & TEXT_NO_VISIBLE ) == 0 )
ShowFieldText[ii]->SetValue( TRUE );
ShowFieldText[ii]->GetSize( &xx, &yy );
pos.y += yy + 5;
VorientFieldText[ii] = new wxCheckBox( PanelField[ii], -1,
_( "Vertical" ), pos );
if( FieldOrient[ii] )
VorientFieldText[ii]->SetValue( TRUE );
pos.x = 150; pos.y = 5;
FieldHJustify[ii] = new wxRadioBox( PanelField[ii], -1,
_( "Hor Justify" ), pos, wxDefaultSize,
3, Hjustify_list, 1, wxRA_SPECIFY_COLS );
FieldHJustify[ii]->GetSize( &xx, &yy );
FieldHJustify[ii]->SetSelection( 1 );
pos.y += yy + 5;
FieldVJustify[ii] = new wxRadioBox( PanelField[ii], -1,
_( "Vert Justify" ), pos, wxDefaultSize,
3, Vjustify_list, 1, wxRA_SPECIFY_COLS );
FieldVJustify[ii]->SetSelection( 1 );
wxPoint txtpos;
pos.x = 10; pos.y = 70;
#define POSY_OFFSET 70
switch( ii )
{
case REFERENCE:
if( CurrentLibEntry )
{
Field = &CurrentLibEntry->m_Prefix;
txtpos = Field->m_Pos;
if( Field->m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
FieldHJustify[ii]->SetSelection( 0 );
else if( Field->m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
FieldHJustify[ii]->SetSelection( 2 );
if( Field->m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
FieldVJustify[ii]->SetSelection( 0 );
else if( Field->m_VJustify == GR_TEXT_VJUSTIFY_TOP )
FieldVJustify[ii]->SetSelection( 2 );
}
else
txtpos = wxPoint( 0, 0 );
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
_( "Pos" ), txtpos,
g_UnitMetric, pos );
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl(
PanelField[ii],
DrawPartStruct::ReturnFieldName (ii),
CurrentLibEntry ?
CurrentLibEntry->m_Prefix.m_Text.GetData ()
: wxT(
"U" ),
CurrentLibEntry ? CurrentLibEntry->
m_Prefix.m_Size.x : DEFAULT_TEXT_SIZE,
g_UnitMetric,
wxPoint (pos.x, pos.y +
FieldPosition[ii]->GetDimension ().y + POSY_OFFSET),
200,
TRUE );
break;
case VALUE:
if( CurrentLibEntry )
{
Field = &CurrentLibEntry->m_Name;
txtpos = Field->m_Pos;
if( Field->m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
FieldHJustify[ii]->SetSelection( 0 );
else if( Field->m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
FieldHJustify[ii]->SetSelection( 2 );
if( Field->m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
FieldVJustify[ii]->SetSelection( 0 );
else if( Field->m_VJustify == GR_TEXT_VJUSTIFY_TOP )
FieldVJustify[ii]->SetSelection( 2 );
}
else
txtpos = wxPoint( 0, 0 );
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
_( "Pos" ), txtpos,
g_UnitMetric, pos );
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl(
PanelField[ii],
DrawPartStruct::ReturnFieldName (ii),
CurrentLibEntry ? CurrentLibEntry->m_Name.
m_Text.GetData () : NULL,
CurrentLibEntry ? CurrentLibEntry->m_Name.
m_Size.x : DEFAULT_TEXT_SIZE,
g_UnitMetric,
wxPoint (pos.x, pos.y +
FieldPosition[ii]->GetDimension ().y + POSY_OFFSET),
200,
TRUE );
break;
default:
int fsize;
wxString ftext;
wxPoint fpos;
fsize = DEFAULT_TEXT_SIZE;;
Field = NULL;
fpos = wxPoint( 0, 0 );
//recherche du Field de FieldId correspondant, s'il existe
if( CurrentLibEntry )
{
Field = CurrentLibEntry->Fields;
while( Field )
{
if( Field->m_FieldId == ii )
{
fsize = Field->m_Size.x;
ftext = Field->m_Text;
fpos = Field->m_Pos;
if( Field->m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
FieldHJustify[ii]->SetSelection( 0 );
else if( Field->m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
FieldHJustify[ii]->SetSelection( 2 );
if( Field->m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
FieldVJustify[ii]->SetSelection( 0 );
else if( Field->m_VJustify == GR_TEXT_VJUSTIFY_TOP )
FieldVJustify[ii]->SetSelection( 2 );
break;
}
Field = (LibDrawField*) Field->Pnext;
}
}
FieldPosition[ii] = new WinEDA_PositionCtrl( PanelField[ii],
_( "Pos" ), fpos,
g_UnitMetric, pos );
FieldTextCtrl[ii] = new WinEDA_GraphicTextCtrl(
PanelField[ii],
DrawPartStruct::ReturnFieldName (ii),
ftext,
fsize,
g_UnitMetric,
wxPoint (pos.x, pos.y +
FieldPosition[ii]->GetDimension ().y + POSY_OFFSET),
200,
TRUE );
break;
}
}
/************************************************************************/
void WinEDA_PartPropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) )
/************************************************************************/
{
// true is to force the frame to close
Close( true );
}
/**************************************************************************/
void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
/**************************************************************************/
/* Met a jour les differents parametres pour le composant en cours d'dition
*/
{
int ii, jj;
int hjustify[3] = {
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_CENTER,
GR_TEXT_HJUSTIFY_RIGHT
};
int vjustify[3] = {
GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER,
GR_TEXT_VJUSTIFY_TOP
};
if( CurrentLibEntry == NULL )
{
Close(); return;
}
m_Parent->m_CurrentScreen->SetModify();
m_Parent->m_CurrentScreen->SetRefreshReq();
m_Parent->SaveCopyInUndoList();
/* A new name could be entered in VALUE field.
* Must not be an existing alias name in alias list box */
jj = m_PartAliasList->GetCount();
wxString newvalue = FieldTextCtrl[VALUE]->GetText();
for( ii = 0; ii < jj; ii++ )
{
if( newvalue.CmpNoCase( m_PartAliasList->GetString( ii ).GetData() ) == 0 )
{
wxString msg;
msg.Printf( wxT( "Alias %s exists!" ), newvalue.GetData() );
DisplayError( this, msg );
return;
}
}
/* Update the doc, keyword and doc filename strings */
if( m_AliasLocation < 0 )
{
CurrentLibEntry->m_Doc = m_Doc->GetValue();
CurrentLibEntry->m_KeyWord = m_Keywords->GetValue();
CurrentLibEntry->m_DocFile = m_Docfile->GetValue();
}
else
{
CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_DOC] = m_Doc->GetValue();
CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_KEYWORD] = m_Keywords->GetValue();
CurrentLibEntry->m_AliasList[m_AliasLocation + ALIAS_DOC_FILENAME] = m_Docfile->GetValue();
}
/* Update the alias list */
/* 1 - Add names: test for a not existing name in old alias list: */
jj = m_PartAliasList->GetCount();
for( ii = 0; ii < jj; ii++ )
{
if( LocateAlias( CurrentLibEntry->m_AliasList, m_PartAliasList->GetString( ii ) ) < 0 )
{ // new alias must be created
CurrentLibEntry->m_AliasList.Add( m_PartAliasList->GetString( ii ) );
CurrentLibEntry->m_AliasList.Add( wxEmptyString ); // Add a void doc string
CurrentLibEntry->m_AliasList.Add( wxEmptyString ); // Add a void keyword list string
CurrentLibEntry->m_AliasList.Add( wxEmptyString ); // Add a void doc filename string
}
}
/* 2 - Remove delete names: test for an non existing name in new alias list: */
int kk, kkmax = CurrentLibEntry->m_AliasList.GetCount();
for( kk = 0; kk < kkmax; )
{
jj = m_PartAliasList->GetCount();
wxString aliasname = CurrentLibEntry->m_AliasList[kk];
for( ii = 0; ii < jj; ii++ )
{
if( aliasname.CmpNoCase( m_PartAliasList->GetString( ii ).GetData() ) == 0 )
{
kk += ALIAS_NEXT; // Alias exist in new list. keep it and test next old name
break;
}
}
if( ii == jj ) // Alias not found in new list, remove it (4 strings in kk position)
{
for( ii = 0; ii < ALIAS_NEXT; ii++ )
CurrentLibEntry->m_AliasList.RemoveAt( kk );
kkmax = CurrentLibEntry->m_AliasList.GetCount();
}
}
if( !FieldTextCtrl[REFERENCE]->GetText().IsEmpty() )
{
CurrentLibEntry->m_Prefix.m_Text = FieldTextCtrl[REFERENCE]->GetText();
}
if( !FieldTextCtrl[VALUE]->GetText().IsEmpty() )
{
if( CurrentLibEntry->m_Name.m_Text != FieldTextCtrl[VALUE]->GetText() )
{
m_RecreateToolbar = TRUE;
CurrentLibEntry->m_Name.m_Text = FieldTextCtrl[VALUE]->GetText();
}
}
CurrentLibEntry->m_Prefix.m_Size.x =
CurrentLibEntry->m_Prefix.m_Size.y = FieldTextCtrl[REFERENCE]->GetTextSize();
CurrentLibEntry->m_Name.m_Size.x =
CurrentLibEntry->m_Name.m_Size.y = FieldTextCtrl[VALUE]->GetTextSize();
CurrentLibEntry->m_Prefix.m_Pos = FieldPosition[REFERENCE]->GetValue();
CurrentLibEntry->m_Name.m_Pos = FieldPosition[VALUE]->GetValue();
CurrentLibEntry->m_Prefix.m_Orient = VorientFieldText[REFERENCE]->GetValue() ? 1 : 0;
CurrentLibEntry->m_Name.m_Orient = VorientFieldText[VALUE]->GetValue() ? 1 : 0;
CurrentLibEntry->m_Prefix.m_HJustify =
hjustify[FieldHJustify[REFERENCE]->GetSelection()];
CurrentLibEntry->m_Prefix.m_VJustify =
vjustify[FieldVJustify[REFERENCE]->GetSelection()];
CurrentLibEntry->m_Name.m_HJustify =
hjustify[FieldHJustify[VALUE]->GetSelection()];
CurrentLibEntry->m_Name.m_VJustify =
vjustify[FieldVJustify[VALUE]->GetSelection()];
if( ShowFieldText[REFERENCE]->GetValue() )
CurrentLibEntry->m_Prefix.m_Attributs &= ~TEXT_NO_VISIBLE;
else
CurrentLibEntry->m_Prefix.m_Attributs |= TEXT_NO_VISIBLE;
if( ShowFieldText[VALUE]->GetValue() )
CurrentLibEntry->m_Name.m_Attributs &= ~TEXT_NO_VISIBLE;
else
CurrentLibEntry->m_Name.m_Attributs |= TEXT_NO_VISIBLE;
for( ii = FOOTPRINT; ii < NUMBER_OF_FIELDS; ii++ )
{
LibDrawField* Field = CurrentLibEntry->Fields;
LibDrawField* NextField, * previousField = NULL;
while( Field )
{
NextField = (LibDrawField*) Field->Pnext;
if( Field->m_FieldId == ii )
{
Field->m_Text = FieldTextCtrl[ii]->GetText();
Field->m_Size.x = Field->m_Size.y = FieldTextCtrl[ii]->GetTextSize();
Field->m_HJustify = FieldHJustify[ii]->GetSelection();
Field->m_VJustify = FieldVJustify[ii]->GetSelection();
if( ShowFieldText[ii]->GetValue() )
Field->m_Attributs &= ~TEXT_NO_VISIBLE;
else
Field->m_Attributs |= TEXT_NO_VISIBLE;
Field->m_Orient = VorientFieldText[ii]->GetValue() ? 1 : 0;
Field->m_Pos = FieldPosition[ii]->GetValue();
if( Field->m_Text.IsEmpty() ) // An old field exists; new is void, delete it
{
delete Field;
if( previousField )
previousField->Pnext = NextField;
else
CurrentLibEntry->Fields = NextField;
}
break;
}
previousField = Field;
Field = NextField;
}
if( (Field == NULL) && ( !FieldTextCtrl[ii]->GetText().IsEmpty() ) )
{ // Do not exists: must be created
Field = new LibDrawField( ii );
Field->m_Text = FieldTextCtrl[ii]->GetText();
Field->m_Size.x = Field->m_Size.y = FieldTextCtrl[ii]->GetTextSize();
if( ShowFieldText[Field->m_FieldId]->GetValue() )
Field->m_Attributs &= ~TEXT_NO_VISIBLE;
else
Field->m_Attributs |= TEXT_NO_VISIBLE;
Field->m_Orient = VorientFieldText[Field->m_FieldId]->GetValue() ? 1 : 0;
Field->m_Pos = FieldPosition[Field->m_FieldId]->GetValue();
Field->m_HJustify = hjustify[FieldHJustify[Field->m_FieldId]->GetSelection()];
Field->m_VJustify = vjustify[FieldVJustify[Field->m_FieldId]->GetSelection()];
Field->Pnext = CurrentLibEntry->Fields;
CurrentLibEntry->Fields = Field;
}
}
ii = SelNumberOfUnits->GetValue();
if( ChangeNbUnitsPerPackage( ii ) )
m_RecreateToolbar = TRUE;
if( AsConvertButt->GetValue() )
{
if( !g_AsDeMorgan )
{
g_AsDeMorgan = 1;
if( SetUnsetConvert() )
m_RecreateToolbar = TRUE;
}
}
else
{
if( g_AsDeMorgan )
{
g_AsDeMorgan = 0;
if( SetUnsetConvert() )
m_RecreateToolbar = TRUE;
}
}
CurrentLibEntry->m_DrawPinNum = ShowPinNumButt->GetValue() ? 1 : 0;
CurrentLibEntry->m_DrawPinName = ShowPinNameButt->GetValue() ? 1 : 0;
if( m_PinsNameInsideButt->GetValue() == FALSE )
CurrentLibEntry->m_TextInside = 0;
else
CurrentLibEntry->m_TextInside = m_SetSkew->GetValue();
if( m_OptionPower->GetValue() == TRUE )
CurrentLibEntry->m_Options = ENTRY_POWER;
else
CurrentLibEntry->m_Options = ENTRY_NORMAL;
/* Set the option "Units locked".
* Obviously, cannot be TRUE if there is only one part */
CurrentLibEntry->m_UnitSelectionLocked = m_OptionPartsLocked->GetValue();
if( CurrentLibEntry->m_UnitCount <= 1 )
CurrentLibEntry->m_UnitSelectionLocked = FALSE;
if( m_RecreateToolbar )
m_Parent->ReCreateHToolbar();
m_Parent->DisplayLibInfos();
Close();
}
/*******************************************************************************/
void WinEDA_PartPropertiesFrame::CopyDocToAlias( wxCommandEvent& WXUNUSED (event) )
/******************************************************************************/
{
if( CurrentLibEntry == NULL )
return;
if( CurrentAliasName.IsEmpty() )
return;
m_Doc->SetValue( CurrentLibEntry->m_Doc );
m_Docfile->SetValue( CurrentLibEntry->m_DocFile );
m_Keywords->SetValue( CurrentLibEntry->m_KeyWord );
}
/**********************************************************/
void WinEDA_PartPropertiesFrame::DeleteAllAliasOfPart(
wxCommandEvent& WXUNUSED (event) )
/**********************************************************/
{
CurrentAliasName.Empty();
if( CurrentLibEntry )
{
if( IsOK( this, _( "Ok to Delete Alias LIST" ) ) )
{
m_PartAliasList->Clear();
m_RecreateToolbar = TRUE;
}
}
}
/*******************************************************************************/
void WinEDA_PartPropertiesFrame::AddAliasOfPart( wxCommandEvent& WXUNUSED (event) )
/*******************************************************************************/
/* Add a new name to the alias list box
* New name cannot be the root name, and must not exists
*/
{
wxString Line;
wxString aliasname;
if( CurrentLibEntry == NULL )
return;
if( Get_Message( _( "New alias:" ), Line, this ) != 0 )
return;
Line.Replace( wxT( " " ), wxT( "_" ) );
aliasname = Line;
if( CurrentLibEntry->m_Name.m_Text.CmpNoCase( Line ) == 0 )
{
DisplayError( this, _( "This is the Root Part" ), 10 ); return;
}
/* test for an existing name: */
int ii, jj = m_PartAliasList->GetCount();
for( ii = 0; ii < jj; ii++ )
{
if( aliasname.CmpNoCase( m_PartAliasList->GetString( ii ) ) == 0 )
{
DisplayError( this, _( "Already in use" ), 10 );
return;
}
}
m_PartAliasList->Append( aliasname );
m_RecreateToolbar = TRUE;
}
/********************************************************/
void WinEDA_PartPropertiesFrame::DeleteAliasOfPart(
wxCommandEvent& WXUNUSED (event) )
/********************************************************/
{
wxString aliasname = m_PartAliasList->GetStringSelection();
if( aliasname.IsEmpty() )
return;
if( aliasname == CurrentAliasName )
{
wxString msg = CurrentAliasName + _( " is Current Selected Alias!" );
DisplayError( this, msg );
return;
}
int ii = m_PartAliasList->GetSelection();
m_PartAliasList->Delete( ii );
m_RecreateToolbar = TRUE;
}
/********************************************************************/
bool WinEDA_PartPropertiesFrame::ChangeNbUnitsPerPackage( int MaxUnit )
/********************************************************************/
/* Routine de modification du nombre d'unites par package pour le
* composant courant;
*/
{
int OldNumUnits, ii, FlagDel = -1;
LibEDA_BaseStruct* DrawItem, * NextDrawItem;
if( CurrentLibEntry == NULL )
return FALSE;
/* Si pas de changement: termine */
if( CurrentLibEntry->m_UnitCount == MaxUnit )
return FALSE;
OldNumUnits = CurrentLibEntry->m_UnitCount;
if( OldNumUnits < 1 )
OldNumUnits = 1;
CurrentLibEntry->m_UnitCount = MaxUnit;
/* Traitement des unites enlevees ou rajoutees */
if( OldNumUnits > CurrentLibEntry->m_UnitCount )
{
DrawItem = CurrentLibEntry->m_Drawings;
for( ; DrawItem != NULL; DrawItem = NextDrawItem )
{
NextDrawItem = DrawItem->Next();
if( DrawItem->m_Unit > MaxUnit ) /* Item a effacer */
{
if( FlagDel < 0 )
{
if( IsOK( this, _( "Delete units" ) ) )
{
/* Si part selectee n'existe plus: selection 1ere unit */
if( CurrentUnit > MaxUnit )
CurrentUnit = 1;
FlagDel = 1;
}
else
{
FlagDel = 0;
MaxUnit = OldNumUnits;
CurrentLibEntry->m_UnitCount = MaxUnit;
return FALSE;
}
}
DeleteOneLibraryDrawStruct( m_Parent->DrawPanel, NULL, CurrentLibEntry,
DrawItem, 0 );
}
}
return TRUE;
}
if( OldNumUnits < CurrentLibEntry->m_UnitCount )
{
DrawItem = CurrentLibEntry->m_Drawings;
for( ; DrawItem != NULL; DrawItem = DrawItem->Next() )
{
/* Duplication des items pour autres elements */
if( DrawItem->m_Unit == 1 )
{
for( ii = OldNumUnits + 1; ii <= MaxUnit; ii++ )
{
NextDrawItem = CopyDrawEntryStruct( this, DrawItem );
NextDrawItem->Pnext = CurrentLibEntry->m_Drawings;
CurrentLibEntry->m_Drawings = NextDrawItem;
NextDrawItem->m_Unit = ii;
}
}
}
}
return TRUE;
}
/*****************************************************/
bool WinEDA_PartPropertiesFrame::SetUnsetConvert()
/*****************************************************/
/* cre ou efface (selon option AsConvert) les lments
* de la reprsentation convertie d'un composant
*/
{
int FlagDel = 0;
LibEDA_BaseStruct* DrawItem = NULL, * NextDrawItem;
if( g_AsDeMorgan ) /* Representation convertie a creer */
{
/* Traitement des elements a ajouter ( pins seulement ) */
if( CurrentLibEntry )
DrawItem = CurrentLibEntry->m_Drawings;
for( ; DrawItem != NULL; DrawItem = DrawItem->Next() )
{
/* Duplication des items pour autres elements */
if( DrawItem->Type() != COMPONENT_PIN_DRAW_TYPE )
continue;
if( DrawItem->m_Convert == 1 )
{
if( FlagDel == 0 )
{
if( IsOK( this, _( "Create pins for Convert items" ) ) )
FlagDel = 1;
else
{
if( IsOK( this, _( "Part as \"De Morgan\" anymore" ) ) )
return TRUE;
g_AsDeMorgan = 0; return FALSE;
}
}
NextDrawItem = CopyDrawEntryStruct( this, DrawItem );
NextDrawItem->Pnext = CurrentLibEntry->m_Drawings;
CurrentLibEntry->m_Drawings = NextDrawItem;
NextDrawItem->m_Convert = 2;
}
}
}
else /* Representation convertie a supprimer */
{
/* Traitement des elements supprimer */
if( CurrentLibEntry )
DrawItem = CurrentLibEntry->m_Drawings;
for( ; DrawItem != NULL; DrawItem = NextDrawItem )
{
NextDrawItem = DrawItem->Next();
if( DrawItem->m_Convert > 1 ) /* Item a effacer */
{
if( FlagDel == 0 )
{
if( IsOK( this, _( "Delete Convert items" ) ) )
{
CurrentConvert = 1;
FlagDel = 1;
}
else
{
g_AsDeMorgan = 1;
return FALSE;
}
}
m_Parent->GetScreen()->SetModify();
DeleteOneLibraryDrawStruct( m_Parent->DrawPanel,
NULL,
CurrentLibEntry,
DrawItem,
0 );
}
}
}
return TRUE;
}
/****************************************************************************/
void WinEDA_PartPropertiesFrame::BrowseAndSelectDocFile( wxCommandEvent& event )
/****************************************************************************/
{
wxString FullFileName;
wxString docpath( g_RealLibDirBuffer ), filename;
docpath += wxT( "doc" );
docpath += STRING_DIR_SEP;
FullFileName = EDA_FileSelector( _( "Doc Files" ),
docpath, /* Chemin par defaut */
wxEmptyString, /* nom fichier par defaut */
wxEmptyString, /* extension par defaut */
wxEmptyString, /* Masque d'affichage */
this,
wxFD_OPEN,
TRUE
);
if( FullFileName.IsEmpty() )
return;
// Suppression du chemin par defaut pour le fichier de doc:
filename = MakeReducedFileName( FullFileName, docpath, wxEmptyString );
m_Docfile->SetValue( filename );
}
......@@ -63,8 +63,9 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father,
WinEDA_App* parent,
const wxString& title,
const wxPoint& pos,
const wxSize& size ) :
WinEDA_DrawFrame( father, LIBEDITOR_FRAME, parent, title, pos, size )
const wxSize& size,
long style ) :
WinEDA_DrawFrame( father, LIBEDITOR_FRAME, parent, title, pos, size, style )
{
m_FrameName = wxT( "LibeditFrame" );
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines
......
/*************************/
/* eeschema: options.cpp */
/*************************/
/*
Gestion de la fenetre des options generales:
Grille
Unites d'affichage
options complementaires (increments X, Y et label pour la fct de repetition
*/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "id.h"
#include "wx/spinctrl.h"
#include "protos.h"
/* Variables locales */
/* Fonctions locales: */
enum options_id {
ID_OPTION_ACCEPT = 3900,
ID_OPTION_CANCEL,
ID_GRID_SIZE,
ID_SHOW_GRID,
ID_GRID_NORMAL,
ID_GRID_SMALL,
ID_GRID_VERY_SMALL,
ID_SEL_SHOW_PINS,
ID_SEL_HV_WIRE,
ID_SEL_SHOW_PAGE_LIMITS,
ID_SEL_METRIC
};
/*************************************************************/
/* classe derivee pour la frame de Configuration des options*/
/*************************************************************/
class WinEDA_SetOptionsFrame: public wxDialog
{
private:
WinEDA_DrawFrame * m_Parent;
wxCheckBox * m_ShowGridButt;
wxCheckBox * m_AutoPANOpt;
wxRadioBox * m_SelGridSize;
wxRadioBox * m_SelShowPins;
wxRadioBox * m_Selunits;
wxRadioBox * m_SelDirWires;
wxRadioBox * m_Show_Page_Limits;
WinEDA_SizeCtrl * m_DeltaStepCtrl;
wxSpinCtrl * m_DeltaLabelCtrl;
public:
// Constructor and destructor
WinEDA_SetOptionsFrame(WinEDA_DrawFrame *parent, const wxPoint& framepos);
~WinEDA_SetOptionsFrame() {};
private:
void Accept(wxCommandEvent& event);
void OnCancel(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
};
/* Table des evenements pour WinEDA_SetOptionsFrame */
BEGIN_EVENT_TABLE(WinEDA_SetOptionsFrame, wxDialog)
EVT_BUTTON(ID_OPTION_ACCEPT, WinEDA_SetOptionsFrame::Accept)
EVT_BUTTON(ID_OPTION_CANCEL, WinEDA_SetOptionsFrame::OnCancel)
END_EVENT_TABLE()
/**************************************************************************/
void DisplayOptionFrame(WinEDA_DrawFrame * parent, const wxPoint & framepos)
/**************************************************************************/
{
WinEDA_SetOptionsFrame * frame =
new WinEDA_SetOptionsFrame(parent, framepos);
frame->ShowModal(); frame->Destroy();
}
/***********************************************************************/
WinEDA_SetOptionsFrame::WinEDA_SetOptionsFrame(WinEDA_DrawFrame *parent,
const wxPoint& framepos):
wxDialog(parent, -1, _("EESchema Preferences"), framepos,
wxSize(450, 340), DIALOG_STYLE)
/***********************************************************************/
{
#define START_Y 10
wxButton * Button;
wxPoint pos;
wxSize size;
int w, h;
m_Parent = parent;
SetFont(*g_DialogFont);
pos.x = 330; pos.y = START_Y;
Button = new wxButton(this, ID_OPTION_ACCEPT, _("OK"), pos);
Button->SetForegroundColour(*wxRED);
pos.y += Button->GetDefaultSize().y + 5;
Button = new wxButton(this, ID_OPTION_CANCEL, _("Cancel"), pos);
Button->SetForegroundColour(*wxBLUE);
pos.x = 5; pos.y = START_Y;
m_ShowGridButt = new wxCheckBox( this, ID_SHOW_GRID, _("Show grid"),
pos);
m_ShowGridButt->SetValue(m_Parent->m_Draw_Grid);
pos.x += 150;
m_AutoPANOpt = new wxCheckBox( this, ID_SHOW_GRID, _("Auto PAN"),
pos);
m_AutoPANOpt->SetValue(m_Parent->DrawPanel-> m_AutoPAN_Enable);
m_AutoPANOpt->SetForegroundColour(*wxBLUE);
pos.x = 5; pos.y += 25;
wxString grid_choice[6] = { _("Normal (50 mils)"),
_("Small (25 mils)"),
_("Very small (10 mils)"),
_("Special (5 mils)"),
_("Special (2 mils)"),
_("Special (1 mil)"), };
m_SelGridSize = new wxRadioBox(this, ID_GRID_SIZE,
_("Grid Size"), pos,
wxDefaultSize, 6, grid_choice, 1, wxRA_SPECIFY_COLS);
if ( m_Parent->GetScreen() )
{
switch( m_Parent->GetScreen()->GetGrid().x )
{
case 50:
m_SelGridSize->SetSelection(0);
break;
case 25:
m_SelGridSize->SetSelection(1);
break;
case 10:
m_SelGridSize->SetSelection(2);
break;
case 5:
m_SelGridSize->SetSelection(3);
break;
case 2:
m_SelGridSize->SetSelection(4);
break;
case 1:
m_SelGridSize->SetSelection(5);
break;
default:
DisplayError(this, wxT("WinEDA_SetOptionsFrame: Grid value not handle"));
break;
}
}
/* Choix d' l'affichage des pins invisibles */
m_SelGridSize->GetSize(&w, &h);
pos.y += h + 20;
wxString pin_choice[2] = { _("Normal"), _("Show alls") };
m_SelShowPins = new wxRadioBox(this, ID_SEL_SHOW_PINS,
_("Show pins"), pos,
wxDefaultSize, 2, pin_choice, 1, wxRA_SPECIFY_COLS);
m_SelShowPins->SetSelection( g_ShowAllPins ? TRUE : FALSE);
/* Choix de l'affichage des unites */
pos.x = 15 + w; pos.y = START_Y + 25;
wxString unit_choice[2] = { _("millimeters"), _("inches") };
m_Selunits = new wxRadioBox(this, ID_SEL_METRIC,
_("Units"), pos,
wxDefaultSize, 2, unit_choice, 1, wxRA_SPECIFY_COLS);
m_Selunits->SetSelection( UnitMetric ? 0 : 1);
/* Choix de l'orientation des bus et wires */
m_Selunits->GetSize(&w, &h);
pos.y += h + 15;
wxString dir_choice[2] = { _("Horiz/Vertical"), _("Any") };
m_SelDirWires = new wxRadioBox(this, ID_SEL_HV_WIRE,
_("Wires - Bus orient"), pos,
wxDefaultSize, 2, dir_choice, 1, wxRA_SPECIFY_COLS);
m_SelDirWires->SetSelection( g_HVLines ? 0 : 1);
m_SelDirWires->GetSize(&w, &h);
pos.y += h + 15;
wxString show_page_limits_choice[2] = { _("Yes"), _("No") };
m_Show_Page_Limits = new wxRadioBox(this, ID_SEL_SHOW_PAGE_LIMITS,
_("Show page limits"), pos,
wxDefaultSize, 2, show_page_limits_choice, 1, wxRA_SPECIFY_COLS);
m_Show_Page_Limits->SetSelection( g_ShowPageLimits ? 0 : 1);
/* Choix des parametres pour la fonction de repetition */
size.x = 100; size.y = -1;
pos.y = 90; pos.x = 320;
m_DeltaStepCtrl = new WinEDA_SizeCtrl(this, _("Delta Step"),
g_RepeatStep,
UnitMetric, pos, m_Parent->m_InternalUnits);
pos.y += 10 + m_DeltaStepCtrl->GetDimension().y;
new wxStaticText(this, -1, _("Delta Label:"),
wxPoint(pos.x, pos.y ),
wxSize(-1,-1), 0 );
wxString val;
pos.y += 14;
val << g_RepeatDeltaLabel;
m_DeltaLabelCtrl = new wxSpinCtrl(this, -1, val, pos);
m_DeltaLabelCtrl->SetRange(-16, +16);
}
/**************************************************************************/
void WinEDA_SetOptionsFrame::OnCancel(wxCommandEvent& event)
/**************************************************************************/
{
Close(TRUE);
}
/**************************************************************************/
void WinEDA_SetOptionsFrame::Accept(wxCommandEvent& event)
/**************************************************************************/
{
wxSize grid;
bool setgrid = TRUE;
g_RepeatStep = m_DeltaStepCtrl->GetCoord();
g_RepeatDeltaLabel = m_DeltaLabelCtrl->GetValue();
if ( m_Show_Page_Limits->GetSelection() == 0 ) g_ShowPageLimits = TRUE;
else g_ShowPageLimits = FALSE;
if ( m_SelDirWires->GetSelection() == 0 ) g_HVLines = 1;
else g_HVLines = 0;
if ( m_Selunits->GetSelection() == 0 ) UnitMetric = 1;
else UnitMetric = 0;
if ( m_SelShowPins->GetSelection() == 0 ) g_ShowAllPins = FALSE;
else g_ShowAllPins = TRUE;
g_ShowGrid = m_Parent->m_Draw_Grid = m_ShowGridButt->GetValue();
m_Parent->DrawPanel->m_AutoPAN_Enable = m_AutoPANOpt->GetValue();
switch( m_SelGridSize->GetSelection() )
{
default:
setgrid = FALSE;
break;
case 0:
grid = wxSize(50,50);
break;
case 1:
grid = wxSize(25,25);
break;
case 2:
grid = wxSize(10,10);
break;
}
if ( m_Parent->m_CurrentScreen )
{
if ( setgrid ) m_Parent->m_CurrentScreen->SetGrid(grid);
m_Parent->m_CurrentScreen->SetRefreshReq();
}
Close(TRUE);
}
/////////////////////////////////////////////////////////////////////////////
// Name: optionsframe.cpp
// Purpose:
// Author: jean-pierre charras
// Modified by:
// Created: 01/27/04 14:48:57
// RCS-ID:
// Copyright: suite kicad
// Licence:
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "optionsframe.cpp"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
////@begin includes
#include "wx/wx.h"
#include "wx/valgen.h"
////@end includes
#include "optionsframe.h"
////@begin XPM images
////@end XPM images
/*!
* DisplayOptionFrame type definition
*/
IMPLEMENT_CLASS( DisplayOptionFrame, wxDialog )
/*!
* DisplayOptionFrame event table definition
*/
BEGIN_EVENT_TABLE( DisplayOptionFrame, wxDialog )
////@begin DisplayOptionFrame event table entries
////@end DisplayOptionFrame event table entries
END_EVENT_TABLE()
/*!
* DisplayOptionFrame constructors
*/
DisplayOptionFrame::DisplayOptionFrame( )
{
}
DisplayOptionFrame::DisplayOptionFrame( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
Create(parent, id, caption, pos, size, style);
}
/*!
* optionsframe creator
*/
bool DisplayOptionFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
////@begin DisplayOptionFrame member initialisation
////@end DisplayOptionFrame member initialisation
////@begin DisplayOptionFrame creation
wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls();
GetSizer()->Fit(this);
GetSizer()->SetSizeHints(this);
Centre();
////@end DisplayOptionFrame creation
return TRUE;
}
/*!
* Control creation for optionsframe
*/
void DisplayOptionFrame::CreateControls()
{
////@begin DisplayOptionFrame content construction
DisplayOptionFrame* item1 = this;
wxBoxSizer* item2 = new wxBoxSizer(wxVERTICAL);
item1->SetSizer(item2);
item1->SetAutoLayout(TRUE);
wxBoxSizer* item3 = new wxBoxSizer(wxHORIZONTAL);
item2->Add(item3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxBoxSizer* item4 = new wxBoxSizer(wxHORIZONTAL);
item3->Add(item4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxBoxSizer* item5 = new wxBoxSizer(wxVERTICAL);
item4->Add(item5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxCheckBox* item6 = new wxCheckBox( item1, ID_CHECKBOX, _("Show grid"), wxDefaultPosition, wxDefaultSize, 0 );
m_ShowGridButt = item6;
item6->SetValue(FALSE);
item5->Add(item6, 0, wxALIGN_LEFT|wxALL, 5);
wxString item7Strings[] = {
_("&Normal (50 mils)"),
_("&Small (20 mils)"),
_("&Very small (10 mils)")
};
wxRadioBox* item7 = new wxRadioBox( item1, ID_RADIOBOX, _("Grid Size"), wxDefaultPosition, wxDefaultSize, 3, item7Strings, 1, 0 );
m_SelGridSize = item7;
item5->Add(item7, 0, wxALIGN_LEFT|wxALL, 5);
wxString item8Strings[] = {
_("&Normal"),
_("&inches")
};
wxRadioBox* item8 = new wxRadioBox( item1, ID_RADIOBOX1, _("Show pins"), wxDefaultPosition, wxDefaultSize, 2, item8Strings, 1, 0 );
m_SelShowPins = item8;
item5->Add(item8, 0, wxALIGN_LEFT|wxALL, 5);
wxBoxSizer* item9 = new wxBoxSizer(wxVERTICAL);
item4->Add(item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxString item10Strings[] = {
_("&millimeters"),
_("&inches")
};
wxRadioBox* item10 = new wxRadioBox( item1, ID_RADIOBOX3, _("Units"), wxDefaultPosition, wxDefaultSize, 2, item10Strings, 1, wxRA_SPECIFY_COLS );
m_Selunits = item10;
item9->Add(item10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
item9->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxString item12Strings[] = {
_("&Horiz/Vertical"),
_("&Any")
};
wxRadioBox* item12 = new wxRadioBox( item1, ID_RADIOBOX2, _("Wire - Bus orient"), wxDefaultPosition, wxDefaultSize, 2, item12Strings, 1, wxRA_SPECIFY_COLS );
item9->Add(item12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxBoxSizer* item13 = new wxBoxSizer(wxVERTICAL);
item4->Add(item13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* item14 = new wxButton( item1, ID_BUTTON, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
item14->SetForegroundColour(wxColour(255, 0, 0));
item13->Add(item14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxButton* item15 = new wxButton( item1, ID_BUTTON1, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
item15->SetForegroundColour(wxColour(0, 0, 255));
item13->Add(item15, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
// Set validators
item6->SetValidator( wxGenericValidator(& ShowGrid ) );
////@end DisplayOptionFrame content construction
}
/*!
* Should we show tooltips?
*/
bool DisplayOptionFrame::ShowToolTips()
{
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// Name: optionsframe.h
// Purpose:
// Author: jean-pierre charras
// Modified by:
// Created: 01/27/04 14:48:57
// RCS-ID:
// Copyright: suite kicad
// Licence:
/////////////////////////////////////////////////////////////////////////////
#ifndef _OPTIONSFRAME_H_
#define _OPTIONSFRAME_H_
#ifdef __GNUG__
#pragma interface "optionsframe.h"
#endif
/*!
* Includes
*/
////@begin includes
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define ID_CHECKBOX 10001
#define ID_RADIOBOX 10002
#define ID_RADIOBOX1 10003
#define ID_RADIOBOX3 10005
#define ID_RADIOBOX2 10004
#define ID_BUTTON 10006
#define ID_BUTTON1 10007
////@end control identifiers
/*!
* DisplayOptionFrame class declaration
*/
class DisplayOptionFrame: public wxDialog
{
DECLARE_CLASS( DisplayOptionFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
DisplayOptionFrame( );
DisplayOptionFrame( wxWindow* parent, wxWindowID id = -1, const wxString& caption = _("optionsframe"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = -1, const wxString& caption = _("optionsframe"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
/// Creates the controls and sizers
void CreateControls();
////@begin DisplayOptionFrame event handler declarations
////@end DisplayOptionFrame event handler declarations
////@begin DisplayOptionFrame member function declarations
////@end DisplayOptionFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
////@begin DisplayOptionFrame member variables
wxCheckBox* m_ShowGridButt;
wxRadioBox* m_SelGridSize;
wxRadioBox* m_SelShowPins;
wxRadioBox* m_Selunits;
WinEDA_DrawFrame * m_Parent;
////@end DisplayOptionFrame member variables
};
#endif
// _OPTIONSFRAME_H_
......@@ -116,8 +116,8 @@ END_EVENT_TABLE()
/****************/
WinEDA_SchematicFrame:: WinEDA_SchematicFrame(wxWindow * father, WinEDA_App *parent,
const wxString & title, const wxPoint& pos, const wxSize& size) :
WinEDA_DrawFrame(father, SCHEMATIC_FRAME, parent, title, pos, size)
const wxString & title, const wxPoint& pos, const wxSize& size, long style) :
WinEDA_DrawFrame(father, SCHEMATIC_FRAME, parent, title, pos, size, style)
{
m_FrameName = wxT("SchematicFrame");
m_Draw_Axis = FALSE; // TRUE pour avoir les axes dessines
......
......@@ -124,8 +124,8 @@ END_EVENT_TABLE()
/****************/
WinEDA_GerberFrame::WinEDA_GerberFrame(wxWindow * father, WinEDA_App *parent,
const wxString & title, const wxPoint& pos, const wxSize& size) :
WinEDA_BasePcbFrame(father, parent, GERBER_FRAME, title, pos, size)
const wxString & title, const wxPoint& pos, const wxSize& size, long style) :
WinEDA_BasePcbFrame(father, parent, GERBER_FRAME, title, pos, size, style)
{
m_FrameName = wxT("GerberFrame");
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines
......
......@@ -35,6 +35,7 @@
// #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT|wxSTAY_ON_TOP
#define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT | MAYBE_RESIZE_BORDER
#define KICAD_DEFAULT_DRAWFRAME_STYLE wxDEFAULT_FRAME_STYLE|wxWANTS_CHARS
#define EDA_DRAW_PANEL wxScrolledWindow
class wxMyDialogModalData;
......@@ -168,7 +169,8 @@ public:
// Constructor and destructor
WinEDA_BasicFrame( wxWindow* father, int idtype, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE);
#ifdef KICAD_PYTHON
WinEDA_BasicFrame( const WinEDA_BasicFrame& ) { } // Should throw!!
WinEDA_BasicFrame() { } // Should throw!!
......@@ -239,7 +241,8 @@ public:
// Constructor and destructor
WinEDA_DrawFrame( wxWindow* father, int idtype, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_DrawFrame();
......@@ -352,7 +355,8 @@ protected:
public:
WinEDA_BasePcbFrame( wxWindow* father, WinEDA_App* parent, int idtype,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_BasePcbFrame();
......@@ -574,7 +578,8 @@ private:
public:
WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent, const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_PcbFrame();
......@@ -803,7 +808,8 @@ private:
public:
WinEDA_GerberFrame( wxWindow* father, WinEDA_App* parent, const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_GerberFrame();
......@@ -908,7 +914,8 @@ public:
public:
WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_ModuleEditFrame();
......@@ -1003,7 +1010,8 @@ private:
public:
WinEDA_SchematicFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_SchematicFrame();
......@@ -1212,7 +1220,8 @@ public:
public:
WinEDA_LibeditFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size );
const wxPoint& pos, const wxSize& size,
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
~WinEDA_LibeditFrame();
......@@ -1357,9 +1366,10 @@ private:
#include "drawpanel_wxstruct.h"
/*********************************************************/
/* classe representant un ecran d'affichage des messages */
/*********************************************************/
/*********************************************************
class WinEDA_MsgPanel : this is a panel to display various infos
and messages on items in eeschema an pcbnew
*********************************************************/
/**
* Struct MsgItem
......@@ -1422,9 +1432,9 @@ public:
};
/******************************************************************/
/* Classe pour editer une ligne de texte dans les menus de config */
/******************************************************************/
/************************************************/
/* Class to enter a line, is some dialog frames */
/************************************************/
class WinEDA_EnterText
{
public:
......@@ -1460,9 +1470,9 @@ public:
}
};
/*********************************************************************/
/* Classe pour editer un texte graphique + dimension en INCHES ou MM */
/*********************************************************************/
/************************************************************************/
/* Class to edit/enter a graphic text and its dimension ( INCHES or MM )*/
/************************************************************************/
class WinEDA_GraphicTextCtrl
{
public:
......@@ -1494,9 +1504,9 @@ public:
};
/*****************************************************************/
/* Classe pour afficher et editer une coordonn�e en INCHES ou MM */
/*****************************************************************/
/*************************************************************************************/
/*Class to edit/enter a coordinate (pair of values) ( INCHES or MM ) in dialog boxes */
/*************************************************************************************/
class WinEDA_PositionCtrl
{
public:
......@@ -1523,9 +1533,10 @@ public:
wxPoint GetValue();
};
/*****************************************************************/
/* Classe pour afficher et editer une coordonn�e en INCHES ou MM */
/*****************************************************************/
/*************************************************************
Class to edit/enter a size (pair of values for X and Y size)
( INCHES or MM ) in dialog boxes
***************************************************************/
class WinEDA_SizeCtrl : public WinEDA_PositionCtrl
{
public:
......@@ -1541,9 +1552,9 @@ public:
};
/*****************************************************************/
/* Classe pour afficher et editer une valeur en INCHES ou MM */
/*****************************************************************/
/****************************************************************/
/* Class to edit/enter a value ( INCHES or MM ) in dialog boxes */
/****************************************************************/
/* internal_unit est le nombre d'unites internes par inch
* - 1000 sur EESchema
......@@ -1578,9 +1589,9 @@ public:
}
};
/*****************************************************************/
/* Classe pour afficher et editer une valeur double flottant */
/*****************************************************************/
/************************************************************************/
/* Class to edit/enter a pair of float (double) values in dialog boxes */
/************************************************************************/
class WinEDA_DFloatValueCtrl
{
public:
......
......@@ -40,8 +40,9 @@ WinEDA_BasePcbFrame::WinEDA_BasePcbFrame( wxWindow* father,
int idtype,
const wxString& title,
const wxPoint& pos,
const wxSize& size ) :
WinEDA_DrawFrame( father, idtype, parent, title, pos, size )
const wxSize& size,
long style) :
WinEDA_DrawFrame( father, idtype, parent, title, pos, size, style )
{
m_InternalUnits = 10000; // Internal unit = 1/10000 inch
m_CurrentScreen = NULL;
......@@ -101,6 +102,15 @@ void WinEDA_BasePcbFrame::ReCreateMenuBar( void )
{
}
#ifdef CVPCB
/********************************************************************/
void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
/********************************************************************/
// Virtual function
{
}
#endif
#include "3d_viewer.h"
......@@ -119,8 +129,13 @@ void WinEDA_BasePcbFrame::Show3D_Frame( wxCommandEvent& event )
DisplayInfo( this, _( "3D Frame already opened" ) );
return;
}
#ifdef CVPCB
m_Draw3DFrame = new WinEDA3D_DrawFrame( this, m_Parent, _( "3D Viewer" ),
KICAD_DEFAULT_3D_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT );
#else
m_Draw3DFrame = new WinEDA3D_DrawFrame( this, m_Parent, _( "3D Viewer" ) );
#endif
// Show the frame
m_Draw3DFrame->Show( TRUE );
#endif
......
......@@ -23,7 +23,7 @@
/* Routines locales : */
static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC );
static void suppression_piste_non_connectee( WinEDA_PcbFrame* frame, wxDC* DC );
static void DeleteUnconnectedTracks( WinEDA_PcbFrame* frame, wxDC* DC );
static TRACK* AlignSegment( BOARD* Pcb, TRACK* pt_ref, TRACK* pt_segm, int extremite );
static void Clean_Pcb_Items( WinEDA_PcbFrame* frame, wxDC* DC );
......@@ -71,7 +71,7 @@ void Clean_Pcb_Items( WinEDA_PcbFrame* frame, wxDC* DC )
frame->MsgPanel->EraseMsgBox();
frame->m_Pcb->GetNumSegmTrack(); // update the count
/* construction de la liste des coordonn�s des pastilles */
/* Rebuild the pad infos (pad list and netcodes) to ensure an up to date info */
frame->m_Pcb->m_Status_Pcb = 0;
frame->build_liste_pads();
frame->recalcule_pad_net_code();
......@@ -120,26 +120,28 @@ void Clean_Pcb_Items( WinEDA_PcbFrame* frame, wxDC* DC )
}
#ifdef CONN2PAD_ENBL
if( s_ConnectToPads ) /* Creation de points de connexion */
/* Create missing segments when a track end covers a pad or a via,
but is not on the pad or the via center */
if( s_ConnectToPads )
{
/* Raccordement des extremites de piste au centre des pastilles : */
ConnectDanglingEndToPad( frame, DC );
/* Create missing segments when a track end covers a pad, but is not on the pad center */ if( s_ConnectToPads )
ConnectDanglingEndToPad( frame, DC );
// creation of points of connections at the intersection of tracks
// Gen_Raccord_Track(frame, DC);
/* Create missing segments when a track end covers a via, but is not on the via center */ if( s_ConnectToPads )
ConnectDanglingEndToVia( frame->m_Pcb );
}
#endif
/* suppression des segments de longueur nulle et des points intermediaires
* alignes */
/* Remove null segments and intermediate points on aligned segments */
if( s_MergeSegments )
clean_segments( frame, DC );
/* suppression des pistes non connectees ( c.a.d dont 1 extremite est en l'air) */
/* Delete dangling tracks */
if( s_DeleteUnconnectedSegm )
suppression_piste_non_connectee( frame, DC );
DeleteUnconnectedTracks( frame, DC );
frame->Compile_Ratsnest( DC, AFFICHE );
......@@ -148,14 +150,13 @@ void Clean_Pcb_Items( WinEDA_PcbFrame* frame, wxDC* DC )
/*****************************************************************************/
static void suppression_piste_non_connectee( WinEDA_PcbFrame* frame, wxDC* DC )
static void DeleteUnconnectedTracks( WinEDA_PcbFrame* frame, wxDC* DC )
/*****************************************************************************/
/*
* Supprime les segments de piste ayant 1 ou 2 extremites non connectees
* Cas des vias:
* si une extremite de segment est connectee uniquement a une via, la via
* et le segment seront supprimes
* Delete dangling tracks
* Vias:
* If a via is only connected to a dangling track, it also will be removed
*/
{
TRACK* segment;
......@@ -229,7 +230,8 @@ static void suppression_piste_non_connectee( WinEDA_PcbFrame* frame, wxDC* DC )
flag_erase = 0;
type_end = 0;
/* y a t-il une pastille sur chaque extremite */
/* Is a pad found on a track end ? */
masklayer = segment->ReturnMaskLayer();
......@@ -339,7 +341,7 @@ static void suppression_piste_non_connectee( WinEDA_PcbFrame* frame, wxDC* DC )
/************************************************************/
static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
/************************************************************/
/* Supprime segments nulls, points inutiles .. */
/* Delete null lenght segments, and intermediate points .. */
{
TRACK* segment;
TRACK* other;
......@@ -350,7 +352,7 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
frame->DrawPanel->m_AbortRequest = FALSE;
/**********************************************/
/* suppression des segments de longueur nulle */
/* Delete null segments */
/**********************************************/
a_color = GREEN;
......@@ -378,7 +380,7 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
}
/**************************************/
/* suppression des segments confondus */
/* Delete redundant segments */
/**************************************/
Affiche_1_Parametre( frame, POS_AFF_VAR, wxT( "Ident" ), wxT( "0" ), a_color );
......@@ -388,7 +390,7 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
for( segment = frame->m_Pcb->m_Track, ii = 0; segment; segment = segment->Next(), ii++ )
{
/* affichage activite */
/* Display activity */
percent = (100 * ii) / frame->m_Pcb->m_NbSegmTrack;
if( percent != oldpercent )
{
......@@ -430,7 +432,7 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
erase = 1;
}
/* suppression du point en trop */
/* Delete redundant point */
if( erase )
{
ii--;
......@@ -444,9 +446,9 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
}
}
/**************************************************************/
/* suppression des points intermediaires ( segments alignes ) */
/**************************************************************/
/****************************/
/* delete intermediate points */
/****************************/
nbpoints_supprimes = 0;
percent = 0;
......@@ -465,7 +467,6 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC )
next = segment->Next();
/* affichage activite */
ii++;
percent = (100 * ii) / frame->m_Pcb->m_NbSegmTrack;
if( percent != oldpercent )
......
......@@ -104,8 +104,9 @@ END_EVENT_TABLE()
WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size ) :
WinEDA_BasePcbFrame( father, parent, MODULE_EDITOR_FRAME, wxEmptyString, pos, size )
const wxPoint& pos, const wxSize& size,
long style ) :
WinEDA_BasePcbFrame( father, parent, MODULE_EDITOR_FRAME, wxEmptyString, pos, size, style )
{
m_FrameName = wxT( "ModEditFrame" );
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines
......
......@@ -176,8 +176,9 @@ END_EVENT_TABLE()
WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent,
const wxString& title,
const wxPoint& pos, const wxSize& size ) :
WinEDA_BasePcbFrame( father, parent, PCB_FRAME, title, pos, size )
const wxPoint& pos, const wxSize& size,
long style) :
WinEDA_BasePcbFrame( father, parent, PCB_FRAME, title, pos, size, style )
{
m_FrameName = wxT( "PcbFrame" );
m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines
......
......@@ -40,8 +40,8 @@
WinEDA_DrawFrame::WinEDA_DrawFrame( wxWindow* father, int idtype,
WinEDA_App* parent, const wxString& title,
const wxPoint& pos, const wxSize& size ) :
WinEDA_BasicFrame( father, idtype, parent, title, pos, size )
const wxPoint& pos, const wxSize& size, long style ) :
WinEDA_BasicFrame( father, idtype, parent, title, pos, size, style )
{
wxSize minsize;
......
/************************/
/* 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 );
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment