/////////////////////////////////////////////////////////////////////////////
// Name:        dialog_edit_component_in_schematic.cpp
// Purpose:     
// Author:      jean-pierre Charras
// Modified by: 
// Created:     03/03/2006 15:02:54
// RCS-ID:      
// Copyright:   License GNU
// Licence:     
/////////////////////////////////////////////////////////////////////////////

// Generated by DialogBlocks (unregistered), 03/03/2006 15:02:54


////@begin includes
////@end includes

#include "dialog_edit_component_in_schematic.h"

////@begin XPM images
////@end XPM images

/*!
 * WinEDA_ComponentPropertiesFrame type definition
 */

IMPLEMENT_DYNAMIC_CLASS( WinEDA_ComponentPropertiesFrame, wxDialog )

/*!
 * WinEDA_ComponentPropertiesFrame event table definition
 */

BEGIN_EVENT_TABLE( WinEDA_ComponentPropertiesFrame, wxDialog )

////@begin WinEDA_ComponentPropertiesFrame event table entries
    EVT_BUTTON( wxID_CLOSE, WinEDA_ComponentPropertiesFrame::OnCloseClick )

    EVT_BUTTON( ID_RESTORE_CMP_DEFAULTS, WinEDA_ComponentPropertiesFrame::OnRestoreCmpDefaultsClick )

    EVT_BUTTON( wxID_OK, WinEDA_ComponentPropertiesFrame::OnOkClick )

////@end WinEDA_ComponentPropertiesFrame event table entries

	EVT_RADIOBOX(ID_ON_SELECT_FIELD, WinEDA_ComponentPropertiesFrame::SelectNewField)

END_EVENT_TABLE()

/*!
 * WinEDA_ComponentPropertiesFrame constructors
 */

WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame( )
{
}

WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame( WinEDA_SchematicFrame* parent,
		EDA_SchComponentStruct * cmp,
		wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
	m_Parent = parent;
	m_Cmp = cmp;
	m_LibEntry = FindLibPart(m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT);

	InitBuffers();

    Create(parent, id, caption, pos, size, style);

	if ( m_LibEntry == NULL )
	{
		SetTitle(_("Component properties (Not found in lib)"));
	}
}

/*!
 * WinEDA_ComponentPropertiesFrame creator
 */

bool WinEDA_ComponentPropertiesFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
	m_FieldNameCtrl = NULL;
////@begin WinEDA_ComponentPropertiesFrame member initialisation
    m_GeneralBoxSizer = NULL;
    m_NoteBook = NULL;
    m_PanelBasic = NULL;
    m_SelectUnit = NULL;
    m_OrientUnit = NULL;
    m_MirrorUnit = NULL;
    m_MsgPartLocked = NULL;
    m_ConvertButt = NULL;
    m_RefInLib = NULL;
    m_PanelField = NULL;
    m_ShowFieldTextCtrl = NULL;
    m_VorientFieldText = NULL;
    m_FieldDatasBoxSizer = NULL;
    m_FieldSelectionBoxSizer = NULL;
////@end WinEDA_ComponentPropertiesFrame member initialisation

////@begin WinEDA_ComponentPropertiesFrame creation
    SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
    wxDialog::Create( parent, id, caption, pos, size, style );

    CreateControls();
    GetSizer()->Fit(this);
    GetSizer()->SetSizeHints(this);
    Centre();
////@end WinEDA_ComponentPropertiesFrame creation
    return true;
}

/*!
 * Control creation for WinEDA_ComponentPropertiesFrame
 */

