/********************************************/ /* 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éé, 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é apres Realize(): SetToolbars(); }