Commit 55eefbbe authored by jean-pierre charras's avatar jean-pierre charras

Fixed a bug about Aperture Definition having parameters for an aperture macro....

Fixed a bug about Aperture Definition having parameters for an aperture macro. See Changlog for not yet supported RX274X commands. Having still problems with arcs in some gereber files.
parent 9ff8fd27
......@@ -4,6 +4,22 @@ KiCad ChangeLog 2010
Please add newer entries at the top, list the date and your name with
email address.
2010-oct-09, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++gerbview:
Fixed some issues:
Now aperture macro with parameters works.
Note: complex parameters (like $1 + 4) are not supported
other commands not yet supported:
SF (scale factors)
Offsets (image and layer)
Rotations (image and layer)
Axis definition
Mirroring
SR (Step and repeat)
KO
2010-Oct-5 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++richio:
......
......@@ -15,7 +15,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
###
set(GERBVIEW_SRCS
block.cpp
class_aperture_macro.cpp
class_aperture_macro.cpp
class_GERBER.cpp
class_gerber_draw_item.cpp
class_gerbview_layer_widget.cpp
......
......@@ -119,28 +119,27 @@ APERTURE_MACRO* GERBER::FindApertureMacro( const APERTURE_MACRO& aLookup )
void GERBER::ResetDefaultValues()
{
m_FileName.Empty();
m_ImageName = wxT( "no image name" ); // Image name from the IN command
m_LayerName = wxT( "no layer name" ); // Layer name from the LN command
m_LayerNegative = FALSE; // TRUE = Negative Layer
m_ImageNegative = FALSE; // TRUE = Negative image
m_GerbMetric = FALSE; // FALSE = Inches, TRUE = metric
m_Relative = FALSE; // FALSE = absolute Coord, RUE =
// relative Coord
m_NoTrailingZeros = FALSE; // True: trailing zeros deleted
m_MirorA = FALSE; // True: miror / axe A (X)
m_MirorB = FALSE; // True: miror / axe B (Y)
m_Has_DCode = FALSE; // TRUE = DCodes in file
// FALSE = no DCode->
// search for separate DCode file
m_FmtScale.x = m_FmtScale.y = g_Default_GERBER_Format % 10;
m_FmtLen.x = m_FmtLen.y = m_FmtScale.x + (g_Default_GERBER_Format / 10);
m_LayerScale.x = m_LayerScale.y = 1.0; // scale (X and Y) this
// layer
m_Rotation = 0;
m_ImageName = wxT( "no image name" ); // Image name from the IN command
m_LayerName = wxT( "no layer name" ); // Layer name from the LN command
m_LayerNegative = false; // true = Negative Layer
m_ImageNegative = false; // true = Negative image
m_GerbMetric = false; // false = Inches, true = metric
m_Relative = false; // false = absolute Coord,
// true = relative Coord
m_NoTrailingZeros = false; // true: trailing zeros deleted
m_MirorA = false; // true: miror / axe A (default = X)
m_MirorB = false; // true: miror / axe B (default = Y)
m_Has_DCode = false; // true = DCodes in file
// false = no DCode->
// search for separate DCode file
m_FmtScale.x = m_FmtScale.y = 4; // Initialize default format to 3.4 => 4
m_FmtLen.x = m_FmtLen.y = 3+4; // Initialize default format len = 3+4
m_LayerScale.x = m_LayerScale.y = 1.0; // scale (A and B) this layer
m_Rotation = 0; // Allowed 0, 90, 180, 270
m_Iterpolation = GERB_INTERPOL_LINEAR_1X; // Linear, 90 arc, Circ.
m_360Arc_enbl = FALSE; // 360 deg circular
m_360Arc_enbl = false; // 360 deg circular
// interpolation disable
m_Current_Tool = 0; // Current Tool (Dcode)
// number selected
......@@ -154,7 +153,7 @@ void GERBER::ResetDefaultValues()
// plot arcs & circles
m_Current_File = NULL; // File to read
m_FilesPtr = 0;
m_PolygonFillMode = FALSE;
m_PolygonFillMode = false;
m_PolygonFillModeState = 0;
}
......
......@@ -30,44 +30,44 @@ class GERBER
BOARD* m_Pcb;
public:
wxString m_FileName; // Full File Name for this layer
wxString m_ImageName; // Image name, from IN <name>* command
wxString m_LayerName; // Layer name, from LN <name>* command
int m_Layer; // Layer Number
bool m_LayerNegative; // TRUE = Negative Layer
bool m_GerbMetric; // FALSE = Inches, TRUE = metric
bool m_Relative; // FALSE = absolute Coord, RUE = relative Coord
bool m_NoTrailingZeros; // True: remove tailing zeros.
bool m_MirorA; // True: miror / axe A (X)
bool m_MirorB; // True: miror / axe B (Y)
bool m_Has_DCode; // TRUE = DCodes in file
// (FALSE = no DCode -> separate DCode file
wxPoint m_Offset; // Coord Offset
wxSize m_FmtScale; // Fmt 2.3: m_FmtScale = 3, fmt 3.4: m_FmtScale = 4
wxSize m_FmtLen; // Nb chars per coord. ex fmt 2.3, m_FmtLen = 5
wxRealPoint m_LayerScale; // scale (X and Y) of layer.
wxString m_FileName; // Full File Name for this layer
wxString m_ImageName; // Image name, from IN <name>* command
wxString m_LayerName; // Layer name, from LN <name>* command
int m_Layer; // Layer Number
bool m_LayerNegative; // true = Negative Layer
bool m_GerbMetric; // false = Inches, true = metric
bool m_Relative; // false = absolute Coord, true = relative Coord
bool m_NoTrailingZeros; // true: remove tailing zeros.
bool m_MirorA; // true: miror / axe A (X)
bool m_MirorB; // true: miror / axe B (Y)
bool m_Has_DCode; // true = DCodes in file
// (false = no DCode -> separate DCode file
wxPoint m_Offset; // Coord Offset
wxSize m_FmtScale; // Fmt 2.3: m_FmtScale = 3, fmt 3.4: m_FmtScale = 4
wxSize m_FmtLen; // Nb chars per coord. ex fmt 2.3, m_FmtLen = 5
wxRealPoint m_LayerScale; // scale (X and Y) of layer.
int m_Rotation;
int m_Iterpolation; // Linear, 90 arc, Circ.
bool m_ImageNegative; // TRUE = Negative image
int m_Current_Tool; // Current Tool (Dcode) number selected
int m_Last_Pen_Command; // Current or last pen state (0..9, set by Dn option with n <10
int m_CommandState; // state of gerber analysis command.
wxPoint m_CurrentPos; // current specified coord for plot
wxPoint m_PreviousPos; // old current specified coord for plot
wxPoint m_IJPos; // IJ coord (for arcs & circles )
int m_Iterpolation; // Linear, 90 arc, Circ.
bool m_ImageNegative; // true = Negative image
int m_Current_Tool; // Current Tool (Dcode) number selected
int m_Last_Pen_Command; // Current or last pen state (0..9, set by Dn option with n <10
int m_CommandState; // state of gerber analysis command.
wxPoint m_CurrentPos; // current specified coord for plot
wxPoint m_PreviousPos; // old current specified coord for plot
wxPoint m_IJPos; // IJ coord (for arcs & circles )
FILE* m_Current_File; // Current file to read
#define INCLUDE_FILES_COUNT_MAX 10
FILE* m_FilesList[INCLUDE_FILES_COUNT_MAX+2]; // Included files list
int m_FilesPtr; // Stack pointer for files list
FILE* m_Current_File; // Current file to read
#define INCLUDE_FILES_CNT_MAX 10
FILE* m_FilesList[INCLUDE_FILES_CNT_MAX + 2]; // Included files list
int m_FilesPtr; // Stack pointer for files list
int m_Selected_Tool; // Pour editions: Tool (Dcode) selectionn�
int m_Selected_Tool; // For hightlight: current selected Dcode
bool m_360Arc_enbl; // Enbl 360 deg circular interpolation
bool m_PolygonFillMode; // Enbl polygon mode (read coord as a polygon descr)
int m_PolygonFillModeState; // In polygon mode: 0 = first segm, 1 = next segm
bool m_360Arc_enbl; // Enbl 360 deg circular interpolation
bool m_PolygonFillMode; // Enable polygon mode (read coord as a polygon descr)
int m_PolygonFillModeState; // In polygon mode: 0 = first segm, 1 = next segm
APERTURE_MACRO_SET m_aperture_macros; ///< a collection of APERTURE_MACROS, sorted by name
APERTURE_MACRO_SET m_aperture_macros; ///< a collection of APERTURE_MACROS, sorted by name
public:
GERBER( WinEDA_GerberFrame* aParent, int layer );
......@@ -94,10 +94,23 @@ public:
*/
void InitToolTable();
/** function ReadXYCoord
* Returns the current coordinate type pointed to by XnnYnn Text (XnnnnYmmmm)
*/
wxPoint ReadXYCoord( char*& Text );
/** function ReadIJCoord
* Returns the current coordinate type pointed to by InnJnn Text (InnnnJmmmm)
* These coordinates are relative, so if coordinate is absent, it's value
* defaults to 0
*/
wxPoint ReadIJCoord( char*& Text );
// functions to read G commands or D commands:
int ReturnGCodeNumber( char*& Text );
int ReturnDCodeNumber( char*& Text );
// functions to execute G commands or D commands:
bool Execute_G_Command( char*& text, int G_commande );
bool Execute_DCODE_Command( WinEDA_GerberFrame* frame,
char*& text, int D_commande );
......
......@@ -75,7 +75,7 @@ bool AM_PRIMITIVE::mapExposure( GERBER_DRAW_ITEM* aParent )
case AMP_THERMAL:
case AMP_POLYGON:
// All have an exposure parameter and can return true or false
switch( GetExposure() )
switch( GetExposure(aParent) )
{
case 0: // exposure always OFF
exposure = false;
......@@ -108,11 +108,11 @@ bool AM_PRIMITIVE::mapExposure( GERBER_DRAW_ITEM* aParent )
* returns the first parameter in integer form. Some but not all primitives
* use the first parameter as an exposure control.
*/
int AM_PRIMITIVE::GetExposure() const
int AM_PRIMITIVE::GetExposure(GERBER_DRAW_ITEM* aParent) const
{
// No D_CODE* for GetValue()
wxASSERT( params.size() && params[0].IsImmediate() );
return (int) params[0].GetValue( NULL );
return (int) params[0].GetValue( aParent->GetDcodeDescr() );
}
/** function DrawBasicShape
......
......@@ -84,7 +84,7 @@ public:
* returns the first parameter in integer form. Some but not all primitives
* use the first parameter as an exposure control.
*/
int GetExposure() const;
int GetExposure( GERBER_DRAW_ITEM* aParent ) const;
/**
* Function mapExposure
......
G04 Verification of all aperture macros *
G04 Handcoded by Stefan Petersen *
%MOIN*%
%FSLAX23Y23*%
%OFA0.0000B0.0000*%
G90*
%AMCIRCLE*
1,1,$1,0,0*
%
%AMVECTOR*
2,1,$1,0,0,$2,$3,-135*
%
%AMVECTOR1*
2,1,0.3,0,0,1,1,-15*
%
%AMLINE1*
21,1,$1,$2,0,0,-135*
%
%AMLINE*
21,1,0.3,0.03,0,0,-135*
%
%AMLINE2*
22,1,$1,$2,0,0,-45*
%
%AMLINELOWLEFT*
22,1,0.2,1.5,0,0,-15*
%
%AMOUTLINE*
4,1,3,0.0,0.0,0.0,0.5,0.5,0.5,0.5,0.0,-25*
%
%AMPOLYGON*
5,1,$1,0,0,0.5,$2*
%
%AMMOIRE*
6,0,0,1.0,0.1,0.4,2,0.01,1,20*
%
%AMTHERMAL*
7,0,0,1.0,0.3,0.01,-13*
%
%ADD10C,0.0650*%
%ADD11CIRCLE,.5*%
%ADD12VECTOR,0.05X1X0*%
%ADD13LINE1,0.3X0.05*%
%ADD14LINE2,0.8X0.5*%
%ADD15OUTLINE*%
%ADD16POLYGON,3X-10*%
%ADD17POLYGON,6X0*%
%ADD18MOIRE*%
%ADD19THERMAL*%
%ADD20LINELOWLEFT*%
G04 Outline*
X0Y0D02*
G54D10*
X0Y0D01*
X10000D01*
Y10000D01*
X0D01*
Y0D01*
G04 Dots *
X2000Y5000D03*
X3000D03*
X4000D03*
X5000D03*
X6000D03*
X7000D03*
X8000D03*
X9000D03*
Y6200X9000D03*
G04 Draw circle*
G54D11*
X2000Y5000D03*
G04 Draw line vector *
G54D12*
X3000D03*
G04 Draw line center *
G54D13*
X4000D03*
G04 Draw line lower left *
G54D14*
X5000D03*
G04 Draw outline *
G54D15*
X6000D03*
G04 Draw polygon 1 *
G54D16*
X7000D03*
G04 Draw polygon 1 *
G54D17*
X8000D03*
G04 Draw Moire *
G54D18*
X9000D03*
G04 Draw vector at 0,0*
G54D20*
X00000Y00000D03*
G04 Draw Thermal *
G54D19*
Y6200X9000D03*
M02*
......@@ -61,8 +61,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame )
WinEDA_GerberFrame::Process_Config )
EVT_MENU( ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG, WinEDA_GerberFrame::OnSelectOptionToolbar )
EVT_MENU( ID_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberGeneralOptionsFrame )
EVT_MENU( ID_GERBVIEW_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog )
EVT_MENU( ID_GERBVIEW_OPTIONS_SETUP, WinEDA_GerberFrame::InstallGerberOptionsDialog )
EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
WinEDA_DrawFrame::SetLanguage )
......@@ -504,7 +503,7 @@ void WinEDA_GerberFrame::UpdateTitleAndInfo()
text = _( "File:" );
text << wxT( " " ) << gerber->m_FileName;
SetTitle( text );
// Display Image Name and Layer Name (from the current gerber data):
text.Printf( _("Image name: \"%s\" Layer name \"%s\""),
......
......@@ -79,6 +79,11 @@ bool WinEDA_App::OnInit()
InitEDA_Appl( wxT( "GerbView" ), APP_TYPE_GERBVIEW );
if( m_Checker && m_Checker->IsAnotherRunning() )
{
if( !IsOK( NULL, _( "GerbView is already running. Continue?" ) ) )
return false;
}
ScreenPcb = new PCB_SCREEN();
ScreenPcb->m_CurrentSheetDesc = &g_Sheet_GERBER;
......@@ -92,12 +97,6 @@ bool WinEDA_App::OnInit()
extern PARAM_CFG_BASE* ParamCfgList[];
wxGetApp().ReadCurrentSetupValues( ParamCfgList );
if( m_Checker && m_Checker->IsAnotherRunning() )
{
if( !IsOK( NULL, _( "GerbView is already running. Continue?" ) ) )
return false;
}
g_DrawBgColor = BLACK;
/* Must be called before creating the main frame in order to
......
......@@ -51,7 +51,6 @@ extern wxString g_PhotoFilenameExt;
extern wxString g_DrillFilenameExt;
extern wxString g_PenFilenameExt;
extern int g_Default_GERBER_Format;
extern int g_DisplayPolygonsModeSketch;
extern const wxString GerbviewProjectFileExt;
......
......@@ -6,7 +6,6 @@
#include "colors_selection.h"
#define GROUP wxT("/gerbview")
#define GROUPLIB wxT("libraries")
#define INSETUP TRUE
......@@ -17,62 +16,33 @@
static PARAM_CFG_WXSTRING PhotoExtBufCfg
(
wxT("PhoExt"),
INSETUP,
wxT("GerberFileExt"),
&g_PhotoFilenameExt
);
static PARAM_CFG_WXSTRING PenExtBufCfg
(
wxT("PenExt"),
INSETUP,
wxT("PenFileExt"),
&g_PenFilenameExt
);
static PARAM_CFG_WXSTRING DrillExtBufCfg
(
wxT("DrilExt"),
INSETUP,
wxT("DrillFileExt"),
&g_DrillFilenameExt
);
static PARAM_CFG_INT UnitCfg // Units; 0 inches, 1 mm
static PARAM_CFG_INT UnitsSelectionOptCfg // Units; 0 inches, 1 mm
(
INSETUP,
wxT("Units"),
(int*)&g_UserUnit,
MILLIMETRES
);
static PARAM_CFG_INT GerberScaleCfg // default scale; 0 2.3, 1 3.4
(
wxT("Def_fmt"),
&g_Default_GERBER_Format,
23,
23, 66
);
static PARAM_CFG_BOOL SegmFillCfg
(
INSETUP,
wxT("SegFill"),
&DisplayOpt.DisplayPcbTrackFill,
TRUE
);
static PARAM_CFG_INT PadFillCfg
(
INSETUP,
wxT("PadFill"),
(int*)&DisplayOpt.DisplayPadFill,
TRUE
);
static PARAM_CFG_INT ViaFillCfg
(
INSETUP,
wxT("ViaFill"),
(int*)&DisplayOpt.DisplayViaFill,
TRUE
);
static PARAM_CFG_SETCOLOR ColorLayer0Cfg
(
INSETUP,
......@@ -329,18 +299,18 @@ static PARAM_CFG_SETCOLOR ColorLayer31Cfg
7
);
static PARAM_CFG_SETCOLOR ColorDCodesCfg
static PARAM_CFG_SETCOLOR DCodesDisplayOptCfg
(
INSETUP,
wxT("CoDCode"),
wxT("DCodeVisible"),
&g_ColorsSettings.m_ItemsColors[DCODES_VISIBLE],
WHITE
);
static PARAM_CFG_BOOL DisplPolairCfg
static PARAM_CFG_BOOL DisplayPolairCoordinatesOptCfg
(
INSETUP,
wxT("DPolair"),
wxT("DisplayPolairCoordinates"),
&DisplayOpt.DisplayPolarCood,
FALSE
);
......@@ -350,11 +320,7 @@ PARAM_CFG_BASE * ParamCfgList[] =
& PhotoExtBufCfg,
& PenExtBufCfg,
& DrillExtBufCfg,
& UnitCfg,
& GerberScaleCfg,
& SegmFillCfg,
& PadFillCfg,
& ViaFillCfg, //TODO: Will adding this line break tha pcbnew file compatibility?
& UnitsSelectionOptCfg,
& ColorLayer0Cfg,
& ColorLayer1Cfg,
& ColorLayer2Cfg,
......@@ -387,7 +353,7 @@ PARAM_CFG_BASE * ParamCfgList[] =
& ColorLayer29Cfg,
& ColorLayer30Cfg,
& ColorLayer31Cfg,
& ColorDCodesCfg,
& DisplPolairCfg,
& DCodesDisplayOptCfg,
& DisplayPolairCoordinatesOptCfg,
NULL
};
......@@ -29,10 +29,11 @@ public:
private:
void OnOKBUttonClick( wxCommandEvent& event );
void OnCancelButtonClick( wxCommandEvent& event );
void initOptDialog( );
};
void WinEDA_GerberFrame::InstallGerberDisplayOptionsDialog( wxCommandEvent& event )
void WinEDA_GerberFrame::InstallGerberOptionsDialog( wxCommandEvent& event )
{
DIALOG_DISPLAY_OPTIONS dlg( this );
int opt = dlg.ShowModal();
......@@ -45,23 +46,31 @@ DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame *parent) :
{
m_Parent = parent;
SetFocus();
initOptDialog( );
// Show Option Draw Lines
if( DisplayOpt.DisplayPcbTrackFill ) // We use DisplayPcbTrackFill as Lines draw option
m_OptDisplayLines->SetSelection( 1 );
else
m_OptDisplayLines->SetSelection( 0 );
GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this );
Center();
}
if( DisplayOpt.DisplayPadFill )
m_OptDisplayFlashedItems->SetSelection( 1 );
else
m_OptDisplayFlashedItems->SetSelection( 0 );
void DIALOG_DISPLAY_OPTIONS::OnCancelButtonClick( wxCommandEvent& WXUNUSED(event) )
{
EndModal( 0 );
}
void DIALOG_DISPLAY_OPTIONS::initOptDialog( )
{
m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 );
m_BoxUnits->SetSelection( g_UserUnit ? 1 : 0 );
m_CursorShape->SetSelection( m_Parent->m_CursorShape ? 1 : 0 );
// Show Option Draw Lines. We use DisplayPcbTrackFill as Lines draw option
m_OptDisplayLines->SetSelection( DisplayOpt.DisplayPcbTrackFill ? 1 : 0 );
m_OptDisplayFlashedItems->SetSelection( DisplayOpt.DisplayPadFill ? 1 : 0);
// Show Option Draw polygons
if( g_DisplayPolygonsModeSketch == 0 )
m_OptDisplayPolygons->SetSelection( 1 );
else
m_OptDisplayPolygons->SetSelection( 0 );
m_OptDisplayPolygons->SetSelection( g_DisplayPolygonsModeSketch ? 0 : 1 );
m_ShowPageLimits->SetSelection(0);
if( m_Parent->m_Draw_Sheet_Ref )
......@@ -77,20 +86,15 @@ DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( WinEDA_GerberFrame *parent) :
}
m_OptDisplayDCodes->SetValue( m_Parent->IsElementVisible( DCODES_VISIBLE ) );
GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this );
}
void DIALOG_DISPLAY_OPTIONS::OnCancelButtonClick( wxCommandEvent& WXUNUSED(event) )
{
EndModal( 0 );
}
void DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick( wxCommandEvent& event )
{
DisplayOpt.DisplayPolarCood =
(m_PolarDisplay->GetSelection() == 0) ? FALSE : TRUE;
g_UserUnit = (m_BoxUnits->GetSelection() == 0) ? INCHES : MILLIMETRES;
m_Parent->m_CursorShape = m_CursorShape->GetSelection();
if( m_OptDisplayLines->GetSelection() == 1 )
DisplayOpt.DisplayPcbTrackFill = TRUE;
else
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __gerbview_dialog_display_options_frame_base__
#define __gerbview_dialog_display_options_frame_base__
#include <wx/intl.h>
#include <wx/string.h>
#include <wx/radiobox.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/sizer.h>
#include <wx/checkbox.h>
#include <wx/statline.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_DISPLAY_OPTIONS_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_DISPLAY_OPTIONS_BASE : public wxDialog
{
private:
protected:
wxRadioBox* m_OptDisplayLines;
wxRadioBox* m_OptDisplayFlashedItems;
wxRadioBox* m_OptDisplayPolygons;
wxRadioBox* m_ShowPageLimits;
wxCheckBox* m_OptDisplayDCodes;
wxStaticLine* m_staticline1;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, overide them in your derived class
virtual void OnCancelButtonClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnOKBUttonClick( wxCommandEvent& event ){ event.Skip(); }
public:
DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Gerbview Draw Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 413,299 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_DISPLAY_OPTIONS_BASE();
};
#endif //__gerbview_dialog_display_options_frame_base__
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Sep 8 2010)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __gerbview_dialog_display_options_frame_base__
#define __gerbview_dialog_display_options_frame_base__
#include <wx/intl.h>
#include <wx/string.h>
#include <wx/radiobox.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/sizer.h>
#include <wx/checkbox.h>
#include <wx/statline.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_DISPLAY_OPTIONS_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_DISPLAY_OPTIONS_BASE : public wxDialog
{
private:
protected:
wxRadioBox* m_PolarDisplay;
wxRadioBox* m_BoxUnits;
wxRadioBox* m_CursorShape;
wxRadioBox* m_OptDisplayLines;
wxRadioBox* m_OptDisplayFlashedItems;
wxRadioBox* m_OptDisplayPolygons;
wxRadioBox* m_ShowPageLimits;
wxCheckBox* m_OptDisplayDCodes;
wxStaticLine* m_staticline1;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, overide them in your derived class
virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKBUttonClick( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Gerbview Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 446,299 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_DISPLAY_OPTIONS_BASE();
};
#endif //__gerbview_dialog_display_options_frame_base__
......@@ -20,8 +20,7 @@ enum gerbview_ids
ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
ID_GERBVIEW_DELETE_ITEM_BUTT,
ID_GERBVIEW_GLOBAL_DELETE,
ID_POPUP_GERBVIEW_DELETE_TRACKSEG,
ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
ID_GERBVIEW_OPTIONS_SETUP,
ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
ID_TB_OPTIONS_SHOW_DCODES,
ID_TB_OPTIONS_SHOW_FLASHED_ITEMS_SKETCH,
......
......@@ -71,13 +71,11 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void )
_( "Hide &Layers Manager" ),
_( "Show/hide the layers manager toolbar" ),
layers_manager_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_OPTIONS_SETUP, _( "&Options" ),
_( "Select general options" ), preference_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_GERBVIEW_DISPLAY_OPTIONS_SETUP,
_( "Display" ),
_( "Select how items are displayed" ),
display_options_xpm );
ADD_MENUITEM_WITH_HELP( configmenu, ID_GERBVIEW_OPTIONS_SETUP,
_( "&Options" ),
_( "Set options to draw items" ),
preference_xpm );
wxGetApp().AddMenuLanguageList( configmenu );
......
......@@ -12,9 +12,7 @@
#include "class_drawpanel.h"
#include "confirm.h"
#include "pcbplot.h"
#include "gerbview.h"
#include "gerbview_id.h"
......@@ -120,126 +118,3 @@ void WinEDA_GerberFrame::OnSelectOptionToolbar( wxCommandEvent& event )
SetToolbars();
}
class WinEDA_GerberGeneralOptionsFrame : public wxDialog
{
private:
WinEDA_BasePcbFrame* m_Parent;
wxRadioBox* m_PolarDisplay;
wxRadioBox* m_BoxUnits;
wxRadioBox* m_CursorShape;
wxRadioBox* m_GerberDefaultScale;
public:
WinEDA_GerberGeneralOptionsFrame( WinEDA_BasePcbFrame* parent );
~WinEDA_GerberGeneralOptionsFrame() {};
private:
void OnOkClick( wxCommandEvent& event );
void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE( WinEDA_GerberGeneralOptionsFrame, wxDialog )
EVT_BUTTON( wxID_OK, WinEDA_GerberGeneralOptionsFrame::OnOkClick )
EVT_BUTTON( wxID_CANCEL, WinEDA_GerberGeneralOptionsFrame::OnCancelClick )
END_EVENT_TABLE()
WinEDA_GerberGeneralOptionsFrame::WinEDA_GerberGeneralOptionsFrame(
WinEDA_BasePcbFrame* parent ) :
wxDialog( parent, -1, _( "Gerbview Options" ),
wxDefaultPosition, wxSize( 300, 240 ),
wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT )
{
m_Parent = parent;
wxBoxSizer* MainBoxSizer = new wxBoxSizer( wxHORIZONTAL );
SetSizer( MainBoxSizer );
wxBoxSizer* RightBoxSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* MiddleBoxSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* LeftBoxSizer = new wxBoxSizer( wxVERTICAL );
MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 );
MainBoxSizer->Add( MiddleBoxSizer, 0, wxGROW | wxALL, 5 );
MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
wxButton* Button = new wxButton( this, wxID_OK, _( "OK" ) );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
/* Display / not display polar coordinates: */
wxString list_coord[2] =
{
_( "No Display" ),
_( "Display" )
};
m_PolarDisplay = new wxRadioBox( this, -1, _( "Display Polar Coord" ),
wxDefaultPosition, wxDefaultSize,
2, list_coord, 1 );
m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 );
LeftBoxSizer->Add( m_PolarDisplay, 0, wxGROW | wxALL, 5 );
/* Selection of units */
wxString list_units[2] =
{
_( "Inches" ),
_( "millimeters" )
};
m_BoxUnits = new wxRadioBox( this, -1, _( "Units" ), wxDefaultPosition,
wxDefaultSize,
2, list_units, 1 );
m_BoxUnits->SetSelection( g_UserUnit ? 1 : 0 );
LeftBoxSizer->Add( m_BoxUnits, 0, wxGROW | wxALL, 5 );
/* Selection of cursor shape */
wxString list_cursors[2] = { _( "Small" ), _( "Big" ) };
m_CursorShape = new wxRadioBox( this, -1, _( "Cursor" ), wxDefaultPosition,
wxDefaultSize,
2, list_cursors, 1 );
m_CursorShape->SetSelection( parent->m_CursorShape ? 1 : 0 );
MiddleBoxSizer->Add( m_CursorShape, 0, wxGROW | wxALL, 5 );
/* Selection Default Scale (i.e. format 2.3 ou 3.4) */
wxString list_scales[2] = { _( "format: 2.3" ), _( "format 3.4" ) };
m_GerberDefaultScale = new wxRadioBox( this, -1, _( "Default format" ),
wxDefaultPosition, wxDefaultSize,
2, list_scales, 1 );
m_GerberDefaultScale->SetSelection(
(g_Default_GERBER_Format == 23) ? 0 : 1 );
MiddleBoxSizer->Add( m_GerberDefaultScale, 0, wxGROW | wxALL, 5 );
GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this );
}
void WinEDA_GerberGeneralOptionsFrame::OnCancelClick(
wxCommandEvent& WXUNUSED(event) )
{
EndModal( -1 );
}
void WinEDA_GerberGeneralOptionsFrame::OnOkClick( wxCommandEvent& event )
{
DisplayOpt.DisplayPolarCood =
(m_PolarDisplay->GetSelection() == 0) ? FALSE : TRUE;
g_UserUnit = (m_BoxUnits->GetSelection() == 0) ? INCHES : MILLIMETRES;
m_Parent->m_CursorShape = m_CursorShape->GetSelection();
g_Default_GERBER_Format =
(m_GerberDefaultScale->GetSelection() == 0) ? 23 : 34;
EndModal( 1 );
}
void WinEDA_GerberFrame::InstallGerberGeneralOptionsFrame( wxCommandEvent& event )
{
WinEDA_GerberGeneralOptionsFrame dlg( this );
dlg.ShowModal();
}
......@@ -111,7 +111,7 @@ bool WinEDA_GerberFrame::Read_GERBER_File( const wxString& GERBER_FullFileName,
case 'X':
case 'Y': /* Move or draw command */
gerber->m_CurrentPos = gerber->ReadXYCoord( text );
gerber->m_CurrentPos = gerber->ReadXYCoord( text );
if( *text == '*' ) // command like X12550Y19250*
{
gerber->Execute_DCODE_Command( this, text,
......@@ -121,7 +121,12 @@ bool WinEDA_GerberFrame::Read_GERBER_File( const wxString& GERBER_FullFileName,
case 'I':
case 'J': /* Auxiliary Move command */
gerber->m_IJPos = gerber->ReadIJCoord( text );
gerber->m_IJPos = gerber->ReadIJCoord( text );
if( *text == '*' ) // command like X35142Y15945J504*
{
gerber->Execute_DCODE_Command( this, text,
gerber->m_Last_Pen_Command );
}
break;
case '%':
......
......@@ -452,7 +452,7 @@ static void fillArcPOLY( BOARD* aPcb, GERBER_DRAW_ITEM* aGbrItem,
*/
wxPoint GERBER::ReadXYCoord( char*& Text )
{
wxPoint pos = m_CurrentPos;
wxPoint pos;
int type_coord = 0, current_coord, nbdigits;
bool is_float = false;
char* text;
......
This diff is collapsed.
......@@ -236,8 +236,7 @@ public:
void Process_Settings( wxCommandEvent& event );
void Process_Config( wxCommandEvent& event );
void InstallConfigFrame( const wxPoint& pos );
void InstallGerberGeneralOptionsFrame( wxCommandEvent& event );
void InstallGerberDisplayOptionsDialog( wxCommandEvent& event );
void InstallGerberOptionsDialog( wxCommandEvent& event );
void InstallPcbGlobalDeleteFrame( const wxPoint& pos );
/* handlers for block commands */
......
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