void WinEDA_ComponentPropertiesFrame::CreateControls()
{    
	SetFont(*g_DialogFont);
	
////@begin WinEDA_ComponentPropertiesFrame content construction
    // Generated by DialogBlocks, 03/03/2006 16:47:20 (unregistered)

    WinEDA_ComponentPropertiesFrame* itemDialog1 = this;

    m_GeneralBoxSizer = new wxBoxSizer(wxVERTICAL);
    itemDialog1->SetSizer(m_GeneralBoxSizer);

    m_NoteBook = new wxNotebook( itemDialog1, ID_SCHEDIT_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxNB_TOP );

    m_PanelBasic = new wxPanel( m_NoteBook, ID_PANEL_BASIC, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
    wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
    m_PanelBasic->SetSizer(itemBoxSizer5);

    wxString m_SelectUnitStrings[] = {
        _("Unit 1"),
        _("Unit 2"),
        _("Unit 3"),
        _("Unit 4"),
        _("Unit 5"),
        _("Unit 6"),
        _("Unit 7"),
        _("Unit 8"),
        _("Unit 9"),
        _("Unit 10"),
        _("Unit 11"),
        _("Unit 12"),
        _("Unit 13"),
        _("Unit 14"),
        _("Unit 15"),
        _("Unit 16"),
		_("Unit 17"),
        _("Unit 18"),
        _("Unit 19"),
        _("Unit 20"),
        _("Unit 21"),
        _("Unit 22"),
        _("Unit 23"),
        _("Unit 24"),
        _("Unit 25"),
        _("Unit 26")
   };
    m_SelectUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_UNIT, _("Unit:"), 
			wxDefaultPosition, wxDefaultSize, 26, m_SelectUnitStrings, 9, wxRA_SPECIFY_ROWS );
    itemBoxSizer5->Add(m_SelectUnit, 0, wxGROW|wxALL, 5);

    wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL);
    itemBoxSizer5->Add(itemBoxSizer7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
    wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
    itemBoxSizer7->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
    wxString m_OrientUnitStrings[] = {
        _("0"),
        _("+90"),
        _("180"),
        _("-90")
    };
    m_OrientUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_ORIENT, _("Orient:"), wxDefaultPosition, wxDefaultSize, 4, m_OrientUnitStrings, 1, wxRA_SPECIFY_COLS );
    itemBoxSizer8->Add(m_OrientUnit, 0, wxGROW|wxLEFT|wxRIGHT, 5);

    wxString m_MirrorUnitStrings[] = {
        _("Normal"),
        _("Mirror --"),
        _("Mirror !")
    };
    m_MirrorUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_MIRROR, _("Mirror:"), wxDefaultPosition, wxDefaultSize, 3, m_MirrorUnitStrings, 1, wxRA_SPECIFY_COLS );
    itemBoxSizer8->Add(m_MirrorUnit, 0, wxGROW|wxLEFT|wxRIGHT, 5);

    m_MsgPartLocked = new wxStaticText( m_PanelBasic, wxID_STATIC, _("Parts are locked"), wxDefaultPosition, wxDefaultSize, 0 );
    itemBoxSizer7->Add(m_MsgPartLocked, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);

    m_ConvertButt = new wxCheckBox( m_PanelBasic, ID_CHECKBOX, _("Convert"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
    m_ConvertButt->SetValue(false);
    itemBoxSizer7->Add(m_ConvertButt, 0, wxALIGN_LEFT|wxALL, 5);

    wxStaticText* itemStaticText13 = new wxStaticText( m_PanelBasic, wxID_STATIC, _("Chip Name:"), wxDefaultPosition, wxDefaultSize, 0 );
    itemStaticText13->SetForegroundColour(wxColour(202, 0, 0));
    itemBoxSizer7->Add(itemStaticText13, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);

    m_RefInLib = new wxTextCtrl( m_PanelBasic, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
    itemBoxSizer7->Add(m_RefInLib, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);

    m_NoteBook->AddPage(m_PanelBasic, _("Options"));

    m_PanelField = new wxPanel( m_NoteBook, ID_PANEL_FIELD, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
    wxBoxSizer* itemBoxSizer16 = new wxBoxSizer(wxHORIZONTAL);
    m_PanelField->SetSizer(itemBoxSizer16);

    wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
    itemBoxSizer16->Add(itemBoxSizer17, 0, wxALIGN_TOP|wxALL, 5);
    wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxHORIZONTAL);
    itemBoxSizer17->Add(itemBoxSizer18, 0, wxGROW|wxALL, 5);
    m_ShowFieldTextCtrl = new wxCheckBox( m_PanelField, ID_CHECKBOX_SHOW_FILED, _("Show Text"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
    m_ShowFieldTextCtrl->SetValue(false);
    itemBoxSizer18->Add(m_ShowFieldTextCtrl, 0, wxGROW|wxALL, 5);

    m_VorientFieldText = new wxCheckBox( m_PanelField, ID_CHECKBOX_FILED_ORIENT, _("Vertical"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
    m_VorientFieldText->SetValue(false);
    itemBoxSizer18->Add(m_VorientFieldText, 0, wxGROW|wxALL, 5);

    m_FieldDatasBoxSizer = new wxBoxSizer(wxVERTICAL);
    itemBoxSizer17->Add(m_FieldDatasBoxSizer, 0, wxGROW|wxALL, 5);

    m_FieldSelectionBoxSizer = new wxBoxSizer(wxVERTICAL);
    itemBoxSizer16->Add(m_FieldSelectionBoxSizer, 0, wxGROW|wxALL, 5);

    m_NoteBook->AddPage(m_PanelField, _("Fields"));

    m_GeneralBoxSizer->Add(m_NoteBook, 0, wxGROW|wxALL, 5);

    wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
    m_GeneralBoxSizer->Add(itemBoxSizer23, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);

    wxButton* itemButton24 = new wxButton( itemDialog1, wxID_CLOSE, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 );
    itemButton24->SetForegroundColour(wxColour(0, 0, 255));
    itemBoxSizer23->Add(itemButton24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);

    wxButton* itemButton25 = new wxButton( itemDialog1, ID_RESTORE_CMP_DEFAULTS, _("Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
    itemButton25->SetForegroundColour(wxColour(206, 0, 0));
    itemBoxSizer23->Add(itemButton25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);

    wxButton* itemButton26 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
    itemButton26->SetForegroundColour(wxColour(0, 128, 0));
    itemBoxSizer23->Add(itemButton26, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);

////@end WinEDA_ComponentPropertiesFrame content construction
	BuildPanelBasic();
	BuildPanelFields();
}

/*!
 * Should we show tooltips?
 */

bool WinEDA_ComponentPropertiesFrame::ShowToolTips()
{
    return true;
}

/*!
 * Get bitmap resources
 */

wxBitmap WinEDA_ComponentPropertiesFrame::GetBitmapResource( const wxString& name )
{
    // Bitmap retrieval
////@begin WinEDA_ComponentPropertiesFrame bitmap retrieval
    wxUnusedVar(name);
    return wxNullBitmap;
////@end WinEDA_ComponentPropertiesFrame bitmap retrieval
}

/*!
 * Get icon resources
 */

wxIcon WinEDA_ComponentPropertiesFrame::GetIconResource( const wxString& name )
{
    // Icon retrieval
////@begin WinEDA_ComponentPropertiesFrame icon retrieval
    wxUnusedVar(name);
    return wxNullIcon;
////@end WinEDA_ComponentPropertiesFrame icon retrieval
}
/*!
 * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE
 */

void WinEDA_ComponentPropertiesFrame::OnCloseClick( wxCommandEvent& event )
{
	Close(true);
}

/*!
 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RESTORE_CMP_DEFAULTS
 */

void WinEDA_ComponentPropertiesFrame::OnRestoreCmpDefaultsClick( wxCommandEvent& event )
{
	SetInitCmp(event);
}

/*!
 * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
 */

void WinEDA_ComponentPropertiesFrame::OnOkClick( wxCommandEvent& event )
{
	ComponentPropertiesAccept(event);
}


