Hook up import-page-layout and change-background-color actions.

This commit is contained in:
Jeff Young 2019-05-24 14:37:55 +01:00
parent 2901fee9a0
commit 71f188f3de
18 changed files with 234 additions and 541 deletions

View File

@ -748,10 +748,7 @@ void WORKSHEET_LAYOUT::SetPageLayout( const wxString& aFullFileName, bool Append
{
#if 0
if( !fullFileName.IsEmpty() )
{
wxLogMessage( wxT("Page layout file <%s> not found"),
fullFileName.GetData() );
}
wxLogMessage( wxT("Page layout file <%s> not found"), fullFileName.GetData() );
#endif
SetDefaultLayout();
return;
@ -771,8 +768,7 @@ void WORKSHEET_LAYOUT::SetPageLayout( const wxString& aFullFileName, bool Append
char * buffer = new char[filelen+10];
if( wksFile.Read( buffer, filelen ) != filelen )
wxLogMessage( _("The file \"%s\" was not fully read"),
fullFileName.GetData() );
wxLogMessage( _("The file \"%s\" was not fully read"), fullFileName.GetData() );
else
{
buffer[filelen]=0;

View File

@ -55,9 +55,25 @@
#include <worksheet_dataitem.h>
#include <base_units.h>
#include <page_info.h>
#include <layers_id_colors_and_visibility.h>
// ============================ BASE CLASS ==============================
void WS_DRAW_ITEM_BASE::ViewGetLayers( int aLayers[], int& aCount ) const
{
aCount = 1;
WORKSHEET_DATAITEM* dataItem = GetPeer();
if( dataItem->GetPage1Option() == FIRST_PAGE_ONLY )
aLayers[0] = LAYER_WORKSHEET_PAGE1;
else if( dataItem->GetPage1Option() == SUBSEQUENT_PAGES )
aLayers[0] = LAYER_WORKSHEET_PAGEn;
else
aLayers[0] = LAYER_WORKSHEET;
}
// A generic HitTest that can be used by some, but not all, sub-classes.
bool WS_DRAW_ITEM_BASE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{

View File

@ -195,6 +195,8 @@ enum GAL_LAYER_ID: int
LAYER_VIAS_HOLES, ///< to draw via holes (pad holes do not use this layer)
LAYER_DRC, ///< drc markers
LAYER_WORKSHEET, ///< worksheet frame
LAYER_WORKSHEET_PAGE1, ///< for pageLayout editor previewing
LAYER_WORKSHEET_PAGEn, ///< for pageLayout editor previewing
LAYER_GP_OVERLAY, ///< general purpose overlay
LAYER_SELECT_OVERLAY, ///< currently selected items overlay
LAYER_PCB_BACKGROUND, ///< PCB background color

View File

@ -66,6 +66,8 @@ public:
WORKSHEET_DATAITEM* GetPeer() const { return m_peer; }
void ViewGetLayers( int aLayers[], int& aCount ) const override;
virtual const wxPoint GetPosition() const = 0;
virtual void SetPosition( wxPoint aPos ) = 0;
virtual void SetEnd( wxPoint aPos ) { /* not all types will need this */ }

View File

@ -20,11 +20,8 @@ set( PL_EDITOR_SRCS
dialogs/dialog_new_dataitem.cpp
pl_editor_screen.cpp
pl_editor_layout.cpp
events_functions.cpp
controle.cpp
files.cpp
page_layout_writer.cpp
pl_editor_config.cpp
pl_editor_frame.cpp
pl_editor_undo_redo.cpp
properties_frame.cpp

View File

@ -1,62 +0,0 @@
/**
* @file pagelayout_editor/controle.cpp
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 CERN
* @author Jean-Pierre Charras, jp.charras at wanadoo.fr
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <fctsys.h>
#include <common.h>
#include <class_drawpanel.h>
#include <pl_editor_frame.h>
bool PL_EDITOR_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, EDA_KEY aHotKey )
{
bool eventHandled = true;
// Filter out the 'fake' mouse motion after a keyboard movement
if( !aHotKey && m_movingCursorWithKeyboard )
{
m_movingCursorWithKeyboard = false;
return false;
}
wxPoint pos = aPosition;
wxPoint oldpos = GetCrossHairPosition();
GeneralControlKeyMovement( aHotKey, &pos, true );
// Update cursor position.
SetCrossHairPosition( pos, true );
RefreshCrossHair( oldpos, aPosition, aDC );
if( aHotKey )
{
eventHandled = OnHotKey( aDC, aHotKey, aPosition );
}
UpdateStatusBar();
return eventHandled;
}

View File

@ -1,356 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 CERN
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors.
* @author Jean-Pierre Charras, jp.charras at wanadoo.fr
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file pagelayout_editor/events_functions.cpp
* @brief page layout editor command event functions.
*/
#include <fctsys.h>
#include <wx/treectrl.h>
#include <pgm_base.h>
#include <class_drawpanel.h>
#include <common.h>
#include <macros.h>
#include <pl_editor_frame.h>
#include <kicad_device_context.h>
#include <pl_editor_id.h>
#include <dialog_helpers.h>
#include <menus_helpers.h>
#include <ws_draw_item.h>
#include <worksheet_dataitem.h>
#include <dialog_page_settings.h>
#include <invoke_pl_editor_dialog.h>
#include <properties_frame.h>
BEGIN_EVENT_TABLE( PL_EDITOR_FRAME, EDA_DRAW_FRAME )
EVT_CLOSE( PL_EDITOR_FRAME::OnCloseWindow )
// Menu Files:
EVT_MENU( wxID_NEW, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_OPEN, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVEAS, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_FILE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_APPEND_DESCR_FILE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_GEN_PLOT, PL_EDITOR_FRAME::ToPlotter )
EVT_MENU_RANGE( ID_FILE1, ID_FILEMAX, PL_EDITOR_FRAME::OnFileHistory )
EVT_MENU( wxID_EXIT, PL_EDITOR_FRAME::OnQuit )
// menu Preferences
EVT_MENU( ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST, PL_EDITOR_FRAME::Process_Config )
EVT_MENU( wxID_PREFERENCES, PL_EDITOR_FRAME::Process_Config )
EVT_TOOL( wxID_DELETE, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( wxID_PRINT, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( wxID_PREVIEW, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( ID_SHEET_SET, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_TOOL( ID_SHOW_PL_EDITOR_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_CHOICE( ID_SELECT_COORDINATE_ORIGIN, PL_EDITOR_FRAME::OnSelectCoordOriginCorner)
EVT_CHOICE( ID_SELECT_PAGE_NUMBER, PL_EDITOR_FRAME::Process_Special_Functions)
EVT_MENU_RANGE( ID_POPUP_START_RANGE, ID_POPUP_END_RANGE,
PL_EDITOR_FRAME::Process_Special_Functions )
EVT_UPDATE_UI( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode )
EVT_UPDATE_UI( ID_SHOW_PL_EDITOR_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode )
END_EVENT_TABLE()
/* Handles the selection of tools, menu, and popup menu commands.
*/
void PL_EDITOR_FRAME::Process_Special_Functions( wxCommandEvent& event )
{
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
cmd.SetEventObject( this );
switch( event.GetId() )
{
case ID_SELECT_PAGE_NUMBER:
m_canvas->Refresh();
break;
case ID_SHEET_SET:
{
DIALOG_PAGES_SETTINGS dlg( this, wxSize( MAX_PAGE_SIZE_EDITORS_MILS,
MAX_PAGE_SIZE_EDITORS_MILS ) );
dlg.SetWksFileName( GetCurrFileName() );
dlg.EnableWksFileNamePicker( false );
dlg.ShowModal();
cmd.SetId( ID_ZOOM_PAGE );
wxPostEvent( this, cmd );
}
break;
case ID_POPUP_ITEM_APPEND_PAGE_LAYOUT:
cmd.SetId( ID_APPEND_DESCR_FILE );
wxPostEvent( this, cmd );
break;
default:
wxMessageBox( wxT( "PL_EDITOR_FRAME::Process_Special_Functions error" ) );
break;
}
}
/*
* Function moveItem: called when the mouse cursor is moving
* moves the item currently selected (or the start point or the end point)
* to the cursor position
DPOINT initialPosition; // The initial position of the item to move, in mm
wxPoint initialPositionUi; // The initial position of the item to move, in Ui
wxPoint initialCursorPosition; // The initial position of the cursor
static void moveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase )
{
PL_EDITOR_SCREEN* screen = (PL_EDITOR_SCREEN*) aPanel->GetScreen();
WORKSHEET_DATAITEM *item = screen->GetCurItem();
wxCHECK_RET( (item != NULL), wxT( "Cannot move NULL item." ) );
wxPoint position = aPanel->GetParent()->GetCrossHairPosition()
- ( initialCursorPosition - initialPositionUi );
wxPoint previous_position;
if( (item->GetFlags() & LOCATE_STARTPOINT) )
{
previous_position = item->GetStartPosUi();
item->MoveStartPointToUi( position );
}
else if( (item->GetFlags() & LOCATE_ENDPOINT) )
{
previous_position = item->GetEndPosUi();
item->MoveEndPointToUi( position );
}
else
{
previous_position = item->GetStartPosUi();
item->MoveToUi( position );
}
// Draw the item item at it's new position, if it is modified,
// (does not happen each time the mouse is moved, because the
// item is placed on grid)
// to avoid useless computation time.
if( previous_position != position )
aPanel->Refresh();
}
* Function abortMoveItem: called when an item is currently moving,
* and when the user aborts the move command.
* Restores the initial position of the item
static void abortMoveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC )
{
PL_EDITOR_SCREEN* screen = (PL_EDITOR_SCREEN*) aPanel->GetScreen();
WORKSHEET_DATAITEM *item = screen->GetCurItem();
if( item->GetFlags() & NEW_ITEM )
{
PL_EDITOR_FRAME* plframe = (PL_EDITOR_FRAME*) aPanel->GetParent();
plframe->RemoveLastCommandInUndoList();
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
pglayout.Remove( item );
}
else
{
if( (item->GetFlags() & LOCATE_STARTPOINT) )
{
item->MoveStartPointTo( initialPosition );
}
else if( (item->GetFlags() & LOCATE_ENDPOINT) )
{
item->MoveEndPointTo( initialPosition );
}
else
item->MoveTo( initialPosition );
}
aPanel->SetMouseCapture( NULL, NULL );
screen->SetCurItem( NULL );
aPanel->Refresh();
}
void PL_EDITOR_FRAME::MoveItem( WORKSHEET_DATAITEM* aItem )
{
wxCHECK_RET( aItem != NULL, wxT( "Cannot move NULL item" ) );
initialPosition = aItem->GetStartPos();
initialPositionUi = aItem->GetStartPosUi();
initialCursorPosition = GetCrossHairPosition();
if( (aItem->GetFlags() & LOCATE_ENDPOINT) )
{
initialPosition = aItem->GetEndPos();
initialPositionUi = aItem->GetEndPosUi();
}
if( aItem->GetFlags() & (LOCATE_STARTPOINT|LOCATE_ENDPOINT) )
{
SetCrossHairPosition( initialPositionUi, false );
initialCursorPosition = GetCrossHairPosition();
if( m_canvas->IsPointOnDisplay( initialCursorPosition ) )
{
m_canvas->MoveCursorToCrossHair();
m_canvas->Refresh();
}
else
{
RedrawScreen( initialCursorPosition, true );
}
}
m_canvas->SetMouseCapture( moveItem, abortMoveItem );
GetScreen()->SetCurItem( aItem );
}
* Save in Undo list the layout, and place an item being moved.
* @param aItem is the item moved
void PL_EDITOR_FRAME::PlaceItem( WORKSHEET_DATAITEM* aItem )
{
DPOINT currStartPos = aItem->GetStartPos();
DPOINT currEndPos = aItem->GetEndPos();
aItem->ClearFlags( NEW_ITEM );
// Save the curren layout before changes
if( (aItem->GetFlags() & LOCATE_STARTPOINT) )
{
aItem->MoveStartPointTo( initialPosition );
}
else if( aItem->GetFlags() & LOCATE_ENDPOINT )
{
aItem->MoveEndPointTo( initialPosition );
}
else
aItem->MoveTo( initialPosition );
SaveCopyInUndoList();
// Re-place the item
aItem->MoveStartPointTo( currStartPos );
aItem->MoveEndPointTo( currEndPos );
m_canvas->SetMouseCapture( NULL, NULL );
GetScreen()->SetCurItem( NULL );
}
*/
/* called when the user select one of the 4 page corner as corner
* reference (or the left top paper corner)
*/
void PL_EDITOR_FRAME::OnSelectCoordOriginCorner( wxCommandEvent& event )
{
m_originSelectChoice = m_originSelectBox->GetSelection();
UpdateStatusBar(); // Update grid origin
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode( wxCommandEvent& event )
{
WORKSHEET_DATAITEM::m_SpecialMode = (event.GetId() == ID_SHOW_PL_EDITOR_MODE);
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnQuit( wxCommandEvent& event )
{
Close( true );
}
void PL_EDITOR_FRAME::ToPlotter(wxCommandEvent& event)
{
wxMessageBox( wxT( "Not yet available" ) );
}
void PL_EDITOR_FRAME::ToPrinter(wxCommandEvent& event)
{
// static print data and page setup data, to remember settings during the session
static wxPrintData* s_PrintData;
static wxPageSetupDialogData* s_pageSetupData = (wxPageSetupDialogData*) NULL;
const PAGE_INFO& pageInfo = GetPageSettings();
if( s_PrintData == NULL ) // First print
{
s_PrintData = new wxPrintData();
s_PrintData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGH;
}
if( !s_PrintData->Ok() )
{
wxMessageBox( _( "Error Init Printer info" ) );
return;
}
if( s_pageSetupData == NULL )
s_pageSetupData = new wxPageSetupDialogData( *s_PrintData );
s_pageSetupData->SetPaperId( pageInfo.GetPaperId() );
s_pageSetupData->GetPrintData().SetOrientation( pageInfo.GetWxOrientation() );
if( pageInfo.IsCustom() )
{
if( pageInfo.IsPortrait() )
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetWidthMils() ),
Mils2mm( pageInfo.GetHeightMils() ) ) );
else
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetHeightMils() ),
Mils2mm( pageInfo.GetWidthMils() ) ) );
}
*s_PrintData = s_pageSetupData->GetPrintData();
if( event.GetId() == wxID_PREVIEW )
InvokeDialogPrintPreview( this, s_PrintData );
else
InvokeDialogPrint( this, s_PrintData, s_pageSetupData );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == false );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == true );
}

View File

@ -50,6 +50,10 @@ PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWindo
setDefaultLayerDeps();
m_view->SetLayerVisible( LAYER_WORKSHEET, true );
m_view->SetLayerVisible( LAYER_WORKSHEET_PAGE1, true );
m_view->SetLayerVisible( LAYER_WORKSHEET_PAGEn, false );
m_viewControls = new KIGFX::WX_VIEW_CONTROLS( m_view, this );
}

View File

@ -1,73 +0,0 @@
/**
* @file pl_editor_config.cpp
* @brief page layout editor configuration.
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 CERN
* @author Jean-Pierre Charras, jp.charras at wanadoo.fr
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <fctsys.h>
#include <common.h>
#include <class_drawpanel.h>
#include <gestfich.h>
#include <config_params.h>
#include <pl_editor_frame.h>
#include <hotkeys.h>
#include <panel_hotkeys_editor.h>
#include <pl_editor_id.h>
#define GROUP wxT("/pl_editor")
void PL_EDITOR_FRAME::Process_Config( wxCommandEvent& event )
{
int id = event.GetId();
switch( id )
{
case wxID_PREFERENCES:
ShowPreferences( PlEditorHotkeysDescr, PlEditorHotkeysDescr, wxT( "pl_editor" ) );
break;
case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST:
DisplayHotkeyList( this, PlEditorHotkeysDescr );
break;
default:
wxMessageBox( wxT( "PL_EDITOR_FRAME::Process_Config error" ) );
break;
}
}
PARAM_CFG_ARRAY& PL_EDITOR_FRAME::GetConfigurationSettings()
{
if( !m_configSettings.empty() )
return m_configSettings;
// Add settings here....
return m_configSettings;
}

View File

@ -25,6 +25,7 @@
#include <fctsys.h>
#include <kiface_i.h>
#include <pgm_base.h>
#include <base_units.h>
#include <msgpanel.h>
#include <bitmaps.h>
@ -34,11 +35,9 @@
#include <pl_draw_panel_gal.cpp>
#include <hotkeys.h>
#include <pl_editor_screen.h>
#include <ws_draw_item.h>
#include <worksheet_dataitem.h>
#include <properties_frame.h>
#include <view/view.h>
#include <wildcards_and_files_ext.h>
#include <confirm.h>
#include <tool/selection.h>
#include <tool/tool_dispatcher.h>
@ -51,6 +50,39 @@
#include <tools/pl_edit_tool.h>
#include <tools/pl_point_editor.h>
#include <tools/pl_picker_tool.h>
#include <dialog_page_settings.h>
#include <invoke_pl_editor_dialog.h>
BEGIN_EVENT_TABLE( PL_EDITOR_FRAME, EDA_DRAW_FRAME )
EVT_CLOSE( PL_EDITOR_FRAME::OnCloseWindow )
// Menu Files:
EVT_MENU( wxID_NEW, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_OPEN, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVEAS, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_FILE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_GEN_PLOT, PL_EDITOR_FRAME::ToPlotter )
EVT_MENU_RANGE( ID_FILE1, ID_FILEMAX, PL_EDITOR_FRAME::OnFileHistory )
EVT_MENU( wxID_EXIT, PL_EDITOR_FRAME::OnQuit )
// menu Preferences
EVT_MENU( ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_MENU( wxID_PREFERENCES, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( wxID_PRINT, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( wxID_PREVIEW, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( ID_SHEET_SET, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_TOOL( ID_SHOW_PL_EDITOR_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_CHOICE( ID_SELECT_COORDINATE_ORIGIN, PL_EDITOR_FRAME::OnSelectCoordOriginCorner)
EVT_CHOICE( ID_SELECT_PAGE_NUMBER, PL_EDITOR_FRAME::Process_Special_Functions)
EVT_UPDATE_UI( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode )
EVT_UPDATE_UI( ID_SHOW_PL_EDITOR_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode )
END_EVENT_TABLE()
PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
@ -240,6 +272,139 @@ void PL_EDITOR_FRAME::OnCloseWindow( wxCloseEvent& Event )
}
/* Handles the selection of tools, menu, and popup menu commands.
*/
void PL_EDITOR_FRAME::Process_Special_Functions( wxCommandEvent& event )
{
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
cmd.SetEventObject( this );
switch( event.GetId() )
{
case wxID_PREFERENCES:
ShowPreferences( PlEditorHotkeysDescr, PlEditorHotkeysDescr, wxT( "pl_editor" ) );
break;
case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST:
DisplayHotkeyList( this, PlEditorHotkeysDescr );
break;
case ID_SELECT_PAGE_NUMBER:
{
KIGFX::VIEW* view = GetGalCanvas()->GetView();
view->SetLayerVisible( LAYER_WORKSHEET_PAGE1, m_pageSelectBox->GetSelection() == 0 );
view->SetLayerVisible( LAYER_WORKSHEET_PAGEn, m_pageSelectBox->GetSelection() == 1 );
m_canvas->Refresh();
}
break;
case ID_SHEET_SET:
{
DIALOG_PAGES_SETTINGS dlg( this, wxSize( MAX_PAGE_SIZE_EDITORS_MILS,
MAX_PAGE_SIZE_EDITORS_MILS ) );
dlg.SetWksFileName( GetCurrFileName() );
dlg.EnableWksFileNamePicker( false );
dlg.ShowModal();
cmd.SetId( ID_ZOOM_PAGE );
wxPostEvent( this, cmd );
}
break;
default:
wxMessageBox( wxT( "PL_EDITOR_FRAME::Process_Special_Functions error" ) );
break;
}
}
/* called when the user select one of the 4 page corner as corner
* reference (or the left top paper corner)
*/
void PL_EDITOR_FRAME::OnSelectCoordOriginCorner( wxCommandEvent& event )
{
m_originSelectChoice = m_originSelectBox->GetSelection();
UpdateStatusBar(); // Update grid origin
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode( wxCommandEvent& event )
{
WORKSHEET_DATAITEM::m_SpecialMode = (event.GetId() == ID_SHOW_PL_EDITOR_MODE);
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnQuit( wxCommandEvent& event )
{
Close( true );
}
void PL_EDITOR_FRAME::ToPlotter(wxCommandEvent& event)
{
wxMessageBox( wxT( "Not yet available" ) );
}
void PL_EDITOR_FRAME::ToPrinter(wxCommandEvent& event)
{
// static print data and page setup data, to remember settings during the session
static wxPrintData* s_PrintData;
static wxPageSetupDialogData* s_pageSetupData = (wxPageSetupDialogData*) NULL;
const PAGE_INFO& pageInfo = GetPageSettings();
if( s_PrintData == NULL ) // First print
{
s_PrintData = new wxPrintData();
s_PrintData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGH;
}
if( !s_PrintData->Ok() )
{
wxMessageBox( _( "Error Init Printer info" ) );
return;
}
if( s_pageSetupData == NULL )
s_pageSetupData = new wxPageSetupDialogData( *s_PrintData );
s_pageSetupData->SetPaperId( pageInfo.GetPaperId() );
s_pageSetupData->GetPrintData().SetOrientation( pageInfo.GetWxOrientation() );
if( pageInfo.IsCustom() )
{
if( pageInfo.IsPortrait() )
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetWidthMils() ),
Mils2mm( pageInfo.GetHeightMils() ) ) );
else
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetHeightMils() ),
Mils2mm( pageInfo.GetWidthMils() ) ) );
}
*s_PrintData = s_pageSetupData->GetPrintData();
if( event.GetId() == wxID_PREVIEW )
InvokeDialogPrintPreview( this, s_PrintData );
else
InvokeDialogPrint( this, s_PrintData, s_pageSetupData );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == false );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == true );
}
const BOX2I PL_EDITOR_FRAME::GetDocumentExtents() const
{
BOX2I rv( VECTOR2I( 0, 0 ), GetPageLayout().GetPageSettings().GetSizeIU() );

View File

@ -53,7 +53,6 @@ class PL_EDITOR_FRAME : public EDA_DRAW_FRAME
wxChoice* m_pageSelectBox; // The page number sel'ector (page 1 or other pages
// usefull when there are some items which are
// only on page 1, not on page 1
wxPoint m_grid_origin;
protected:
@ -197,7 +196,7 @@ public:
* source code (mainly in dialogs). If you need to define a configuration
* setting that need to be loaded at run time, this is the place to define it.
*/
PARAM_CFG_ARRAY& GetConfigurationSettings();
PARAM_CFG_ARRAY& GetConfigurationSettings() { return m_configSettings; }
void LoadSettings( wxConfigBase* aCfg ) override;
@ -245,8 +244,6 @@ public:
bool OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosition,
EDA_ITEM* aItem = NULL ) override;
void Process_Config( wxCommandEvent& event );
/**
* Function ToPlotter
* Open a dialog frame to create plot and drill files
@ -261,7 +258,6 @@ public:
void ToPrinter( wxCommandEvent& event );
void Files_io( wxCommandEvent& event );
bool GeneralControl( wxDC* aDC, const wxPoint& aPosition, EDA_KEY aHotKey = 0 ) override;
/** Virtual function PrintPage
* used to print a page

View File

@ -43,10 +43,6 @@ enum pl_editor_ids
{
ID_MAIN_MENUBAR = ID_END_LIST,
ID_PL_EDITOR_SHOW_SOURCE,
ID_MENU_PL_EDITOR_SELECT_PREFERED_EDITOR,
ID_DESIGN_TREE_FRAME,
ID_SHOW_REAL_MODE,
ID_SHOW_PL_EDITOR_MODE,
ID_SELECT_COORDINATE_ORIGIN,
@ -61,18 +57,6 @@ enum pl_editor_ids
ID_PL_IMAGE_TOOL,
ID_PL_DELETE_TOOL,
ID_POPUP_START_RANGE,
ID_POPUP_ITEM_DELETE,
ID_POPUP_DESIGN_TREE_ITEM_DELETE,
ID_POPUP_ITEM_APPEND_PAGE_LAYOUT,
ID_POPUP_ITEM_MOVE,
ID_POPUP_ITEM_PLACE,
ID_POPUP_ITEM_MOVE_START_POINT,
ID_POPUP_ITEM_MOVE_END_POINT,
ID_POPUP_ITEM_PLACE_CANCEL,
ID_POPUP_ITEM_EDIT_BITMAP,
ID_POPUP_END_RANGE,
ID_PLEDITOR_END_LIST
};

View File

@ -288,6 +288,7 @@ void PROPERTIES_FRAME::OnAcceptPrms( wxCommandEvent& event )
// Be sure what is displayed is what is set for item
// (mainly, texts can be modified if they contain "\n")
CopyPrmsFromItemToPanel( dataItem );
m_parent->GetGalCanvas()->GetView()->Update( drawItem );
}
CopyPrmsFromPanelToGeneral();

View File

@ -132,16 +132,17 @@ void PL_EDITOR_FRAME::ReCreateVToolbar()
m_drawToolBar = new ACTION_TOOLBAR( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize,
KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
m_drawToolBar->Add( PL_ACTIONS::selectionTool, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::selectionTool, ACTION_TOOLBAR::TOGGLE );
KiScaledSeparator( m_drawToolBar, this );
m_drawToolBar->Add( PL_ACTIONS::drawLine, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::drawRectangle, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::placeText, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::placeImage, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::drawLine, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::drawRectangle, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::placeText, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::placeImage, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::appendImportedWorksheet, ACTION_TOOLBAR::TOGGLE );
KiScaledSeparator( m_drawToolBar, this );
m_drawToolBar->Add( PL_ACTIONS::deleteItemCursor, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PL_ACTIONS::deleteItemCursor, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Realize();
}
@ -165,5 +166,7 @@ void PL_EDITOR_FRAME::SyncMenusAndToolbars()
m_drawToolBar->Toggle( PL_ACTIONS::placeText, GetToolId() == ID_PL_TEXT_TOOL );
m_drawToolBar->Toggle( PL_ACTIONS::placeImage, GetToolId() == ID_PL_IMAGE_TOOL );
m_drawToolBar->Toggle( PL_ACTIONS::deleteItemCursor, GetToolId() == ID_PL_DELETE_TOOL );
m_drawToolBar->Toggle( PL_ACTIONS::appendImportedWorksheet, false ); // Not really a tool
m_drawToolBar->Refresh();
}

View File

@ -79,12 +79,6 @@ TOOL_ACTION PL_ACTIONS::addImage( "plEditor.InteractiveDrawing.addImage",
_( "Add Bitmap" ), _( "Add a bitmap image" ),
image_xpm, AF_ACTIVATE );
TOOL_ACTION PL_ACTIONS::appendImportedWorksheet( "plEditor.InteractiveDrawing.appendWorksheet",
AS_GLOBAL, 0,
_( "Append Existing Page Layout File..." ),
_( "Append an existing page layout design file to current file" ),
pagelayout_load_xpm, AF_ACTIVATE );
PL_DRAWING_TOOLS::PL_DRAWING_TOOLS() :
TOOL_INTERACTIVE( "plEditor.InteractiveDrawing" ),

View File

@ -36,6 +36,7 @@
#include <view/view.h>
#include <pl_editor_frame.h>
#include <pl_editor_id.h>
#include <wildcards_and_files_ext.h>
TOOL_ACTION PL_ACTIONS::move( "plEditor.InteractiveEdit.move",
@ -43,6 +44,12 @@ TOOL_ACTION PL_ACTIONS::move( "plEditor.InteractiveEdit.move",
_( "Move" ), _( "Moves the selected item(s)" ),
move_xpm, AF_ACTIVATE );
TOOL_ACTION PL_ACTIONS::appendImportedWorksheet( "plEditor.InteractiveEdit.appendWorksheet",
AS_GLOBAL, 0,
_( "Append Existing Page Layout File..." ),
_( "Append an existing page layout design file to current file" ),
import_xpm, AF_ACTIVATE );
TOOL_ACTION PL_ACTIONS::deleteItemCursor( "plEditor.InteractiveEdit.deleteTool",
AS_GLOBAL, 0,
_( "Delete Items" ), _( "Delete clicked items" ),
@ -304,6 +311,17 @@ bool PL_EDIT_TOOL::updateModificationPoint( SELECTION& aSelection )
}
int PL_EDIT_TOOL::ImportWorksheetContent( const TOOL_EVENT& aEvent )
{
wxCommandEvent evt( wxEVT_NULL, ID_APPEND_DESCR_FILE );
m_frame->Files_io( evt );
m_frame->SetNoToolSelected();
return 0;
}
int PL_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
{
SELECTION& selection = m_selectionTool->RequestSelection();
@ -387,11 +405,12 @@ int PL_EDIT_TOOL::Redo( const TOOL_EVENT& aEvent )
void PL_EDIT_TOOL::setTransitions()
{
Go( &PL_EDIT_TOOL::Main, PL_ACTIONS::move.MakeEvent() );
Go( &PL_EDIT_TOOL::Main, PL_ACTIONS::move.MakeEvent() );
Go( &PL_EDIT_TOOL::DoDelete, PL_ACTIONS::doDelete.MakeEvent() );
Go( &PL_EDIT_TOOL::DeleteItemCursor, PL_ACTIONS::deleteItemCursor.MakeEvent() );
Go( &PL_EDIT_TOOL::ImportWorksheetContent, PL_ACTIONS::appendImportedWorksheet.MakeEvent() );
Go( &PL_EDIT_TOOL::DoDelete, PL_ACTIONS::doDelete.MakeEvent() );
Go( &PL_EDIT_TOOL::DeleteItemCursor, PL_ACTIONS::deleteItemCursor.MakeEvent() );
Go( &PL_EDIT_TOOL::Undo, ACTIONS::undo.MakeEvent() );
Go( &PL_EDIT_TOOL::Redo, ACTIONS::redo.MakeEvent() );
Go( &PL_EDIT_TOOL::Undo, ACTIONS::undo.MakeEvent() );
Go( &PL_EDIT_TOOL::Redo, ACTIONS::redo.MakeEvent() );
}

View File

@ -50,6 +50,8 @@ public:
int Undo( const TOOL_EVENT& aEvent );
int Redo( const TOOL_EVENT& aEvent );
int ImportWorksheetContent( const TOOL_EVENT& aEvent );
/**
* Function DoDelete()
*

View File

@ -34,10 +34,10 @@
#include <tool/selection.h>
#include <tools/pl_actions.h>
#include <worksheet_dataitem.h>
#include <worksheet_painter.h>
#include <ws_draw_item.h>
#include <collector.h>
#include <properties_frame.h>
#include "pl_selection_tool.h"
/**
@ -743,6 +743,9 @@ int PL_SELECTION_TOOL::UpdateMessagePanel( const TOOL_EVENT& aEvent )
int PL_SELECTION_TOOL::ToggleBackgroundColor( const TOOL_EVENT& aEvent )
{
m_frame->SetDrawBgColor( m_frame->GetDrawBgColor() == WHITE ? BLACK : WHITE );
getView()->GetPainter()->GetSettings()->SetBackgroundColor( m_frame->GetDrawBgColor() );
m_frame->GetGalCanvas()->GetView()->UpdateAllLayersColor();
m_frame->GetCanvas()->Refresh();
return 0;