/**********************************************/
/* GERBVIEW - Gestion des Options et Reglages */
/**********************************************/

/*	 Fichier reglage.cpp 	*/

/*
 * Options for file extensions
 */


#include "fctsys.h"

#include "common.h"
#include "gerbview.h"
#include "pcbplot.h"

#include "protos.h"

/***********/

enum {
    ID_SAVE_CFG = 1000
};

/* Routines Locales */

class WinEDA_ConfigFrame : public wxDialog
{
private:

    WinEDA_GerberFrame* m_Parent;
    wxListBox*          ListLibr;
    int LibModified;

    WinEDA_EnterText*   TextDrillExt;
    WinEDA_EnterText*   TextPhotoExt;
    WinEDA_EnterText*   TextPenExt;

    // Constructor and destructor
public:
    WinEDA_ConfigFrame( WinEDA_GerberFrame* parent, const wxPoint& pos );
    ~WinEDA_ConfigFrame() { };

private:
    void    SaveCfg( wxCommandEvent& event );
    void    OnOkClick( wxCommandEvent& event );
    void    OnCancelClick( wxCommandEvent& event );

    DECLARE_EVENT_TABLE()
};
/* Construction de la table des evenements pour WinEDA_ConfigFrame */
BEGIN_EVENT_TABLE( WinEDA_ConfigFrame, wxDialog )
EVT_BUTTON( ID_SAVE_CFG, WinEDA_ConfigFrame::SaveCfg )
EVT_BUTTON( wxID_OK, WinEDA_ConfigFrame::OnOkClick )
EVT_BUTTON( wxID_CANCEL, WinEDA_ConfigFrame::OnCancelClick )
END_EVENT_TABLE()


/*****************************************************************/
void WinEDA_GerberFrame::InstallConfigFrame( const wxPoint& pos )
/*****************************************************************/

/** Function InstallConfigFrame
  * install the dialog box to configure some gerbview options
  * manly the default file extensions
 */
{
    WinEDA_ConfigFrame* CfgFrame = new WinEDA_ConfigFrame( this, pos );

    CfgFrame->ShowModal();
    CfgFrame->Destroy();
}


/************************************************************/
WinEDA_ConfigFrame::WinEDA_ConfigFrame( WinEDA_GerberFrame* parent,
                                        const wxPoint&      framepos ) :
    wxDialog( parent, -1, wxEmptyString, framepos, wxSize( 300, 180 ),
              wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT )
/************************************************************/
{
    const int LEN_EXT = 100;
    wxString  title;

    m_Parent = parent;
    SetFont( *g_DialogFont );

	/* Shows the config filename currently used : */
    title = _( "from " ) + g_EDA_Appl->m_CurrentOptionFile;
    SetTitle( title );

    LibModified = FALSE;
    wxBoxSizer* MainBoxSizer = new wxBoxSizer( wxHORIZONTAL );
    SetSizer( MainBoxSizer );
    wxBoxSizer* RightBoxSizer = new wxBoxSizer( wxVERTICAL );
    wxBoxSizer* LeftBoxSizer  = new wxBoxSizer( wxVERTICAL );
    MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 );
    MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );

    /* Created the buttons */
    wxButton* Button = new wxButton( this, ID_SAVE_CFG, _( "Save Cfg..." ) );
    RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );

    // Provide a spacer to improve appearance of dialog box
    RightBoxSizer->AddSpacer( 20 );

    Button = new wxButton( this, wxID_OK, _( "OK" ) );
    Button->SetForegroundColour( *wxRED );
    RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );

    Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
    Button->SetForegroundColour( *wxBLUE );
    RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );

    wxSize size;
    size.x = LEN_EXT;
    size.y = -1;
    TextDrillExt = new WinEDA_EnterText( this,
                                         _( "Drill File Ext:" ), g_DrillFilenameExt,
                                         LeftBoxSizer, size );

    TextPhotoExt = new WinEDA_EnterText( this,
                                         _( "Gerber File Ext:" ), g_PhotoFilenameExt,
                                         LeftBoxSizer, size );

    TextPenExt = new WinEDA_EnterText( this,
                                       _( "D code File Ext:" ), g_PenFilenameExt,
                                       LeftBoxSizer, size );

    GetSizer()->Fit( this );
    GetSizer()->SetSizeHints( this );
}


/******************************************************************/
void WinEDA_ConfigFrame::OnOkClick( wxCommandEvent& WXUNUSED (event) )
/******************************************************************/
{
    g_DrillFilenameExt = TextDrillExt->GetValue();
    g_PhotoFilenameExt = TextPhotoExt->GetValue();
    g_PenFilenameExt   = TextPenExt->GetValue();

    EndModal( 1 );
}


/******************************************************************/
void WinEDA_ConfigFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/******************************************************************/
{
    EndModal( -1 );
}


/******************************************************/
void WinEDA_ConfigFrame::SaveCfg( wxCommandEvent& event )
/******************************************************/
{
    m_Parent->Update_config();
}
