439 lines
11 KiB
C++
439 lines
11 KiB
C++
/***************************************************/
|
|
/* tool_gerber.cpp: Build tool bars and main menu */
|
|
/***************************************************/
|
|
|
|
#include "fctsys.h"
|
|
|
|
#include "common.h"
|
|
#include "gerbview.h"
|
|
#include "pcbplot.h"
|
|
|
|
#include "protos.h"
|
|
|
|
#define BITMAP wxBitmap
|
|
|
|
#include "bitmaps.h"
|
|
|
|
#include "id.h"
|
|
|
|
|
|
/***********************************************/
|
|
void WinEDA_GerberFrame::ReCreateMenuBar(void)
|
|
/***********************************************/
|
|
/* Cree ou reinitialise le menu du haut d'ecran
|
|
*/
|
|
{
|
|
int ii;
|
|
wxMenuBar * menuBar = GetMenuBar();
|
|
|
|
if( menuBar == NULL )
|
|
{
|
|
menuBar = new wxMenuBar();
|
|
|
|
m_FilesMenu = new wxMenu;
|
|
m_FilesMenu->Append(ID_MENU_LOAD_FILE,
|
|
_("Clear and Load gerber file"),
|
|
_("Clear all layers and Load new gerber file"),
|
|
FALSE);
|
|
|
|
m_FilesMenu->Append(ID_MENU_APPEND_FILE,
|
|
_("Load gerber file"),
|
|
_("Load new gerber file on currrent layer"),
|
|
FALSE);
|
|
|
|
m_FilesMenu->Append(ID_MENU_INC_LAYER_AND_APPEND_FILE,
|
|
_("Inc Layer and load gerber file"),
|
|
_("Increment layer number, and Load gerber file"),
|
|
FALSE);
|
|
|
|
m_FilesMenu->Append(ID_GERBVIEW_LOAD_DCODE_FILE,
|
|
_("Load DCodes"),
|
|
_("Load D-Codes File"),
|
|
FALSE);
|
|
#if 0
|
|
m_FilesMenu->Append(ID_GERBVIEW_LOAD_DRILL_FILE,
|
|
_("Load Drill"),
|
|
_("Load Drill File (EXCELLON Format)"),
|
|
FALSE);
|
|
#endif
|
|
|
|
m_FilesMenu->Append(ID_MENU_NEW_BOARD,
|
|
_("&New"),
|
|
_("Clear all layers"),
|
|
FALSE);
|
|
|
|
m_FilesMenu->AppendSeparator();
|
|
m_FilesMenu->Append(ID_GERBVIEW_EXPORT_TO_PCBNEW,
|
|
_("&Export to Pcbnew"),
|
|
_("Export data in pcbnew format"),
|
|
FALSE);
|
|
|
|
#if 0
|
|
m_FilesMenu->AppendSeparator();
|
|
m_FilesMenu->Append(ID_MENU_SAVE_BOARD,
|
|
_("&Save layers"),
|
|
_("Save current layers (GERBER format)"),
|
|
FALSE);
|
|
|
|
m_FilesMenu->Append(ID_MENU_SAVE_BOARD_AS,
|
|
_("Save layers as.."),
|
|
_("Save current layers as.."),
|
|
FALSE);
|
|
#endif
|
|
|
|
m_FilesMenu->AppendSeparator();
|
|
|
|
m_FilesMenu->Append(ID_GEN_PRINT, _("P&rint"), _("Print on current printer"));
|
|
m_FilesMenu->Append(ID_GEN_PLOT,
|
|
_("Plot"), _("Plotting in various formats") );
|
|
|
|
m_FilesMenu->AppendSeparator();
|
|
m_FilesMenu->Append(ID_EXIT,_("E&xit"), _("Quit Gerbview") );
|
|
|
|
// Creation des selections des anciens fichiers
|
|
m_FilesMenu->AppendSeparator();
|
|
for ( int ii = 0; ii < 10; ii++ )
|
|
{
|
|
if ( GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) );
|
|
}
|
|
|
|
// Configuration:
|
|
wxMenu * configmenu = new wxMenu;
|
|
configmenu->Append(ID_CONFIG_REQ, _("&Files and Dir"),
|
|
_("Setting Files extension, Directories and others..."));
|
|
configmenu->Append(ID_COLORS_SETUP, _("&Colors"),
|
|
_("Select Colors and Display for layers"));
|
|
configmenu->Append(ID_OPTIONS_SETUP, _("&Options"),
|
|
_(" Select general options"));
|
|
|
|
configmenu->Append(ID_PCB_LOOK_SETUP, _("Display"),
|
|
_(" Select how items are displayed"));
|
|
|
|
// Font selection and setup
|
|
AddFontSelectionMenu(configmenu);
|
|
|
|
m_Parent->SetLanguageList(configmenu);
|
|
|
|
configmenu->AppendSeparator();
|
|
configmenu->Append(ID_CONFIG_SAVE, _("&Save Gerbview Setup"),
|
|
_("Save options in current directory"));
|
|
|
|
// Menu drill ( generation fichiers percage)
|
|
/* wxMenu *drill_menu = new wxMenu;
|
|
postprocess_menu->Append(ID_PCB_GEN_DRILL_FILE, "Create &Drill file",
|
|
"Gen Drill (EXCELLON] file and/or Drill sheet");
|
|
*/
|
|
// Menu d'outils divers
|
|
wxMenu *miscellaneous_menu = new wxMenu;
|
|
miscellaneous_menu->Append(ID_GERBVIEW_SHOW_LIST_DCODES, _("&List DCodes"),
|
|
_("List and Edit DCodes") );
|
|
miscellaneous_menu->Append(ID_GERBVIEW_SHOW_SOURCE,_("&Show source"),
|
|
_("Show source file for the current layer") );
|
|
miscellaneous_menu->AppendSeparator();
|
|
miscellaneous_menu->Append(ID_PCB_GLOBAL_DELETE, _("&Delete Layer"),
|
|
_("Delete current layer") );
|
|
|
|
// Menu Help:
|
|
wxMenu *helpMenu = new wxMenu;
|
|
helpMenu->Append(ID_GENERAL_HELP, _("&Contents"), _("Open the gerbview manual") );
|
|
helpMenu->Append(ID_KICAD_ABOUT, _("&About"), _("About this application") );
|
|
|
|
menuBar->Append(m_FilesMenu, _("&Files"));
|
|
menuBar->Append(configmenu, _("&Preferences"));
|
|
menuBar->Append(miscellaneous_menu, _("&Miscellaneous"));
|
|
// menuBar->Append(drill_menu, _("&Drill"));
|
|
menuBar->Append(helpMenu, _("&Help"));
|
|
|
|
// Associate the menu bar with the frame
|
|
SetMenuBar(menuBar);
|
|
}
|
|
|
|
else // simple mise a jour de la liste des fichiers anciens
|
|
{
|
|
wxMenuItem * item;
|
|
int max_file = m_Parent->m_LastProjectMaxCount;
|
|
for ( ii = max_file-1; ii >=0 ; ii-- )
|
|
{
|
|
if( m_FilesMenu->FindItem(ID_LOAD_FILE_1 + ii) )
|
|
{
|
|
item = m_FilesMenu->Remove(ID_LOAD_FILE_1 + ii);
|
|
if ( item ) delete item;
|
|
}
|
|
}
|
|
for ( ii = 0; ii < max_file; ii++ )
|
|
{
|
|
if ( GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/***********************************************/
|
|
void WinEDA_GerberFrame::ReCreateHToolbar(void)
|
|
/***********************************************/
|
|
{
|
|
int layer = 0;
|
|
GERBER_Descr * gerber_layer = NULL;
|
|
int ii;
|
|
|
|
// delete and recreate the toolbar
|
|
if ( m_HToolBar != NULL ) return;
|
|
|
|
if ( GetScreen() )
|
|
{
|
|
layer = GetScreen()->m_Active_Layer;
|
|
gerber_layer = g_GERBER_Descr_List[layer];
|
|
}
|
|
|
|
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
|
|
SetToolBar(m_HToolBar);
|
|
|
|
// Set up toolbar
|
|
m_HToolBar->AddTool(ID_NEW_BOARD, BITMAP(new_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("New World") );
|
|
|
|
m_HToolBar->AddTool(ID_LOAD_FILE, BITMAP(open_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Open existing Layer"));
|
|
|
|
#if 0
|
|
m_HToolBar->AddTool(ID_SAVE_PROJECT, BITMAP(save_button),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Save World"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_SHEET_SET, BITMAP(sheetset_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("page settings (size, texts)"));
|
|
|
|
#endif
|
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
#if 0
|
|
m_HToolBar->AddTool(wxID_CUT, BITMAP(cut_button),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Cut selected item"));
|
|
|
|
m_HToolBar->AddTool(wxID_COPY, BITMAP(copy_button),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Copy selected item"));
|
|
|
|
m_HToolBar->AddTool(wxID_PASTE, BITMAP(paste_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Paste"));
|
|
#endif
|
|
|
|
m_HToolBar->AddTool(ID_UNDO_BUTT, BITMAP(undelete_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Undelete"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_GEN_PRINT, BITMAP(print_button),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Print World"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, BITMAP(zoom_in_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("zoom + (F1)"));
|
|
|
|
m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, BITMAP(zoom_out_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("zoom - (F2)"));
|
|
|
|
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, BITMAP(repaint_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("redraw (F3)"));
|
|
|
|
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, BITMAP(zoom_optimal_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("auto zoom"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_FIND_ITEMS, BITMAP(find_xpm),
|
|
wxNullBitmap,
|
|
FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Find D Codes"));
|
|
|
|
wxArrayString choices;
|
|
m_HToolBar->AddSeparator();
|
|
for ( ii = 0; ii < 32 ; ii ++ )
|
|
{
|
|
wxString msg;
|
|
msg = _("Layer "); msg << ii+1;
|
|
choices.Add(msg);
|
|
}
|
|
m_SelLayerBox = new WinEDAChoiceBox(m_HToolBar, ID_TOOLBARH_PCB_SELECT_LAYER,
|
|
wxDefaultPosition, wxSize(150, -1), choices);
|
|
m_SelLayerBox->SetSelection( GetScreen()->m_Active_Layer );
|
|
m_HToolBar->AddControl(m_SelLayerBox);
|
|
|
|
m_HToolBar->AddSeparator();
|
|
choices.Clear();
|
|
choices.Add( _("No tool"));
|
|
for ( ii = 0; ii < MAX_TOOLS ; ii ++ )
|
|
{
|
|
wxString msg;
|
|
msg = _("Tool "); msg << ii + FIRST_DCODE;
|
|
choices.Add(msg);
|
|
}
|
|
m_SelLayerTool = new WinEDAChoiceBox(m_HToolBar, ID_TOOLBARH_GERBER_SELECT_TOOL,
|
|
wxDefaultPosition, wxSize(150, -1), choices);
|
|
m_HToolBar->AddControl(m_SelLayerTool);
|
|
|
|
|
|
// after adding the buttons to the toolbar, must call Realize() to reflect
|
|
// the changes
|
|
m_HToolBar->Realize();
|
|
SetToolbars();
|
|
}
|
|
|
|
|
|
/**********************************************/
|
|
void WinEDA_GerberFrame::ReCreateVToolbar(void)
|
|
/**********************************************/
|
|
{
|
|
if( m_VToolBar ) return;
|
|
|
|
m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
|
|
|
|
// Set up toolbar
|
|
m_VToolBar->AddTool(ID_NO_SELECT_BUTT,
|
|
BITMAP(cursor_xpm),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL );
|
|
m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT,TRUE);
|
|
|
|
#if 0
|
|
m_VToolBar->AddSeparator();
|
|
m_VToolBar->AddTool(ID_COMPONENT_BUTT,
|
|
BITMAP(component_button),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Add Flashes"));
|
|
|
|
m_VToolBar->AddTool(ID_BUS_BUTT,
|
|
BITMAP(bus_button),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Add Lines"));
|
|
|
|
m_VToolBar->AddTool(ID_JUNCTION_BUTT,
|
|
BITMAP(junction_xpm),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Add Mires"));
|
|
|
|
m_VToolBar->AddSeparator();
|
|
m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT,
|
|
BITMAP(tool_text_xpm),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Add Text"));
|
|
|
|
#endif
|
|
m_VToolBar->AddSeparator();
|
|
m_VToolBar->AddTool(ID_PCB_DELETE_ITEM_BUTT,
|
|
BITMAP(delete_body_xpm),
|
|
wxNullBitmap, TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Delete items"));
|
|
|
|
m_VToolBar->Realize();
|
|
SetToolbars();
|
|
}
|
|
|
|
|
|
/************************************************/
|
|
void WinEDA_GerberFrame::ReCreateOptToolbar(void)
|
|
/************************************************/
|
|
{
|
|
if ( m_OptionsToolBar ) return;
|
|
|
|
// creation du tool bar options
|
|
m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE);
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, BITMAP(grid_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Display Grid OFF"));
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, BITMAP(polar_coord_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Display Polar Coord ON"));
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
|
|
BITMAP(unit_inch_xpm),
|
|
_("Units = Inch"), wxITEM_CHECK );
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
|
|
BITMAP(unit_mm_xpm),
|
|
_("Units = mm"), wxITEM_CHECK );
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, BITMAP(cursor_shape_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Change Cursor Shape"));
|
|
|
|
m_OptionsToolBar->AddSeparator();
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH,
|
|
BITMAP(pad_sketch_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Show Spots Sketch"));
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_TRACKS_SKETCH,
|
|
BITMAP(showtrack_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Show Lines Sketch"));
|
|
|
|
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_DCODES,
|
|
BITMAP(show_dcodenumber_xpm),
|
|
wxNullBitmap,
|
|
TRUE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Show dcode number"));
|
|
|
|
m_OptionsToolBar->Realize();
|
|
|
|
SetToolbars();
|
|
}
|
|
|
|
|
|
|
|
|