diff --git a/common/basicframe.cpp b/common/basicframe.cpp index b7f21f204d..c2986e44ea 100644 --- a/common/basicframe.cpp +++ b/common/basicframe.cpp @@ -278,6 +278,37 @@ void EDA_BASE_FRAME::GetKicadHelp( wxCommandEvent& event ) #endif } +/* + * Function OnSelectPreferredEditor + * Open a dialog to select the preferred editor that will be used in Kicad + * to edit or display files (reports ... ) + * The full filename editor is saved in configuration (global params) + */ +void EDA_BASE_FRAME::OnSelectPreferredEditor( wxCommandEvent& event ) +{ + wxFileName fn = wxGetApp().m_EditorName; + wxString wildcard( wxT( "*" ) ); + +#ifdef __WINDOWS__ + wildcard += wxT( ".exe" ); +#endif + + wildcard = _( "Executable file (" ) + wildcard + wxT( ")|" ) + wildcard; + + wxFileDialog dlg( this, _( "Select Prefered Editor" ), fn.GetPath(), + fn.GetFullName(), wildcard, + wxFD_OPEN | wxFD_FILE_MUST_EXIST ); + + if( dlg.ShowModal() == wxID_CANCEL ) + return; + + wxASSERT( wxGetApp().m_EDA_CommonConfig ); + + wxConfig* cfg = wxGetApp().m_EDA_CommonConfig; + wxGetApp().m_EditorName = dlg.GetPath(); + cfg->Write( wxT( "Editor" ), wxGetApp().m_EditorName ); +} + /* * diff --git a/common/build_version.cpp b/common/build_version.cpp index a3e10c24de..db1a49fa40 100644 --- a/common/build_version.cpp +++ b/common/build_version.cpp @@ -6,7 +6,7 @@ #endif #ifndef KICAD_BUILD_VERSION -#define KICAD_BUILD_VERSION "(2011-03-11 BZR 2884)" +#define KICAD_BUILD_VERSION "(2011-03-12)" #endif //#define VERSION_STABILITY "stable" diff --git a/demos/complex_hierarchy/complex_hierarchy.pro b/demos/complex_hierarchy/complex_hierarchy.pro index 7e43fef399..8a9a2d2cbf 100644 --- a/demos/complex_hierarchy/complex_hierarchy.pro +++ b/demos/complex_hierarchy/complex_hierarchy.pro @@ -1,6 +1,6 @@ -update=01/04/2010 16:21:47 +update=12/03/2011 18:54:54 version=1 -last_client=eeschema +last_client=pcbnew [cvpcb] version=1 NetITyp=0 @@ -11,72 +11,6 @@ LibDir= NetType=0 [cvpcb/libraries] EquName1=devcms -[pcbnew] -version=1 -PadDrlX=320 -PadDimH=600 -PadDimV=600 -PadForm=1 -PadMask=14745599 -ViaDiam=450 -ViaDril=250 -Isol=60 -Countlayer=2 -Lpiste=170 -RouteTo=15 -RouteBo=0 -TypeVia=3 -Segm45=1 -Racc45=1 -Unite=0 -SegFill=1 -SegAffG=0 -NewAffG=1 -PadFill=1 -PadAffG=1 -PadSNum=1 -ModAffC=0 -ModAffT=0 -PcbAffT=0 -SgPcb45=1 -TxtPcbV=800 -TxtPcbH=600 -TxtModV=600 -TxtModH=600 -TxtModW=120 -HPGLnum=1 -HPGdiam=15 -HPGLSpd=20 -HPGLrec=2 -HPGLorg=0 -GERBmin=15 -VEgarde=100 -DrawLar=150 -EdgeLar=150 -TxtLar=120 -MSegLar=150 -ForPlot=1 -WpenSer=10 -UserGrX=0,01 -UserGrY=0,01 -UserGrU=1 -DivGrPc=1 -TimeOut=600 -MaxLnkS=3 -ShowRat=0 -ShowMRa=1 -[pcbnew/libraries] -LibDir= -LibName1=sockets -LibName2=connect -LibName3=discret -LibName4=pin_array -LibName5=divers -LibName6=libcms -LibName7=display -LibName8=valves -LibName9=led -LibName10=dip_sockets [general] version=1 [eeschema] @@ -123,3 +57,32 @@ LibName5=linear LibName6=regul LibName7=interface LibName8=special +[pcbnew] +version=1 +PadDrlX=320 +PadDimH=600 +PadDimV=600 +BoardThickness=630 +TxtPcbV=800 +TxtPcbH=600 +TxtModV=600 +TxtModH=600 +TxtModW=120 +VEgarde=100 +DrawLar=150 +EdgeLar=150 +TxtLar=120 +MSegLar=150 +LastNetListRead= +[pcbnew/libraries] +LibDir= +LibName1=sockets +LibName2=connect +LibName3=discret +LibName4=pin_array +LibName5=divers +LibName6=libcms +LibName7=display +LibName8=valves +LibName9=led +LibName10=dip_sockets diff --git a/gerbview/CMakeLists.txt b/gerbview/CMakeLists.txt index 46c56f15d1..dc8442eb26 100644 --- a/gerbview/CMakeLists.txt +++ b/gerbview/CMakeLists.txt @@ -13,6 +13,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ### # Sources ### + set(DIALOGS_SRCS dialogs/gerbview_dialog_display_options_frame_base.cpp dialogs/gerbview_dialog_display_options_frame.cpp @@ -35,9 +36,9 @@ set(GERBVIEW_SRCS edit.cpp export_to_pcbnew.cpp files.cpp - gerberframe.cpp - gerbview_config.cpp gerbview.cpp + gerbview_config.cpp + gerbview_frame.cpp hotkeys.cpp initpcb.cpp locate.cpp @@ -50,7 +51,8 @@ set(GERBVIEW_SRCS rs274d.cpp rs274x.cpp select_layers_to_pcb.cpp - toolbars_gerber.cpp ) + toolbars_gerber.cpp + ) ### # We need some extra sources from pcbnew diff --git a/gerbview/block.cpp b/gerbview/block.cpp index 015aaa41a6..49ee200860 100644 --- a/gerbview/block.cpp +++ b/gerbview/block.cpp @@ -1,6 +1,6 @@ -/**********************************************************/ -/* Block operations: displacement, rotation, deletion ... */ -/**********************************************************/ +/**********************************/ +/* Block operations: displacement */ +/**********************************/ /* * This program source code file is part of KICAD, a free EDA CAD application. @@ -28,15 +28,14 @@ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "class_drawpanel.h" -#include "trigo.h" #include "confirm.h" #include "gerbview.h" #include "class_gerber_draw_item.h" +#include "wx/debug.h" #define BLOCK_COLOR BROWN @@ -46,6 +45,7 @@ static void DrawMovingBlockOutlines( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wx /* Return the block command (BLOCK_MOVE, BLOCK_COPY...) corresponding to * the key (ALT, SHIFT ALT ..) + * Currently, only block move and block zoom is supported */ int GERBVIEW_FRAME::ReturnBlockCommand( int key ) { @@ -62,17 +62,9 @@ int GERBVIEW_FRAME::ReturnBlockCommand( int key ) break; case GR_KB_SHIFT: - break; - case GR_KB_CTRL: - break; - case GR_KB_SHIFTCTRL: - cmd = BLOCK_DELETE; - break; - case GR_KB_ALT: - cmd = BLOCK_COPY; break; case MOUSE_MIDDLE: @@ -87,25 +79,13 @@ int GERBVIEW_FRAME::ReturnBlockCommand( int key ) /* Routine to handle the BLOCK PLACE command */ void GERBVIEW_FRAME::HandleBlockPlace( wxDC* DC ) { - bool err = false; + wxASSERT( DrawPanel->IsMouseCaptured() ); - if( !DrawPanel->IsMouseCaptured() ) - { - err = true; - DisplayError( this, - wxT( "Error in HandleBlockPLace : m_mouseCaptureCallback = NULL" ) ); - } GetScreen()->m_BlockLocate.m_State = STATE_BLOCK_STOP; switch( GetScreen()->m_BlockLocate.m_Command ) { - case BLOCK_IDLE: - err = true; - break; - - case BLOCK_DRAG: /* Drag */ case BLOCK_MOVE: /* Move */ - case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/ if( DrawPanel->IsMouseCaptured() ) DrawPanel->m_mouseCaptureCallback( DrawPanel, DC, wxDefaultPosition, false ); @@ -122,9 +102,9 @@ void GERBVIEW_FRAME::HandleBlockPlace( wxDC* DC ) break; case BLOCK_PASTE: - break; - - case BLOCK_ZOOM: // Handle by HandleBlockEnd() + case BLOCK_DRAG: + case BLOCK_PRESELECT_MOVE: + case BLOCK_ZOOM: case BLOCK_ROTATE: case BLOCK_FLIP: case BLOCK_DELETE: @@ -133,6 +113,8 @@ void GERBVIEW_FRAME::HandleBlockPlace( wxDC* DC ) case BLOCK_SELECT_ITEMS_ONLY: case BLOCK_MIRROR_X: case BLOCK_MIRROR_Y: + case BLOCK_IDLE: + wxFAIL_MSG( wxT("HandleBlockPlace: Unexpected block command") ); break; } @@ -142,11 +124,7 @@ void GERBVIEW_FRAME::HandleBlockPlace( wxDC* DC ) GetScreen()->SetModify(); GetScreen()->ClearBlockCommand(); - if( GetScreen()->m_BlockLocate.GetCount() ) - { - DisplayError( this, wxT( "HandleBlockPLace error: some items left" ) ); - GetScreen()->m_BlockLocate.ClearItemsList(); - } + wxASSERT( GetScreen()->m_BlockLocate.GetCount() == 0 ); DisplayToolMsg( wxEmptyString ); } @@ -171,15 +149,8 @@ bool GERBVIEW_FRAME::HandleBlockEnd( wxDC* DC ) switch( GetScreen()->m_BlockLocate.m_Command ) { - case BLOCK_IDLE: - DisplayError( this, wxT( "Error in HandleBlockPLace" ) ); - break; - - case BLOCK_DRAG: /* Drag (not used, for future - * enhancements) */ case BLOCK_MOVE: /* Move */ case BLOCK_COPY: /* Copy */ - case BLOCK_PRESELECT_MOVE: /* Move with preselection list */ GetScreen()->m_BlockLocate.m_State = STATE_BLOCK_MOVE; nextcmd = true; DrawPanel->m_mouseCaptureCallback( DrawPanel, DC, wxDefaultPosition, false ); @@ -193,20 +164,22 @@ bool GERBVIEW_FRAME::HandleBlockEnd( wxDC* DC ) Block_Delete( DC ); break; + case BLOCK_ZOOM: /* Window Zoom */ + zoom_command = true; + break; + + case BLOCK_PRESELECT_MOVE: /* Move with preselection list */ + case BLOCK_DRAG: + case BLOCK_IDLE: case BLOCK_MIRROR_X: /* Mirror, unused*/ case BLOCK_ROTATE: /* Unused */ case BLOCK_FLIP: /* Flip, unused */ case BLOCK_SAVE: /* Save (not used)*/ case BLOCK_PASTE: - break; - - case BLOCK_ZOOM: /* Window Zoom */ - zoom_command = true; - break; - case BLOCK_ABORT: case BLOCK_SELECT_ITEMS_ONLY: case BLOCK_MIRROR_Y: + wxFAIL_MSG( wxT("HandleBlockEnd: Unexpected block command") ); break; } diff --git a/gerbview/class_gerbview_layer_widget.cpp b/gerbview/class_gerbview_layer_widget.cpp index eb1932b5cd..3841517c36 100644 --- a/gerbview/class_gerbview_layer_widget.cpp +++ b/gerbview/class_gerbview_layer_widget.cpp @@ -33,7 +33,6 @@ #include "class_drawpanel.h" #include "pcbstruct.h" #include "gerbview.h" -#include "wxGerberFrame.h" #include "layer_widget.h" #include "class_gerbview_layer_widget.h" diff --git a/gerbview/dcode.cpp b/gerbview/dcode.cpp index e3635c395a..da329df607 100644 --- a/gerbview/dcode.cpp +++ b/gerbview/dcode.cpp @@ -137,17 +137,17 @@ int D_CODE::GetShapeDim( GERBER_DRAW_ITEM* aParent ) /* - * Function Read_D_Code_File + * Function ReadDCodeDefinitionFile * Can be useful only with old RS274D Gerber file format. * Is not needed with RS274X files format. * These files need an auxiliary DCode file description. There is no defined file format for this. * This function read a file format I needed a long time ago. * reads in a dcode file assuming ALSPCB file format with ';' indicating comments. * Format is like CSV but with optional ';' delineated comments: - * tool, Horiz, Vert, drill, vitesse, acc. ,Type ; [DCODE (commentaire)] + * tool, Horiz, Vert, drill, speed, accel. ,Type ; [DCODE (commentaire)] * ex: 1, 12, 12, 0, 0, 0, 3 ; D10 */ -int GERBVIEW_FRAME::Read_D_Code_File( const wxString& D_Code_FullFileName ) +int GERBVIEW_FRAME::ReadDCodeDefinitionFile( const wxString& D_Code_FullFileName ) { int current_Dcode, ii, dcode_scale; char* ptcar; diff --git a/gerbview/dialogs/dialog_print_using_printer.cpp b/gerbview/dialogs/dialog_print_using_printer.cpp index dbc8cb5a79..e0085473e5 100644 --- a/gerbview/dialogs/dialog_print_using_printer.cpp +++ b/gerbview/dialogs/dialog_print_using_printer.cpp @@ -15,7 +15,6 @@ #include "printout_controler.h" #include "gerbview.h" -#include "wxGerberFrame.h" #include "pcbplot.h" #include "class_board_design_settings.h" diff --git a/gerbview/edit.cpp b/gerbview/edit.cpp index 3a16ae23ed..0cc0105af0 100644 --- a/gerbview/edit.cpp +++ b/gerbview/edit.cpp @@ -118,11 +118,11 @@ void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event ) switch( id ) { case ID_EXIT: - Close( TRUE ); + Close( true ); break; case ID_GERBVIEW_GLOBAL_DELETE: - Erase_Current_Layer( TRUE ); + Erase_Current_Layer( true ); ClearMsgPanel(); break; @@ -171,6 +171,10 @@ void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event ) wxFileName fn( gerber_layer->m_FileName ); ExecuteFile( this, editorname, QuoteFullPath( fn ) ); } + else + { + wxMessageBox(_("No editor defined. Please select one") ); + } } break; diff --git a/gerbview/files.cpp b/gerbview/files.cpp index 712ddfa306..01db40d633 100644 --- a/gerbview/files.cpp +++ b/gerbview/files.cpp @@ -10,9 +10,6 @@ #include "gerbview.h" -static void LoadDCodeFile( GERBVIEW_FRAME* frame, - const wxString& FullFileName ); - /* Load a Gerber file selected from history list on current layer * Previous data is deleted @@ -79,11 +76,12 @@ clear an existing layer to load any new layers." ), NB_LAYERS ); break; case ID_GERBVIEW_LOAD_DCODE_FILE: - LoadDCodeFile( this, wxEmptyString ); + LoadDCodeFile( wxEmptyString ); + DrawPanel->Refresh(); break; default: - DisplayError( this, wxT( "File_io Internal Error" ) ); + wxFAIL_MSG( wxT( "File_io: unexpected command id" ) ); break; } } @@ -199,33 +197,33 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName ) /* * Read a DCode file (not used with RX274X files , just with RS274D old files). - * Note: there is no standard for DCode file. + * Note: there is no standard for DCode files. * Just read a file format created by early versions of Pcbnew. * Returns: - * 0 if file not read (cancellation of order ...) - * 1 if OK + * false if file not read (cancellation of order ...) + * true if OK */ -static void LoadDCodeFile( GERBVIEW_FRAME* frame, const wxString& FullFileName ) +bool GERBVIEW_FRAME::LoadDCodeFile( const wxString& aFullFileName ) { wxString wildcard; - wxFileName fn = FullFileName; + wxFileName fn = aFullFileName; if( !fn.IsOk() ) { wildcard = _( "Gerber DCODE files" ); - wildcard += AllFilesWildcard; - fn = frame->GetScreen()->GetFileName(); - wxFileDialog dlg( (wxWindow*) frame, _( "Load GERBER DCODE File" ), + wildcard += wxT(" ") + AllFilesWildcard; + fn = GetScreen()->GetFileName(); + wxFileDialog dlg( this, _( "Load GERBER DCODE File" ), fn.GetPath(), fn.GetFullName(), wildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST ); if( dlg.ShowModal() == wxID_CANCEL ) - return; + return false; fn = dlg.GetPath(); } - frame->Read_D_Code_File( fn.GetFullPath() ); - frame->CopyDCodesSizeToItems(); - frame->Refresh(); + ReadDCodeDefinitionFile( fn.GetFullPath() ); + CopyDCodesSizeToItems(); + return true; } diff --git a/gerbview/gerbview.cpp b/gerbview/gerbview.cpp index 938e0ef529..99f2107cd1 100644 --- a/gerbview/gerbview.cpp +++ b/gerbview/gerbview.cpp @@ -11,7 +11,6 @@ #include "gerbview.h" #include "gerbview_id.h" -#include "wxGerberFrame.h" #include "pcbplot.h" #include "bitmaps.h" #include "zones.h" diff --git a/gerbview/gerbview.h b/gerbview/gerbview.h index 3e8b2166cf..9c56726a45 100644 --- a/gerbview/gerbview.h +++ b/gerbview/gerbview.h @@ -108,6 +108,6 @@ bool GetEndOfBlock( char buff[GERBER_BUFZ], char*& text, FILE* gerber_file ); extern GERBER_IMAGE* g_GERBER_List[32]; #include "pcbcommon.h" -#include "wxGerberFrame.h" +#include "gerbview_frame.h" #endif // ifndef GERBVIEW_H diff --git a/gerbview/gerberframe.cpp b/gerbview/gerbview_frame.cpp similarity index 99% rename from gerbview/gerberframe.cpp rename to gerbview/gerbview_frame.cpp index 35438c736b..696d9de91c 100644 --- a/gerbview/gerberframe.cpp +++ b/gerbview/gerbview_frame.cpp @@ -64,6 +64,8 @@ BEGIN_EVENT_TABLE( GERBVIEW_FRAME, PCB_BASE_FRAME ) EVT_MENU( ID_GERBVIEW_SHOW_LIST_DCODES, GERBVIEW_FRAME::Process_Special_Functions ) EVT_MENU( ID_GERBVIEW_POPUP_DELETE_DCODE_ITEMS, GERBVIEW_FRAME::Process_Special_Functions ) EVT_MENU( ID_GERBVIEW_SHOW_SOURCE, GERBVIEW_FRAME::Process_Special_Functions ) + EVT_MENU( ID_MENU_GERBVIEW_SELECT_PREFERED_EDITOR, + EDA_BASE_FRAME::OnSelectPreferredEditor ) // menu Miscellaneous EVT_MENU( ID_GERBVIEW_GLOBAL_DELETE, GERBVIEW_FRAME::Process_Special_Functions ) diff --git a/gerbview/wxGerberFrame.h b/gerbview/gerbview_frame.h similarity index 96% rename from gerbview/wxGerberFrame.h rename to gerbview/gerbview_frame.h index 80eba0cbd5..6ac2b7bb4c 100644 --- a/gerbview/wxGerberFrame.h +++ b/gerbview/gerbview_frame.h @@ -406,7 +406,18 @@ public: GERBVIEW_FRAME( wxWindow* father, const wxString& title, void GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 ); /** - * Function Read_D_Code_File + * Read a DCode file (not used with RX274X files , just with RS274D old files). + * Note: there is no standard for DCode file. + * Just read a file format created by early versions of Pcbnew. + * @return false if file not read (cancellation) + * true if OK + * @ aparm aFullFileName = name of file to load. + * if empty, or if the file does not exist, a file dialog is opened + */ + bool LoadDCodeFile( const wxString& aFullFileName ); + + /** + * Function ReadDCodeDefinitionFile * reads in a dcode file assuming ALSPCB file format with ';' indicating * comments. *
@@ -418,7 +429,7 @@ public: GERBVIEW_FRAME( wxWindow* father, const wxString& title,
* Ver, Hor, Type, Tool [,Drill]
* example: 0.012, 0.012, L , D10
*
- * Categorize all found dcodes into a table of D_CODE instantiations.
+ * Load all found dcodes into a table of D_CODE instantiations.
* @param D_Code_FullFileName The name of the file to read from.
* @return int -
* -1 = file not found
@@ -428,7 +439,7 @@ public: GERBVIEW_FRAME( wxWindow* father, const wxString& title,
* g_GERBER_List[]
* 1 = read OK
*/
- int Read_D_Code_File( const wxString& D_Code_FullFileName );
+ int ReadDCodeDefinitionFile( const wxString& D_Code_FullFileName );
void CopyDCodesSizeToItems();
void Liste_D_Codes();
diff --git a/gerbview/gerbview_id.h b/gerbview/gerbview_id.h
index 5d9befa09c..0fc7fe2eba 100644
--- a/gerbview/gerbview_id.h
+++ b/gerbview/gerbview_id.h
@@ -16,6 +16,7 @@ enum gerbview_ids
ID_MAIN_MENUBAR = ID_END_LIST,
ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+ ID_MENU_GERBVIEW_SELECT_PREFERED_EDITOR,
ID_TOOLBARH_GERBVIEW_SELECT_LAYER,
ID_GERBVIEW_GLOBAL_DELETE,
diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp
index 76a99dea4b..4705300f0f 100644
--- a/gerbview/menubar.cpp
+++ b/gerbview/menubar.cpp
@@ -6,7 +6,7 @@
#include "appl_wxstruct.h"
#include "common.h"
-#include "macros.h"
+//#include "macros.h"
#include "gerbview.h"
#include "bitmaps.h"
#include "gerbview_id.h"
@@ -91,6 +91,13 @@ void GERBVIEW_FRAME::ReCreateMenuBar( void )
_( "&Clear Layer" ),
_( "Clear current layer" ), general_deletions_xpm );
+ miscellaneous_menu->AppendSeparator();
+ ADD_MENUITEM_WITH_HELP( miscellaneous_menu, ID_MENU_GERBVIEW_SELECT_PREFERED_EDITOR,
+ _( "&Text Editor" ),
+ _( "Select your preferred text editor" ),
+ editor_xpm );
+
+
// Menu Help:
wxMenu* helpMenu = new wxMenu;
AddHelpVersionInfoMenuEntry( helpMenu );
diff --git a/gerbview/options.cpp b/gerbview/options.cpp
index 48797b3d1a..dfe556947d 100644
--- a/gerbview/options.cpp
+++ b/gerbview/options.cpp
@@ -88,3 +88,4 @@ void GERBVIEW_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
break;
}
}
+
diff --git a/gerbview/readgerb.cpp b/gerbview/readgerb.cpp
index 0e148bbb82..2d65b78502 100644
--- a/gerbview/readgerb.cpp
+++ b/gerbview/readgerb.cpp
@@ -165,31 +165,7 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName,
*/
if( !gerber->m_Has_DCode )
{
- wxFileName fn;
-
- if( D_Code_FullFileName.IsEmpty() )
- {
- wxString wildcard;
-
- fn = GERBER_FullFileName;
- fn.SetExt( wxEmptyString );
- wildcard = _( "Gerber DCODE files" );
- wildcard += AllFilesWildcard;
-
- wxFileDialog dlg( this, _( "Load GERBER DCODE File" ),
- wxEmptyString, fn.GetFullName(), wildcard,
- wxFD_OPEN | wxFD_FILE_MUST_EXIST );
- }
- else
- fn = D_Code_FullFileName;
-
- if( fn.IsOk() )
- {
- Read_D_Code_File( fn.GetFullPath() );
- CopyDCodesSizeToItems();
- }
- else
- return false;
+ return LoadDCodeFile( D_Code_FullFileName );
}
return true;
diff --git a/include/wxstruct.h b/include/wxstruct.h
index a01089205c..f2a358aab1 100644
--- a/include/wxstruct.h
+++ b/include/wxstruct.h
@@ -127,6 +127,14 @@ public:
virtual void LoadSettings();
virtual void SaveSettings();
+ /**
+ * Function OnSelectPreferredEditor
+ * Open a dialog to select the editor that will used in Kicad
+ * to edit or display files (reports ... )
+ * The full filename editor is saved in configuration (global params)
+ */
+ virtual void OnSelectPreferredEditor( wxCommandEvent& event );
+
// Read/Save and Import/export hotkeys config
/**
diff --git a/kicad/kicad.h b/kicad/kicad.h
index f88777326d..2c811589ce 100644
--- a/kicad/kicad.h
+++ b/kicad/kicad.h
@@ -109,7 +109,6 @@ public:
void OnRefresh( wxCommandEvent& event );
void OnSelectDefaultPdfBrowser( wxCommandEvent& event );
void OnSelectPreferredPdfBrowser( wxCommandEvent& event );
- void OnSelectPreferredEditor( wxCommandEvent& event );
void OnUpdateDefaultPdfBrowser( wxUpdateUIEvent& event );
void OnUpdatePreferredPdfBrowser( wxUpdateUIEvent& event );
diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp
index b128252585..9bf64bfe48 100644
--- a/kicad/menubar.cpp
+++ b/kicad/menubar.cpp
@@ -11,56 +11,56 @@
/* Menubar and toolbar event table */
BEGIN_EVENT_TABLE( WinEDA_MainFrame, EDA_BASE_FRAME )
- /* Window events */
- EVT_SIZE( WinEDA_MainFrame::OnSize )
- EVT_CLOSE( WinEDA_MainFrame::OnCloseWindow )
+/* Window events */
+EVT_SIZE( WinEDA_MainFrame::OnSize )
+EVT_CLOSE( WinEDA_MainFrame::OnCloseWindow )
- /* Sash drag events */
- EVT_SASH_DRAGGED( ID_LEFT_FRAME, WinEDA_MainFrame::OnSashDrag )
+/* Sash drag events */
+EVT_SASH_DRAGGED( ID_LEFT_FRAME, WinEDA_MainFrame::OnSashDrag )
- /* Toolbar events */
- EVT_TOOL( ID_NEW_PROJECT, WinEDA_MainFrame::OnLoadProject )
- EVT_TOOL( ID_LOAD_PROJECT, WinEDA_MainFrame::OnLoadProject )
- EVT_TOOL( ID_SAVE_PROJECT, WinEDA_MainFrame::OnSaveProject )
- EVT_TOOL( ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::OnArchiveFiles )
+/* Toolbar events */
+EVT_TOOL( ID_NEW_PROJECT, WinEDA_MainFrame::OnLoadProject )
+EVT_TOOL( ID_LOAD_PROJECT, WinEDA_MainFrame::OnLoadProject )
+EVT_TOOL( ID_SAVE_PROJECT, WinEDA_MainFrame::OnSaveProject )
+EVT_TOOL( ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::OnArchiveFiles )
- /* Menu events */
- EVT_MENU( ID_SAVE_PROJECT, WinEDA_MainFrame::OnSaveProject )
- EVT_MENU( wxID_EXIT, WinEDA_MainFrame::OnExit )
- EVT_MENU( ID_TO_EDITOR, WinEDA_MainFrame::OnOpenTextEditor )
- EVT_MENU( ID_BROWSE_AN_SELECT_FILE,
- WinEDA_MainFrame::OnOpenFileInTextEditor )
- EVT_MENU( ID_SELECT_PREFERED_EDITOR,
- WinEDA_MainFrame::OnSelectPreferredEditor )
- EVT_MENU( ID_SELECT_DEFAULT_PDF_BROWSER,
- WinEDA_MainFrame::OnSelectDefaultPdfBrowser )
- EVT_MENU( ID_SELECT_PREFERED_PDF_BROWSER,
- WinEDA_MainFrame::OnSelectPreferredPdfBrowser )
- EVT_MENU( ID_SELECT_PREFERED_PDF_BROWSER_NAME,
- WinEDA_MainFrame::OnSelectPreferredPdfBrowser )
- EVT_MENU( ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::OnArchiveFiles )
- EVT_MENU( ID_READ_ZIP_ARCHIVE, WinEDA_MainFrame::OnUnarchiveFiles )
- EVT_MENU( ID_PROJECT_TREE_REFRESH, WinEDA_MainFrame::OnRefresh )
- EVT_MENU( ID_GENERAL_HELP, WinEDA_MainFrame::GetKicadHelp )
- EVT_MENU( ID_KICAD_ABOUT, WinEDA_MainFrame::GetKicadAbout )
+/* Menu events */
+EVT_MENU( ID_SAVE_PROJECT, WinEDA_MainFrame::OnSaveProject )
+EVT_MENU( wxID_EXIT, WinEDA_MainFrame::OnExit )
+EVT_MENU( ID_TO_EDITOR, WinEDA_MainFrame::OnOpenTextEditor )
+EVT_MENU( ID_BROWSE_AN_SELECT_FILE,
+ WinEDA_MainFrame::OnOpenFileInTextEditor )
+EVT_MENU( ID_SELECT_PREFERED_EDITOR,
+ EDA_BASE_FRAME::OnSelectPreferredEditor )
+EVT_MENU( ID_SELECT_DEFAULT_PDF_BROWSER,
+ WinEDA_MainFrame::OnSelectDefaultPdfBrowser )
+EVT_MENU( ID_SELECT_PREFERED_PDF_BROWSER,
+ WinEDA_MainFrame::OnSelectPreferredPdfBrowser )
+EVT_MENU( ID_SELECT_PREFERED_PDF_BROWSER_NAME,
+ WinEDA_MainFrame::OnSelectPreferredPdfBrowser )
+EVT_MENU( ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::OnArchiveFiles )
+EVT_MENU( ID_READ_ZIP_ARCHIVE, WinEDA_MainFrame::OnUnarchiveFiles )
+EVT_MENU( ID_PROJECT_TREE_REFRESH, WinEDA_MainFrame::OnRefresh )
+EVT_MENU( ID_GENERAL_HELP, WinEDA_MainFrame::GetKicadHelp )
+EVT_MENU( ID_KICAD_ABOUT, WinEDA_MainFrame::GetKicadAbout )
- /* Range menu events */
- EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
- WinEDA_MainFrame::SetLanguage )
+/* Range menu events */
+EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
+ WinEDA_MainFrame::SetLanguage )
- EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, WinEDA_MainFrame::OnFileHistory )
+EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, WinEDA_MainFrame::OnFileHistory )
- /* Button events */
- EVT_BUTTON( ID_TO_PCB, WinEDA_MainFrame::OnRunPcbNew )
- EVT_BUTTON( ID_TO_CVPCB, WinEDA_MainFrame::OnRunCvpcb )
- EVT_BUTTON( ID_TO_EESCHEMA, WinEDA_MainFrame::OnRunEeschema )
- EVT_BUTTON( ID_TO_GERBVIEW, WinEDA_MainFrame::OnRunGerbview )
- EVT_BUTTON( ID_TO_BITMAP_CONVERTER, WinEDA_MainFrame::OnRunBitmapConverter )
+/* Button events */
+EVT_BUTTON( ID_TO_PCB, WinEDA_MainFrame::OnRunPcbNew )
+EVT_BUTTON( ID_TO_CVPCB, WinEDA_MainFrame::OnRunCvpcb )
+EVT_BUTTON( ID_TO_EESCHEMA, WinEDA_MainFrame::OnRunEeschema )
+EVT_BUTTON( ID_TO_GERBVIEW, WinEDA_MainFrame::OnRunGerbview )
+EVT_BUTTON( ID_TO_BITMAP_CONVERTER, WinEDA_MainFrame::OnRunBitmapConverter )
- EVT_UPDATE_UI( ID_SELECT_DEFAULT_PDF_BROWSER,
- WinEDA_MainFrame::OnUpdateDefaultPdfBrowser )
- EVT_UPDATE_UI( ID_SELECT_PREFERED_PDF_BROWSER,
- WinEDA_MainFrame::OnUpdatePreferredPdfBrowser )
+EVT_UPDATE_UI( ID_SELECT_DEFAULT_PDF_BROWSER,
+ WinEDA_MainFrame::OnUpdateDefaultPdfBrowser )
+EVT_UPDATE_UI( ID_SELECT_PREFERED_PDF_BROWSER,
+ WinEDA_MainFrame::OnUpdatePreferredPdfBrowser )
END_EVENT_TABLE()
@@ -70,17 +70,17 @@ END_EVENT_TABLE()
*/
void WinEDA_MainFrame::ReCreateMenuBar()
{
- wxMenuItem *item;
- wxMenuBar *menuBar = GetMenuBar();
+ wxMenuItem* item;
+ wxMenuBar* menuBar = GetMenuBar();
- if( ! menuBar )
+ if( !menuBar )
menuBar = new wxMenuBar();
// Delete all existing menus so they can be rebuilt.
// This allows language changes of the menu text on the fly.
menuBar->Freeze();
while( menuBar->GetMenuCount() )
- delete menuBar->Remove(0);
+ delete menuBar->Remove( 0 );
// Recreate all menus:
@@ -88,113 +88,75 @@ void WinEDA_MainFrame::ReCreateMenuBar()
wxMenu* filesMenu = new wxMenu;
// Open
- item = new wxMenuItem( filesMenu, ID_LOAD_PROJECT, _( "&Open\tCtrl+O" ),
- _( "Open an existing project" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( open_project_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, ID_LOAD_PROJECT, _( "&Open\tCtrl+O" ),
+ _( "Open an existing project" ),
+ open_project_xpm );
// Open Recent submenu
wxMenu* openRecentMenu = new wxMenu();
wxGetApp().m_fileHistory.AddFilesToMenu( openRecentMenu );
ADD_MENUITEM_WITH_HELP_AND_SUBMENU( filesMenu, openRecentMenu,
- -1, _( "Open &Recent" ),
- _("Open a recent opened schematic project" ),
+ wxID_ANY, _( "Open &Recent" ),
+ _( "Open a recent opened schematic project" ),
open_project_xpm );
// New
- item = new wxMenuItem( filesMenu, ID_NEW_PROJECT, _( "&New\tCtrl+N" ),
- _( "Start a new project" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( new_project_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, ID_NEW_PROJECT,
+ _( "&New\tCtrl+N" ),
+ _( "Start a new project" ),
+ new_project_xpm );
/* Save */
- item = new wxMenuItem( filesMenu, ID_SAVE_PROJECT, _( "&Save\tCtrl+S" ),
- _( "Save current project" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( save_project_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, ID_SAVE_PROJECT, _( "&Save\tCtrl+S" ),
+ _( "Save current project" ),
+ save_project_xpm );
// Archive
filesMenu->AppendSeparator();
- item = new wxMenuItem( filesMenu, ID_SAVE_AND_ZIP_FILES, _( "&Archive" ),
- _( "Archive project files in zip archive" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( zip_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, ID_SAVE_AND_ZIP_FILES, _( "&Archive" ),
+ _( "Archive project files in zip archive" ),
+ zip_xpm );
// Unarchive
- item = new wxMenuItem( filesMenu, ID_READ_ZIP_ARCHIVE, _( "&Unarchive" ),
- _( "Unarchive project files from zip file" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( unzip_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, ID_READ_ZIP_ARCHIVE, _( "&Unarchive" ),
+ _( "Unarchive project files from zip file" ),
+ unzip_xpm );
/* Quit on all platforms except WXMAC */
#if !defined( __WXMAC__ )
filesMenu->AppendSeparator();
- item = new wxMenuItem( filesMenu, wxID_EXIT, _( "&Quit" ),
- _( "Quit KiCad" ) );
- item->SetBitmap( exit_xpm );
- filesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( filesMenu, wxID_EXIT, _( "&Quit" ),
+ _( "Quit KiCad" ),
+ exit_xpm );
#endif /* !defined( __WXMAC__ ) */
-
// Browse menu
wxMenu* browseMenu = new wxMenu();
// Text editor
- item = new wxMenuItem( browseMenu, ID_TO_EDITOR, _( "Text E&ditor" ),
- _( "Open preferred text editor" ) );
-#if !defined( __WXMAC__ )
- item->SetBitmap( editor_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- browseMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( browseMenu, ID_TO_EDITOR,
+ _( "Text E&ditor" ),
+ _( "Launch preferred text editor" ),
+ editor_xpm );
/* Browse files */
- item = new wxMenuItem( browseMenu, ID_BROWSE_AN_SELECT_FILE,
- _( "&View File" ),
- _( "View, read or edit file with a text editor" ) );
-#if !defined( __WXMAC__ )
- item->SetBitmap( browse_files_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- browseMenu->Append( item );
-
+ ADD_MENUITEM_WITH_HELP( browseMenu, ID_BROWSE_AN_SELECT_FILE,
+ _( "&View File" ),
+ _( "View, read or edit file with a text editor" ),
+ browse_files_xpm );
// Preferences menu
wxMenu* PreferencesMenu = new wxMenu;
// Text editor
- item = new wxMenuItem( PreferencesMenu, ID_SELECT_PREFERED_EDITOR,
- _( "&Text Editor" ),
- _( "Select your preferred text editor" ) );
-#if !defined( __WXMAC__ )
- item->SetBitmap( editor_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- PreferencesMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( PreferencesMenu, ID_SELECT_PREFERED_EDITOR,
+ _( "&Text Editor" ),
+ _( "Select your preferred text editor" ),
+ editor_xpm );
// PDF Viewer submenu:System browser or user defined checkbox
wxMenu* SubMenuPdfBrowserChoice = new wxMenu;
@@ -230,15 +192,11 @@ void WinEDA_MainFrame::ReCreateMenuBar()
!wxGetApp().m_PdfBrowserIsDefault );
// Append PDF Viewer submenu to preferences
- item = new wxMenuItem( SubMenuPdfBrowserChoice,
- ID_SELECT_PREFERED_PDF_BROWSER_NAME,
- _( "PDF Viewer" ),
- _( "Select your favourite PDF viewer used to browse datasheets" ) );
-#if !defined( __WXMAC__ )
- item->SetBitmap( datasheet_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- SubMenuPdfBrowserChoice->Append( item );
+ ADD_MENUITEM_WITH_HELP( SubMenuPdfBrowserChoice,
+ ID_SELECT_PREFERED_PDF_BROWSER_NAME,
+ _( "PDF Viewer" ),
+ _( "Select your favourite PDF viewer used to browse datasheets" ),
+ datasheet_xpm );
ADD_MENUITEM_WITH_HELP_AND_SUBMENU( PreferencesMenu,
SubMenuPdfBrowserChoice,
@@ -256,21 +214,15 @@ void WinEDA_MainFrame::ReCreateMenuBar()
AddHelpVersionInfoMenuEntry( helpMenu );
/* Contents */
- item = new wxMenuItem( helpMenu, ID_GENERAL_HELP, _( "&Contents" ),
- _( "Open the kicad manual" ) );
-
-#if !defined( __WXMAC__ )
- item->SetBitmap( online_help_xpm );
-#endif /* !defined( __WXMAC__ ) */
-
- helpMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( helpMenu, ID_GENERAL_HELP, _( "&Contents" ),
+ _( "Open the kicad manual" ),
+ online_help_xpm );
// About
helpMenu->AppendSeparator();
- item = new wxMenuItem( helpMenu, ID_KICAD_ABOUT, _( "&About" ),
- _( "About kicad project manager" ) );
- item->SetBitmap( info_xpm );
- helpMenu->Append( item );
+ ADD_MENUITEM_WITH_HELP( helpMenu, ID_KICAD_ABOUT, _( "&About" ),
+ _( "About kicad project manager" ),
+ info_xpm );
// Create the menubar and append all submenus
menuBar->Append( filesMenu, _( "&File" ) );
@@ -302,34 +254,34 @@ void WinEDA_MainFrame::RecreateBaseHToolbar()
/* New */
m_HToolBar->AddTool( ID_NEW_PROJECT, wxEmptyString,
- wxBitmap( new_project_xpm ),
- _( "Start a new project" ) );
+ wxBitmap( new_project_xpm ),
+ _( "Start a new project" ) );
/* Load */
m_HToolBar->AddTool( ID_LOAD_PROJECT, wxEmptyString,
- wxBitmap( open_project_xpm ),
- _( "Load existing project" ) );
+ wxBitmap( open_project_xpm ),
+ _( "Load existing project" ) );
/* Save */
m_HToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString,
- wxBitmap( save_project_xpm ),
- _( "Save current project" ) );
+ wxBitmap( save_project_xpm ),
+ _( "Save current project" ) );
/* Separator */
m_HToolBar->AddSeparator();
/* Archive */
m_HToolBar->AddTool( ID_SAVE_AND_ZIP_FILES, wxEmptyString,
- wxBitmap( zip_xpm ),
- _( "Archive all project files" ) );
+ wxBitmap( zip_xpm ),
+ _( "Archive all project files" ) );
/* Separator */
m_HToolBar->AddSeparator();
/* Refresh project tree */
m_HToolBar->AddTool( ID_PROJECT_TREE_REFRESH, wxEmptyString,
- wxBitmap( reload_xpm ),
- _( "Refresh project tree" ) );
+ wxBitmap( reload_xpm ),
+ _( "Refresh project tree" ) );
/* Create m_HToolBar */
m_HToolBar->Realize();
diff --git a/kicad/preferences.cpp b/kicad/preferences.cpp
index 68f1429dcb..a7600dc5fe 100644
--- a/kicad/preferences.cpp
+++ b/kicad/preferences.cpp
@@ -69,33 +69,6 @@ void WinEDA_MainFrame::OnSelectPreferredPdfBrowser( wxCommandEvent& event )
wxGetApp().WritePdfBrowserInfos();
}
-
-void WinEDA_MainFrame::OnSelectPreferredEditor( wxCommandEvent& event )
-{
- wxFileName fn = wxGetApp().m_EditorName;
- wxString wildcard( wxT( "*" ) );
-
-#ifdef __WINDOWS__
- wildcard += wxT( ".exe" );
-#endif
-
- wildcard = _( "Executable file (" ) + wildcard + wxT( ")|" ) + wildcard;
-
- wxFileDialog dlg( this, _( "Select Prefered Editor" ), fn.GetPath(),
- fn.GetFullName(), wildcard,
- wxFD_OPEN | wxFD_FILE_MUST_EXIST );
-
- if( dlg.ShowModal() == wxID_CANCEL )
- return;
-
- wxASSERT( wxGetApp().m_EDA_CommonConfig );
-
- wxConfig* cfg = wxGetApp().m_EDA_CommonConfig;
- wxGetApp().m_EditorName = dlg.GetPath();
- cfg->Write( wxT( "Editor" ), wxGetApp().m_EditorName );
-}
-
-
void WinEDA_MainFrame::SetLanguage( wxCommandEvent& event )
{
EDA_BASE_FRAME::SetLanguage( event );
diff --git a/packaging/windows/nsis/install.nsi b/packaging/windows/nsis/install.nsi
index a0c0496375..d3eb5a9eae 100644
--- a/packaging/windows/nsis/install.nsi
+++ b/packaging/windows/nsis/install.nsi
@@ -17,7 +17,7 @@
; General Product Description Definitions
!define PRODUCT_NAME "KiCad"
-!define PRODUCT_VERSION "2011.03.11"
+!define PRODUCT_VERSION "2011.03.12"
!define PRODUCT_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/"
!define SOURCEFORGE_WEB_SITE "http://kicad.sourceforge.net/"
!define COMPANY_NAME ""
diff --git a/version.txt b/version.txt
index bfd6f8f64c..b706302c47 100644
--- a/version.txt
+++ b/version.txt
@@ -1,4 +1,4 @@
release version:
-2011 mar 11
+2011 mar 12
files (.zip,.tgz):
-kicad-2011-03-11
+kicad-2011-03-12