kicad/eeschema/tool_lib.cpp

277 lines
8.1 KiB
C++
Raw Blame History

/********************************************/
/* tool_lib.cpp: construction des toolbars */
/********************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
#define BITMAP wxBitmap
#ifdef __UNIX__
#define LISTBOX_WIDTH 140
#else
#define LISTBOX_WIDTH 120
#endif
// ----------------------------------------------------------------------------
// resources
// ----------------------------------------------------------------------------
// USE_XPM_BITMAPS
#include "bitmaps.h"
#include "part_properties.xpm"
#include "pin2pin.xpm"
#include "new_component.xpm"
#include "id.h"
/****************************************************/
void WinEDA_LibeditFrame::ReCreateVToolbar(void)
/****************************************************/
{
if( m_VToolBar == NULL )
{
m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
// Set up toolbar
m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString,
BITMAP(cursor_xpm),
_("deselect current tool"), wxITEM_CHECK );
m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE);
m_VToolBar->AddSeparator();
m_VToolBar->AddTool(ID_LIBEDIT_PIN_BUTT, wxEmptyString,
BITMAP(pin_xpm),
_("Add Pins"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_BODY_TEXT_BUTT, wxEmptyString,
BITMAP(add_text_xpm),
_("Add graphic text"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_BODY_RECT_BUTT, wxEmptyString,
BITMAP(add_rectangle_xpm),
_("Add rectangles"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_BODY_CIRCLE_BUTT, wxEmptyString,
BITMAP(add_circle_xpm),
_("Add circles"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_BODY_ARC_BUTT, wxEmptyString,
BITMAP(add_arc_xpm),
_("Add arcs"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_BODY_LINE_BUTT, wxEmptyString,
BITMAP(add_polygon_xpm),
_( "Add lines and polygons"), wxITEM_CHECK );
m_VToolBar->AddSeparator();
m_VToolBar->AddTool(ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxEmptyString,
BITMAP(anchor_xpm),
_("Move part anchor"), wxITEM_CHECK );
m_VToolBar->AddSeparator();
m_VToolBar->AddTool(ID_LIBEDIT_IMPORT_BODY_BUTT, wxEmptyString,
BITMAP(import_xpm),
_("Import existing drawings"), wxITEM_CHECK );
m_VToolBar->AddTool(ID_LIBEDIT_EXPORT_BODY_BUTT, wxEmptyString,
BITMAP(export_xpm),
_("Export current drawing"), wxITEM_CHECK );
m_VToolBar->AddSeparator();
m_VToolBar->AddTool(ID_LIBEDIT_DELETE_ITEM_BUTT, wxEmptyString,
BITMAP(delete_body_xpm),
_("Delete items"), wxITEM_CHECK );
m_VToolBar->Realize();
}
SetToolbars();
}
/*************************************************/
void WinEDA_LibeditFrame::ReCreateHToolbar(void)
/*************************************************/
{
int ii;
// Create the toolbar if not exists
if ( m_HToolBar == NULL )
{
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
SetToolBar(m_HToolBar);
// Set up toolbar
m_HToolBar->AddTool(ID_LIBEDIT_SAVE_CURRENT_LIB, wxEmptyString, BITMAP(save_library_xpm),
_("Save current loaded library on disk (file update)") );
m_HToolBar->AddTool(ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString, BITMAP(library_xpm),
_("Select working library") );
m_HToolBar->AddTool(ID_LIBEDIT_DELETE_PART, wxEmptyString, BITMAP(delete_xpm),
_("Delete part in current library") );
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_NEW_PART, wxEmptyString, BITMAP(new_component_xpm),
_("New part") );
m_HToolBar->AddTool(ID_LIBEDIT_SELECT_PART, BITMAP(add_component_xpm),
_("Select part to edit") );
m_HToolBar->AddTool(ID_LIBEDIT_SAVE_CURRENT_PART, wxEmptyString,
BITMAP(save_part_in_mem_xpm),
_("Save current part into current loaded library (in memory)") );
m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString, BITMAP(import_xpm),
_("import part"));
m_HToolBar->AddTool(ID_LIBEDIT_EXPORT_PART, wxEmptyString, BITMAP(export_xpm),
_("export part"));
m_HToolBar->AddTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,
wxEmptyString, BITMAP(new_library_xpm),
_("Create a new library an save current part into"));
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_UNDO, wxEmptyString, BITMAP(undo_xpm),
_("Undo last edition"));
m_HToolBar->AddTool(ID_LIBEDIT_REDO, wxEmptyString, BITMAP(redo_xpm),
_("Redo the last undo command"));
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_GET_FRAME_EDIT_PART, BITMAP(part_properties_xpm),
wxNullBitmap,
FALSE,
-1, -1, (wxObject *) NULL,
_("Edit Part Properties"));
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_CHECK_PART, BITMAP(erc_xpm),
wxNullBitmap,
FALSE,
-1, -1, (wxObject *) NULL,
_("Test duplicate pins"));
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, wxEmptyString,
BITMAP(zoom_out_xpm),
_("zoom - (F2)"));
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString,
BITMAP(repaint_xpm),
_("redraw (F3)"));
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString,
BITMAP(zoom_optimal_xpm),
_("auto zoom") );
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
BITMAP(morgan1_xpm),
_("show as \"De Morgan\" normal part"), wxITEM_CHECK);
m_HToolBar->ToggleTool(ID_DE_MORGAN_NORMAL_BUTT,
(CurrentConvert <= 1) ? TRUE : FALSE);
m_HToolBar->AddTool(ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
BITMAP(morgan2_xpm),
_("show as \"De Morgan\" convert part"), wxITEM_CHECK);
m_HToolBar->ToggleTool(ID_DE_MORGAN_CONVERT_BUTT,
(CurrentConvert >= 2) ? TRUE : FALSE );
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_VIEW_DOC, BITMAP(datasheet_xpm),
wxNullBitmap,
FALSE,
-1, -1, (wxObject *) NULL,
_("Documents"));
m_HToolBar->EnableTool(ID_LIBEDIT_VIEW_DOC, FALSE);
m_HToolBar->AddSeparator();
m_SelpartBox = new WinEDAChoiceBox(m_HToolBar, ID_LIBEDIT_SELECT_PART_NUMBER,
wxDefaultPosition, wxSize(LISTBOX_WIDTH, -1));
m_HToolBar->AddControl(m_SelpartBox);
m_SelAliasBox = new WinEDAChoiceBox(m_HToolBar, ID_LIBEDIT_SELECT_ALIAS,
wxDefaultPosition, wxSize(LISTBOX_WIDTH, -1));
m_HToolBar->AddControl(m_SelAliasBox);
m_HToolBar->AddSeparator();
m_HToolBar->AddTool(ID_LIBEDIT_EDIT_PIN_BY_PIN, BITMAP(pin2pin_xpm),
wxNullBitmap,
TRUE,
-1, -1, (wxObject *) NULL,
_("Edit pins part per part (Carefully use!)"));
m_HToolBar->ToggleTool(ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn);
// after adding the buttons to the toolbar, must call Realize() to reflect
// the changes
m_HToolBar->Realize();
}
else /* Toolbar deja cr<63><72>, mise a jour des affichages */
{
m_SelAliasBox->Clear();
m_SelpartBox->Clear();
}
/* Update the part selection box */
int jj = 1;
if( CurrentLibEntry ) jj = CurrentLibEntry->m_UnitCount;
if ( jj > 1 )
for ( ii = 0; ii < jj ; ii ++ )
{
wxString msg;
msg.Printf(_("Part %c"), 'A' + ii);
m_SelpartBox->Append(msg);
}
else m_SelpartBox->Append( wxEmptyString );
m_SelpartBox->SetSelection( ( CurrentUnit > 0 ) ? CurrentUnit-1 : 0);
if( CurrentLibEntry)
{
if ( CurrentLibEntry->m_UnitCount > 1 ) m_SelpartBox->Enable(TRUE);
else m_SelpartBox->Enable(FALSE);
m_SelAliasBox->Append(CurrentLibEntry->m_Name.m_Text);
m_SelAliasBox->SetSelection( 0 );
int count = CurrentLibEntry->m_AliasList.GetCount();
if ( count > 0 ) /* Update the part selection box */
{
m_SelAliasBox->Enable(TRUE);
for ( ii = 0, jj = 1; ii < count; ii += ALIAS_NEXT, jj++ )
{
m_SelAliasBox->Append(CurrentLibEntry->m_AliasList[ii]);
if ( CurrentAliasName == CurrentLibEntry->m_AliasList[ii])
m_SelAliasBox->SetSelection( jj );
}
}
else m_SelAliasBox->Enable(FALSE);
}
else
{
m_SelAliasBox->Enable(FALSE);
m_SelpartBox->Enable(FALSE);
}
// Doit etre plac<61> apres Realize():
SetToolbars();
}