/*****************************************************/ /* toolsch.cpp; vreate toolbars for schematic frame */ /*****************************************************/ #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 #include "bitmaps.h" /* general bitmaps */ /* Specific bitmaps */ #include "cvpcb.xpm" #include "Hierarchy_Nav.xpm" #include "Hierarchy_cursor.xpm" #include "Add_Power.xpm" #include "Lines90.xpm" #include "Hidden_Pin.xpm" #include "Add_Bus2Bus.xpm" #include "Add_Line2Bus.xpm" #include "add_bus.xpm" #include "library_browse.xpm" #include "libedit.xpm" #include "add_hierar_pin.xpm" #include "add_hierar_symbol.xpm" #include "Import_GLabel.xpm" #include "id.h" /**************************************************************/ void WinEDA_SchematicFrame::ReCreateHToolbar(void) /**************************************************************/ /* Create Horizontal (main) Toolbar */ { if ( m_HToolBar != NULL ) return; m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); SetToolBar(m_HToolBar); // Set up toolbar m_HToolBar->AddTool(ID_NEW_PROJECT, wxEmptyString, BITMAP(new_xpm), _("New schematic project")); m_HToolBar->AddTool(ID_LOAD_PROJECT, wxEmptyString, BITMAP(open_xpm), _("Open schematic project")); m_HToolBar->AddTool(ID_SAVE_PROJECT, wxEmptyString, BITMAP(save_project_xpm), _("Save schematic project")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_SHEET_SET, wxEmptyString, BITMAP(sheetset_xpm), _("page settings (size, texts)") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_TO_LIBRARY, wxEmptyString, BITMAP(libedit_xpm), _("go to library editor") ); m_HToolBar->AddTool(ID_TO_LIBVIEW, wxEmptyString, BITMAP(library_browse_xpm), _("go to library browse") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_HIERARCHY, wxEmptyString, BITMAP(hierarchy_nav_xpm), _("Schematic Hierarchy Navigator") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(wxID_CUT, wxEmptyString, BITMAP(cut_button), _("Cut selected item") ); m_HToolBar->AddTool(wxID_COPY, wxEmptyString, BITMAP(copy_button), _("Copy selected item") ); m_HToolBar->AddTool(wxID_PASTE, wxEmptyString, BITMAP(paste_xpm), _("Paste") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_SCHEMATIC_UNDO, wxEmptyString, BITMAP(undo_xpm), _("Undo last edition")); m_HToolBar->AddTool(ID_SCHEMATIC_REDO, wxEmptyString, BITMAP(redo_xpm), _("Redo the last undo command")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button), _("Print schematic") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_TO_CVPCB, wxEmptyString, BITMAP(cvpcb_xpm), _("Run Cvpcb") ); m_HToolBar->AddTool(ID_TO_PCB, wxEmptyString, BITMAP(pcbnew_xpm), _("Run Pcbnew") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm), _("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_FIND_ITEMS, wxEmptyString, BITMAP(find_xpm), _("Find components and texts") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GET_NETLIST, wxEmptyString, BITMAP(netlist_xpm), _("Netlist generation") ); m_HToolBar->AddTool(ID_GET_ANNOTATE, wxEmptyString, BITMAP(annotate_xpm), _("Schematic Annotation") ); m_HToolBar->AddTool(ID_GET_ERC, wxEmptyString, BITMAP(erc_xpm), _("Schematic Electric Rules Check") ); m_HToolBar->AddTool(ID_GET_TOOLS, wxEmptyString, BITMAP(tools_xpm), _("Bill of material and/or Crossreferences") ); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); SetToolbars(); } /*************************************************/ void WinEDA_SchematicFrame::ReCreateVToolbar(void) /*************************************************/ /* Create Vertical Right Toolbar */ { 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, wxEmptyString, BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK ); m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE); m_VToolBar->AddTool(ID_HIERARCHY_PUSH_POP_BUTT, wxEmptyString, BITMAP(hierarchy_cursor_xpm), _("Hierarchy Push/Pop"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_COMPONENT_BUTT, wxEmptyString, BITMAP(add_component_xpm), _("Add components"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_PLACE_POWER_BUTT, wxEmptyString, BITMAP(add_power_xpm), _("Add powers"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_WIRE_BUTT, wxEmptyString, BITMAP(add_line_xpm), _("Add wires"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_BUS_BUTT, wxEmptyString, BITMAP(add_bus_xpm), _("Add bus"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_WIRETOBUS_ENTRY_BUTT, wxEmptyString, BITMAP(add_line2bus_xpm), _("Add wire to bus entry"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_BUSTOBUS_ENTRY_BUTT, wxEmptyString, BITMAP(add_bus2bus_xpm), _("Add bus to bus entry"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_NOCONN_BUTT, wxEmptyString, BITMAP(noconn_button), _("Add no connect flag"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_LABEL_BUTT, wxEmptyString, BITMAP(add_line_label_xpm), _("Add wire or bus label"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_GLABEL_BUTT, wxEmptyString, BITMAP(add_glabel_xpm), _("Add global label"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_JUNCTION_BUTT, wxEmptyString, BITMAP(add_junction_xpm), _("Add junction"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_SHEET_SYMBOL_BUTT, wxEmptyString, BITMAP(add_hierar_symbol_xpm), _("Add hierarchical symbol (sheet)") , wxITEM_CHECK); m_VToolBar->AddTool(ID_IMPORT_GLABEL_BUTT, wxEmptyString, BITMAP(import_glabel_xpm), _("import glabel from sheet & create pinsheet"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_SHEET_LABEL_BUTT, wxEmptyString, BITMAP(add_hierar_pin_xpm), _("Add hierachical pin to sheet"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString, BITMAP(add_dashed_line_xpm), _("Add graphic line or polygon") , wxITEM_CHECK); m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString, BITMAP(add_text_xpm), _("Add graphic text (comment)"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_SCHEMATIC_DELETE_ITEM_BUTT, wxEmptyString, BITMAP(delete_body_xpm), _("Delete items"), wxITEM_CHECK ); m_VToolBar->Realize(); SetToolbars(); } /****************************************************************/ void WinEDA_SchematicFrame::ReCreateOptToolbar(void) /****************************************************************/ /* Create Vertical Left Toolbar (Option Toolbar) */ { 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, wxEmptyString, BITMAP(grid_xpm), _("Display Grid OFF"), wxITEM_CHECK ); 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, wxEmptyString, BITMAP(cursor_shape_xpm), _("Change Cursor Shape"), wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_HIDDEN_PINS, wxEmptyString, BITMAP(hidden_pin_xpm), _("Show Hidden Pins"), wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_BUS_WIRES_ORIENT, wxEmptyString, BITMAP(lines90_xpm), _("HV orientation for Wires and Bus"), wxITEM_CHECK ); m_OptionsToolBar->Realize(); SetToolbars(); } /*******************************************************************************************/ void WinEDA_SchematicFrame::OnSelectOptionToolbar(wxCommandEvent& event) /*******************************************************************************************/ { if ( DrawPanel == NULL ) return; int id = event.GetId(); wxClientDC dc(DrawPanel); DrawPanel->PrepareGraphicContext(&dc); switch ( id ) { case ID_TB_OPTIONS_SHOW_GRID: g_ShowGrid = m_Draw_Grid = m_OptionsToolBar->GetToolState(id); ReDrawPanel(); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: g_UnitMetric = MILLIMETRE; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_UNIT_INCH: g_UnitMetric = INCHES; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_CURSOR: DrawPanel->CursorOff(&dc); g_CursorShape = m_OptionsToolBar->GetToolState(id); DrawPanel->CursorOn(&dc); break; case ID_TB_OPTIONS_HIDDEN_PINS: g_ShowAllPins = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_BUS_WIRES_ORIENT: g_HVLines = m_OptionsToolBar->GetToolState(id); break; default: DisplayError(this, wxT("OnSelectOptionToolbar() error") ); break; } SetToolbars(); }