281 lines
10 KiB
C++
281 lines
10 KiB
C++
/***********************************************/
|
|
/* buildmnu.h: construction du menu principal */
|
|
/***********************************************/
|
|
|
|
#include "fctsys.h"
|
|
#include "gr_basic.h"
|
|
#include "common.h"
|
|
|
|
#include "wx/spinctrl.h"
|
|
|
|
#include "kicad.h"
|
|
#include "macros.h"
|
|
|
|
#define BITMAP wxBitmap
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// resources
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// USE_XPM_BITMAPS
|
|
#include "bitmaps.h" // Common bitmaps
|
|
|
|
#include "zip.xpm"
|
|
#include "unzip.xpm"
|
|
#include "Browse_Files.xpm"
|
|
#include "New_Project.xpm"
|
|
#include "Open_Project.xpm"
|
|
#include "../bitmaps/icon_python.xpm"
|
|
#include "../bitmaps/Reload.xpm"
|
|
|
|
#include "id.h"
|
|
|
|
/* Fonctions locales */
|
|
|
|
/* Variables locales */
|
|
|
|
|
|
BEGIN_EVENT_TABLE(WinEDA_MainFrame, WinEDA_BasicFrame)
|
|
EVT_SIZE(WinEDA_MainFrame::OnSize)
|
|
EVT_CLOSE(WinEDA_MainFrame::OnCloseWindow)
|
|
EVT_SASH_DRAGGED(ID_LEFT_FRAME, WinEDA_MainFrame::OnSashDrag)
|
|
EVT_SASH_DRAGGED(ID_BOTTOM_FRAME, WinEDA_MainFrame::OnSashDrag)
|
|
EVT_SASH_DRAGGED(ID_MAIN_COMMAND, WinEDA_MainFrame::OnSashDrag)
|
|
|
|
EVT_MENU_RANGE(ID_LOAD_PROJECT,ID_LOAD_FILE_10,
|
|
WinEDA_MainFrame::Process_Files)
|
|
EVT_MENU(ID_SAVE_PROJECT, WinEDA_MainFrame::Process_Files)
|
|
|
|
EVT_TOOL(ID_NEW_PROJECT, WinEDA_MainFrame::Process_Files)
|
|
EVT_TOOL(ID_LOAD_PROJECT, WinEDA_MainFrame::Process_Files)
|
|
EVT_TOOL(ID_SAVE_PROJECT, WinEDA_MainFrame::Process_Files)
|
|
EVT_TOOL(ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::Process_Files)
|
|
|
|
EVT_MENU(ID_EXIT, WinEDA_MainFrame::Process_Special_Functions)
|
|
|
|
EVT_MENU(ID_TO_EDITOR, WinEDA_MainFrame::Process_Fct)
|
|
EVT_MENU(ID_BROWSE_AN_SELECT_FILE, WinEDA_MainFrame::Process_Fct)
|
|
EVT_MENU(ID_SELECT_PREFERED_EDITOR, WinEDA_MainFrame::Process_Preferences)
|
|
EVT_MENU(ID_SELECT_DEFAULT_PDF_BROWSER, WinEDA_MainFrame::Process_Preferences)
|
|
EVT_MENU(ID_SELECT_PREFERED_PDF_BROWSER, WinEDA_MainFrame::Process_Preferences)
|
|
EVT_MENU(ID_SELECT_PREFERED_PDF_BROWSER_NAME, WinEDA_MainFrame::Process_Preferences)
|
|
EVT_MENU(ID_SAVE_AND_ZIP_FILES, WinEDA_MainFrame::Process_Files)
|
|
EVT_MENU(ID_READ_ZIP_ARCHIVE, WinEDA_MainFrame::Process_Files)
|
|
EVT_MENU(ID_PROJECT_TREE_REFRESH, WinEDA_MainFrame::OnRefresh)
|
|
|
|
EVT_MENU(ID_PREFERENCES_FONT_INFOSCREEN, WinEDA_MainFrame::Process_Preferences)
|
|
|
|
EVT_MENU_RANGE(ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END,
|
|
WinEDA_MainFrame::SetLanguage)
|
|
|
|
|
|
EVT_MENU(ID_GENERAL_HELP, WinEDA_MainFrame::GetKicadHelp)
|
|
EVT_MENU(ID_KICAD_ABOUT, WinEDA_MainFrame::GetKicadAbout)
|
|
|
|
EVT_BUTTON(ID_TO_PCB, WinEDA_MainFrame::Process_Fct)
|
|
EVT_BUTTON(ID_TO_CVPCB, WinEDA_MainFrame::Process_Fct)
|
|
EVT_BUTTON(ID_TO_EESCHEMA, WinEDA_MainFrame::Process_Fct)
|
|
EVT_BUTTON(ID_TO_GERBVIEW, WinEDA_MainFrame::Process_Fct)
|
|
|
|
#ifdef KICAD_PYTHON
|
|
EVT_BUTTON(ID_RUN_PYTHON, WinEDA_MainFrame::Process_Fct)
|
|
#endif
|
|
|
|
END_EVENT_TABLE()
|
|
|
|
|
|
/*******************************************/
|
|
void WinEDA_MainFrame::ReCreateMenuBar()
|
|
/*******************************************/
|
|
{
|
|
int ii, jj;
|
|
wxMenuBar * menuBar = GetMenuBar() ;
|
|
|
|
if( menuBar == NULL )
|
|
{
|
|
m_MenuBar = menuBar = new wxMenuBar();
|
|
|
|
m_FilesMenu = new wxMenu;
|
|
wxMenuItem *item = new wxMenuItem(m_FilesMenu, ID_LOAD_PROJECT,
|
|
_("&Open Project Descr"),
|
|
_("Select an existing project descriptor") );
|
|
item->SetBitmap(open_project_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_NEW_PROJECT,
|
|
_("&New Project Descr"),
|
|
_("Create new project descriptor") );
|
|
item->SetBitmap(new_project_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
item = new wxMenuItem(m_FilesMenu, ID_SAVE_PROJECT,
|
|
_("&Save Project Descr"),
|
|
_("Save current project descriptor") );
|
|
item->SetBitmap(save_project_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
m_FilesMenu->AppendSeparator();
|
|
item = new wxMenuItem(m_FilesMenu, ID_SAVE_AND_ZIP_FILES,
|
|
_("Save &Project Files"),
|
|
_("Save and Zip all project files") );
|
|
item->SetBitmap(zip_xpm);
|
|
m_FilesMenu->Append(item);
|
|
item = new wxMenuItem(m_FilesMenu, ID_READ_ZIP_ARCHIVE,
|
|
_("&Unzip Archive"),
|
|
_("UnZip archive file") );
|
|
item->SetBitmap(unzip_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
m_FilesMenu->AppendSeparator();
|
|
item = new wxMenuItem(m_FilesMenu, ID_EXIT, _("E&xit"), _("Quit Kicad") );
|
|
item->SetBitmap(exit_xpm);
|
|
m_FilesMenu->Append(item);
|
|
|
|
// Creation des selections des anciens fichiers
|
|
m_FilesMenu->AppendSeparator();
|
|
for ( ii = 0; ii < 10; ii++ )
|
|
{
|
|
if ( GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) );
|
|
}
|
|
|
|
// Menu Browse
|
|
wxMenu *browseMenu = new wxMenu();
|
|
item = new wxMenuItem(browseMenu, ID_TO_EDITOR,
|
|
_("&Editor"), _("Text editor") );
|
|
item->SetBitmap(editor_xpm);
|
|
browseMenu->Append(item);
|
|
item = new wxMenuItem(browseMenu, ID_BROWSE_AN_SELECT_FILE,
|
|
_("&Browse Files"), _("Read or edit files") );
|
|
item->SetBitmap(browse_files_xpm);
|
|
browseMenu->Append(item);
|
|
browseMenu->AppendSeparator();
|
|
item = new wxMenuItem(browseMenu, ID_SELECT_PREFERED_EDITOR,
|
|
_("&Select Editor"), _("Select your prefered editor for file browsing") );
|
|
item->SetBitmap(editor_xpm);
|
|
browseMenu->Append(item);
|
|
|
|
// Preferences menu:
|
|
wxMenu *PreferencesMenu = new wxMenu;
|
|
item = new wxMenuItem(PreferencesMenu , ID_PREFERENCES_FONT_INFOSCREEN,
|
|
_("Select Fonts"), _("Select Fonts and Font sizes"));
|
|
item->SetBitmap(fonts_xpm);
|
|
PreferencesMenu->Append(item);
|
|
|
|
// Submenu Pdf Browser selection: system browser or user selected browser (and its name)
|
|
wxMenu *SubMenuPdfBrowserChoice = new wxMenu;
|
|
item = new wxMenuItem(SubMenuPdfBrowserChoice , ID_SELECT_DEFAULT_PDF_BROWSER,
|
|
_("Default Pdf Viewer"), _("Use the default (system) PDF viewer used to browse datasheets"),
|
|
wxITEM_CHECK);
|
|
SETBITMAPS(datasheet_xpm);
|
|
SubMenuPdfBrowserChoice->Append(item);
|
|
SubMenuPdfBrowserChoice->Check(ID_SELECT_DEFAULT_PDF_BROWSER,
|
|
g_EDA_Appl->m_PdfBrowserIsDefault);
|
|
item = new wxMenuItem(SubMenuPdfBrowserChoice , ID_SELECT_PREFERED_PDF_BROWSER,
|
|
_("Favourite Pdf Viewer"), _("Use your favourite PDF viewer used to browse datasheets"),
|
|
wxITEM_CHECK);
|
|
SETBITMAPS(preference_xpm);
|
|
SubMenuPdfBrowserChoice->Append(item);
|
|
SubMenuPdfBrowserChoice->AppendSeparator();
|
|
SubMenuPdfBrowserChoice->Check(ID_SELECT_PREFERED_PDF_BROWSER,
|
|
!g_EDA_Appl->m_PdfBrowserIsDefault);
|
|
item = new wxMenuItem(SubMenuPdfBrowserChoice , ID_SELECT_PREFERED_PDF_BROWSER_NAME,
|
|
_("Select Pdf Viewer"), _("Select your favourite PDF viewer used to browse datasheets"));
|
|
item->SetBitmap(datasheet_xpm);
|
|
SubMenuPdfBrowserChoice->Append(item);
|
|
ADD_MENUITEM_WITH_HELP_AND_SUBMENU(PreferencesMenu, SubMenuPdfBrowserChoice,
|
|
-1, _("Pdf Browser"),
|
|
wxT("Pdf Browser choice: default or user selection"),
|
|
datasheet_xpm);
|
|
|
|
PreferencesMenu->AppendSeparator();
|
|
m_Parent->SetLanguageList(PreferencesMenu);
|
|
|
|
|
|
// Menu Help:
|
|
wxMenu *helpMenu = new wxMenu;
|
|
item = new wxMenuItem(helpMenu , ID_GENERAL_HELP,
|
|
_("&Contents"), _("Open the kicad manual"));
|
|
item->SetBitmap(help_xpm);
|
|
helpMenu->Append(item);
|
|
|
|
item = new wxMenuItem(helpMenu , ID_KICAD_ABOUT,
|
|
_("&About"), _("About this application"));
|
|
item->SetBitmap(info_xpm);
|
|
helpMenu->Append(item);
|
|
|
|
|
|
menuBar->Append(m_FilesMenu, _("&Projects"));
|
|
menuBar->Append(browseMenu, _("&Browse"));
|
|
menuBar->Append(PreferencesMenu, _("&Preferences"));
|
|
menuBar->Append(helpMenu, _("&Help"));
|
|
|
|
// Associate the menu bar with the frame
|
|
SetMenuBar(menuBar);
|
|
}
|
|
else // simple mise a jour de la liste des fichiers anciens
|
|
{
|
|
wxMenuItem * item;
|
|
int max_file = m_Parent->m_LastProjectMaxCount;
|
|
for ( ii = max_file-1; ii >=0 ; ii-- )
|
|
{
|
|
if( m_FilesMenu->FindItem(ID_LOAD_FILE_1 + ii) )
|
|
{
|
|
item = m_FilesMenu->Remove(ID_LOAD_FILE_1 + ii);
|
|
if ( item ) delete item;
|
|
}
|
|
}
|
|
for ( jj = 0, ii = 0; ii < max_file; ii++ )
|
|
{
|
|
if (GetLastProject(ii).IsEmpty() ) break;
|
|
m_FilesMenu->Append(ID_LOAD_FILE_1 + jj, GetLastProject(ii) );
|
|
jj++;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/***************************************************/
|
|
void WinEDA_MainFrame::RecreateBaseHToolbar()
|
|
/***************************************************/
|
|
{
|
|
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, BITMAP(new_project_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Create new project descriptor"));
|
|
|
|
m_HToolBar->AddTool(ID_LOAD_PROJECT, BITMAP(open_project_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Select an existing project descriptor"));
|
|
|
|
m_HToolBar->AddTool(ID_SAVE_PROJECT, BITMAP(save_project_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Save current project descriptor"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_SAVE_AND_ZIP_FILES, BITMAP(zip_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Archive all project files"));
|
|
|
|
m_HToolBar->AddSeparator();
|
|
m_HToolBar->AddTool(ID_PROJECT_TREE_REFRESH, BITMAP(reload_xpm),
|
|
wxNullBitmap, FALSE,
|
|
-1, -1, (wxObject *) NULL,
|
|
_("Refresh project tree"));
|
|
|
|
|
|
// after adding the buttons to the toolbar, must call Realize() to reflect
|
|
// the changes
|
|
m_HToolBar->Realize();
|
|
}
|
|
|