2007-06-05 12:10:51 +00:00
|
|
|
/****************************************************************/
|
|
|
|
/* tool_viewlib.cpp: Build the toolbars for the library browser */
|
|
|
|
/****************************************************************/
|
|
|
|
|
|
|
|
#include "fctsys.h"
|
|
|
|
#include "common.h"
|
2009-09-18 14:56:05 +00:00
|
|
|
#include "bitmaps.h"
|
2010-11-10 15:30:12 +00:00
|
|
|
#include "macros.h"
|
2009-09-22 12:27:57 +00:00
|
|
|
#include "eeschema_id.h"
|
2010-11-10 15:30:12 +00:00
|
|
|
#include "wxstruct.h"
|
2009-09-18 14:56:05 +00:00
|
|
|
|
2007-06-05 12:10:51 +00:00
|
|
|
#include "general.h"
|
|
|
|
#include "protos.h"
|
2009-09-27 14:09:26 +00:00
|
|
|
#include "hotkeys.h"
|
2009-09-18 14:56:05 +00:00
|
|
|
#include "class_library.h"
|
2010-02-16 16:21:52 +00:00
|
|
|
#include "viewlib_frame.h"
|
2010-11-18 21:16:28 +00:00
|
|
|
#include "dialog_helpers.h"
|
2007-06-05 12:10:51 +00:00
|
|
|
|
2009-09-14 13:24:17 +00:00
|
|
|
|
2010-11-20 21:59:00 +00:00
|
|
|
void LIB_VIEW_FRAME::ReCreateHToolbar()
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2010-10-25 15:43:42 +00:00
|
|
|
int ii;
|
|
|
|
wxString msg;
|
2009-09-18 14:56:05 +00:00
|
|
|
CMP_LIBRARY* lib;
|
|
|
|
LIB_COMPONENT* component = NULL;
|
2010-10-25 15:43:42 +00:00
|
|
|
LIB_ALIAS* entry = NULL;
|
2009-09-14 13:24:17 +00:00
|
|
|
bool asdeMorgan = false;
|
2009-01-07 15:59:49 +00:00
|
|
|
|
|
|
|
if( m_HToolBar == NULL )
|
|
|
|
{
|
2010-10-25 15:43:42 +00:00
|
|
|
m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, true );
|
2009-11-02 22:24:55 +00:00
|
|
|
|
2009-01-07 15:59:49 +00:00
|
|
|
// Set up toolbar
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_SELECT_LIB, wxEmptyString,
|
|
|
|
wxBitmap( library_xpm ),
|
|
|
|
_( "Select library to browse" ) );
|
|
|
|
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_SELECT_PART, wxEmptyString,
|
|
|
|
wxBitmap( add_component_xpm ),
|
|
|
|
_( "Select part to browse" ) );
|
|
|
|
|
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_PREVIOUS, wxEmptyString,
|
|
|
|
wxBitmap( lib_previous_xpm ),
|
|
|
|
_( "Display previous part" ) );
|
|
|
|
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_NEXT, wxEmptyString,
|
|
|
|
wxBitmap( lib_next_xpm ),
|
|
|
|
_( "Display next part" ) );
|
|
|
|
|
|
|
|
m_HToolBar->AddSeparator();
|
2009-11-04 20:46:53 +00:00
|
|
|
msg = AddHotkeyName( _( "Zoom in" ), s_Viewlib_Hokeys_Descr,
|
2010-02-16 10:42:57 +00:00
|
|
|
HK_ZOOM_IN, false );
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->AddTool( ID_ZOOM_IN, wxEmptyString,
|
2009-09-27 14:09:26 +00:00
|
|
|
wxBitmap( zoom_in_xpm ), msg );
|
2009-01-07 15:59:49 +00:00
|
|
|
|
2009-11-04 20:46:53 +00:00
|
|
|
msg = AddHotkeyName( _( "Zoom out" ), s_Viewlib_Hokeys_Descr,
|
2010-02-16 10:42:57 +00:00
|
|
|
HK_ZOOM_OUT, false );
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString,
|
2009-09-27 14:09:26 +00:00
|
|
|
wxBitmap( zoom_out_xpm ), msg );
|
2009-01-07 15:59:49 +00:00
|
|
|
|
2009-11-04 20:46:53 +00:00
|
|
|
msg = AddHotkeyName( _( "Redraw view" ), s_Viewlib_Hokeys_Descr,
|
2010-02-16 10:42:57 +00:00
|
|
|
HK_ZOOM_REDRAW, false );
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString,
|
2009-09-27 14:09:26 +00:00
|
|
|
wxBitmap( zoom_redraw_xpm ), msg );
|
2009-01-07 15:59:49 +00:00
|
|
|
|
2009-11-04 20:46:53 +00:00
|
|
|
msg = AddHotkeyName( _( "Zoom auto" ), s_Viewlib_Hokeys_Descr,
|
2010-02-16 10:42:57 +00:00
|
|
|
HK_ZOOM_AUTO, false );
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString,
|
2011-03-20 17:10:38 +00:00
|
|
|
wxBitmap( zoom_fit_in_page_xpm ), msg );
|
2009-01-07 15:59:49 +00:00
|
|
|
|
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
|
|
|
|
wxBitmap( morgan1_xpm ),
|
|
|
|
_( "Show as \"De Morgan\" normal part" ),
|
|
|
|
wxITEM_CHECK );
|
|
|
|
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
|
|
|
|
wxBitmap( morgan2_xpm ),
|
|
|
|
_( "Show as \"De Morgan\" convert part" ),
|
|
|
|
wxITEM_CHECK );
|
|
|
|
|
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
|
|
|
|
SelpartBox =
|
|
|
|
new WinEDAChoiceBox( m_HToolBar, ID_LIBVIEW_SELECT_PART_NUMBER,
|
|
|
|
wxDefaultPosition, wxSize( 150, -1 ) );
|
|
|
|
m_HToolBar->AddControl( SelpartBox );
|
|
|
|
|
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_VIEWDOC, wxEmptyString,
|
|
|
|
wxBitmap( datasheet_xpm ),
|
|
|
|
_( "View component documents" ) );
|
2009-10-18 11:41:05 +00:00
|
|
|
m_HToolBar->EnableTool( ID_LIBVIEW_VIEWDOC, false );
|
2009-01-07 15:59:49 +00:00
|
|
|
|
2009-11-04 20:46:53 +00:00
|
|
|
if( m_Semaphore )
|
2009-01-07 15:59:49 +00:00
|
|
|
{
|
2009-11-04 20:46:53 +00:00
|
|
|
// The library browser is called from a "load component" command
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->AddSeparator();
|
|
|
|
m_HToolBar->AddTool( ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC,
|
2009-11-04 20:46:53 +00:00
|
|
|
wxEmptyString, wxBitmap( export_xpm ),
|
2009-01-07 15:59:49 +00:00
|
|
|
_( "Insert component in schematic" ) );
|
|
|
|
}
|
|
|
|
|
2009-09-14 13:24:17 +00:00
|
|
|
// after adding the buttons to the toolbar, must call Realize() to
|
|
|
|
// reflect the changes
|
2009-01-07 15:59:49 +00:00
|
|
|
m_HToolBar->Realize();
|
|
|
|
}
|
|
|
|
|
2010-10-25 15:43:42 +00:00
|
|
|
if( (m_libraryName != wxEmptyString) && (m_entryName != wxEmptyString) )
|
2009-09-14 13:24:17 +00:00
|
|
|
{
|
2009-10-01 14:17:47 +00:00
|
|
|
lib = CMP_LIBRARY::FindLibrary( m_libraryName );
|
2009-09-14 13:24:17 +00:00
|
|
|
|
|
|
|
if( lib != NULL )
|
|
|
|
{
|
2009-10-01 14:17:47 +00:00
|
|
|
component = lib->FindComponent( m_entryName );
|
2009-09-14 13:24:17 +00:00
|
|
|
|
|
|
|
if( component && component->HasConversion() )
|
|
|
|
asdeMorgan = true;
|
|
|
|
|
2009-10-01 14:17:47 +00:00
|
|
|
entry = lib->FindEntry( m_entryName );
|
2009-09-14 13:24:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-01-07 15:59:49 +00:00
|
|
|
// Must be AFTER Realize():
|
2010-01-21 20:36:48 +00:00
|
|
|
m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, asdeMorgan );
|
|
|
|
m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, asdeMorgan );
|
2009-10-18 11:41:05 +00:00
|
|
|
if( asdeMorgan )
|
|
|
|
{
|
2010-01-21 20:36:48 +00:00
|
|
|
bool normal = m_convert <= 1;
|
|
|
|
m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT,normal );
|
|
|
|
m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, !normal );
|
2009-10-18 11:41:05 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, true );
|
|
|
|
m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, false );
|
2010-01-21 20:36:48 +00:00
|
|
|
}
|
2009-10-18 11:41:05 +00:00
|
|
|
|
2009-01-07 15:59:49 +00:00
|
|
|
|
2009-12-08 13:41:20 +00:00
|
|
|
int parts_count = 1;
|
2009-09-14 13:24:17 +00:00
|
|
|
if( component )
|
2009-12-08 13:41:20 +00:00
|
|
|
parts_count = MAX( component->GetPartCount(), 1 );
|
2009-01-07 15:59:49 +00:00
|
|
|
SelpartBox->Clear();
|
2009-12-08 13:41:20 +00:00
|
|
|
for( ii = 0; ii < parts_count; ii++ )
|
2009-01-07 15:59:49 +00:00
|
|
|
{
|
|
|
|
wxString msg;
|
|
|
|
msg.Printf( _( "Part %c" ), 'A' + ii );
|
|
|
|
SelpartBox->Append( msg );
|
|
|
|
}
|
|
|
|
|
2009-10-18 11:41:05 +00:00
|
|
|
SelpartBox->SetSelection( (m_unit > 0 ) ? m_unit - 1 : 0 );
|
2009-12-08 13:41:20 +00:00
|
|
|
SelpartBox->Enable( parts_count > 1 );
|
2009-09-14 13:24:17 +00:00
|
|
|
|
|
|
|
m_HToolBar->EnableTool( ID_LIBVIEW_VIEWDOC,
|
2009-12-15 21:11:05 +00:00
|
|
|
entry && ( entry->GetDocFileName() != wxEmptyString ) );
|
2010-01-24 13:46:01 +00:00
|
|
|
|
|
|
|
m_HToolBar->Refresh();
|
2007-06-05 12:10:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-11-20 21:59:00 +00:00
|
|
|
void LIB_VIEW_FRAME::ReCreateVToolbar()
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
|
|
|
}
|