KiCad PCB EDA Suite
DIALOG_SVG_PRINT Class Reference
Inheritance diagram for DIALOG_SVG_PRINT:
DIALOG_SVG_PRINT_base DIALOG_SHIM KIWAY_HOLDER

Public Member Functions

 DIALOG_SVG_PRINT (wxTopLevelWindow *aParent, BOARD *aBoard, PCB_PLOT_PARAMS *aSettings)
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Protected Types

enum  { wxID_PRINT_BOARD = 1000 }
 

Protected Member Functions

void FinishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void FixOSXCancelButtonIssue ()
 A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms. More...
 

Protected Attributes

wxStaticText * m_staticTextDir
 
wxTextCtrl * m_outputDirectoryName
 
wxButton * m_browseButton
 
wxStaticText * m_staticTextCopperLayers
 
wxCheckListBox * m_CopperLayersList
 
wxStaticText * m_staticTextTechLayers
 
wxCheckListBox * m_TechnicalLayersList
 
wxStaticText * m_TextPenWidth
 
wxTextCtrl * m_DialogDefaultPenSize
 
wxRadioBox * m_ModeColorOption
 
wxRadioBox * m_rbSvgPageSizeOpt
 
wxCheckBox * m_PrintBoardEdgesCtrl
 
wxCheckBox * m_printMirrorOpt
 
wxRadioBox * m_rbFileOpt
 
wxButton * m_buttonCreateFile
 
wxButton * m_buttonQuit
 
WX_HTML_REPORT_PANELm_messagesPanel
 
std::string m_hash_key
 
EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Private Member Functions

void initDialog ()
 
void OnCloseWindow (wxCloseEvent &event) override
 
void OnButtonPlot (wxCommandEvent &event) override
 
void OnButtonCloseClick (wxCommandEvent &event) override
 
void OnOutputDirectoryBrowseClicked (wxCommandEvent &event) override
 
void SetPenWidth ()
 
void ExportSVGFile (bool aOnlyOneFile)
 
bool PageIsBoardBoundarySize ()
 
bool PrintPageRef ()
 
bool CreateSVGFile (const wxString &FullFileName, bool aOnlyOneFile)
 
LSET getCheckBoxSelectedLayers () const
 

Private Attributes

bool m_did_print
 
BOARDm_board
 
PCB_PLOT_PARAMSm_callers_params
 
wxConfigBase * m_config
 
LSET m_printMaskLayer
 
std::pair< wxCheckListBox *, int > m_boxSelectLayer [PCB_LAYER_ID_COUNT]
 
bool m_printBW
 
wxString m_outputDirectory
 
bool m_printMirror
 
bool m_oneFileOnly
 

Detailed Description

Definition at line 52 of file dialog_SVG_print.cpp.

Member Enumeration Documentation

anonymous enum
protectedinherited
Enumerator
wxID_PRINT_BOARD 

Definition at line 44 of file dialog_SVG_print_base.h.

Constructor & Destructor Documentation

DIALOG_SVG_PRINT::DIALOG_SVG_PRINT ( wxTopLevelWindow *  aParent,
BOARD aBoard,
PCB_PLOT_PARAMS aSettings 
)

Definition at line 116 of file dialog_SVG_print.cpp.

References initDialog(), Kiface(), KIFACE_I::KifaceSettings(), m_board, m_boxSelectLayer, and m_config.

116  :
117  DIALOG_SVG_PRINT_base( aParent ),
118  m_did_print( false ),
119  m_callers_params( aSettings )
120 {
121  m_board = aBoard;
123 
124  memset( m_boxSelectLayer, 0, sizeof( m_boxSelectLayer ) );
125 
126  initDialog();
127 
128  GetSizer()->Fit( this );
129  GetSizer()->SetSizeHints( this );
130  Centre();
131 }
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
Definition: kicad.cpp:52
wxConfigBase * KifaceSettings() const
Definition: kiface_i.h:103
PCB_PLOT_PARAMS * m_callers_params
DIALOG_SVG_PRINT_base(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Export SVG file"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(637, 454), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
wxConfigBase * m_config
std::pair< wxCheckListBox *, int > m_boxSelectLayer[PCB_LAYER_ID_COUNT]

Member Function Documentation

bool DIALOG_SVG_PRINT::CreateSVGFile ( const wxString &  FullFileName,
bool  aOnlyOneFile 
)
private

Definition at line 322 of file dialog_SVG_print.cpp.

References LSET::AllCuMask(), color, BOARD::ComputeBoundingBox(), SVG_PLOTTER::EndPlot(), PCB_PLOT_PARAMS::FULL_DRILL_SHAPE, BOARD::GetAuxOrigin(), EDA_RECT::GetHeight(), EDA_RECT::GetOrigin(), BOARD::GetPageSettings(), EDA_RECT::GetWidth(), m_board, m_printBW, m_printMaskLayer, m_printMirror, PCB_PLOT_PARAMS::NO_DRILL_SHAPE, PageIsBoardBoundarySize(), PLOT_FORMAT_SVG, PlotOneBoardLayer(), PlotStandardLayer(), PrintPageRef(), LSET::SeqStackupBottom2Top(), BOARD::SetAuxOrigin(), PLOTTER::SetColorMode(), PCB_PLOT_PARAMS::SetDrillMarksType(), PCB_PLOT_PARAMS::SetFormat(), PAGE_INFO::SetHeightMils(), PCB_PLOT_PARAMS::SetMirror(), BOARD::SetPageSettings(), PCB_PLOT_PARAMS::SetPlotFrameRef(), PCB_PLOT_PARAMS::SetReferenceColor(), PCB_PLOT_PARAMS::SetSkipPlotNPTH_Pads(), PCB_PLOT_PARAMS::SetUseAuxOrigin(), PCB_PLOT_PARAMS::SetValueColor(), PAGE_INFO::SetWidthMils(), StartPlotBoard(), and UNDEFINED_LAYER.

Referenced by ExportSVGFile().

323 {
324  PCB_PLOT_PARAMS plot_opts;
325 
326  plot_opts.SetPlotFrameRef( PrintPageRef() );
327 
328  // Adding drill marks, for copper layers
329  if( ( m_printMaskLayer & LSET::AllCuMask() ).any() )
331  else
333 
334  plot_opts.SetSkipPlotNPTH_Pads( false );
335 
336  plot_opts.SetMirror( m_printMirror );
337  plot_opts.SetFormat( PLOT_FORMAT_SVG );
338 
339  COLOR4D color = COLOR4D::UNSPECIFIED; // Used layer color to plot ref and value
340 
341  plot_opts.SetReferenceColor( color );
342  plot_opts.SetValueColor( color );
343 
344  PAGE_INFO pageInfo = m_board->GetPageSettings();
345  wxPoint axisorigin = m_board->GetAuxOrigin();
346 
348  {
350  PAGE_INFO currpageInfo = m_board->GetPageSettings();
351 
352  currpageInfo.SetWidthMils( bbox.GetWidth() / IU_PER_MILS );
353  currpageInfo.SetHeightMils( bbox.GetHeight() / IU_PER_MILS );
354  m_board->SetPageSettings( currpageInfo );
355  plot_opts.SetUseAuxOrigin( true );
356  wxPoint origin = bbox.GetOrigin();
357  m_board->SetAuxOrigin( origin );
358  }
359 
360  LOCALE_IO toggle;
361 
363  &plot_opts, UNDEFINED_LAYER, aFullFileName, wxEmptyString );
364 
365  if( plotter )
366  {
367  plotter->SetColorMode( !m_printBW );
368  if( aOnlyOneFile )
369  {
370  for( LSEQ seq = m_printMaskLayer.SeqStackupBottom2Top(); seq; ++seq )
371  PlotOneBoardLayer( m_board, plotter, *seq, plot_opts );
372  }
373  else
374  {
375  PlotStandardLayer( m_board, plotter, m_printMaskLayer, plot_opts );
376  }
377  plotter->EndPlot();
378  }
379 
380  delete plotter;
381 
382  m_board->SetAuxOrigin( axisorigin ); // reset to the values saved earlier
383  m_board->SetPageSettings( pageInfo );
384 
385  return true;
386 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Function AllCuMask returns a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:639
Class LOCALE_IO is a class that can be instantiated within a scope in which you are expecting excepti...
Definition: common.h:166
void SetUseAuxOrigin(bool aAux)
void SetReferenceColor(COLOR4D aVal)
EDA_RECT ComputeBoundingBox(bool aBoardEdgesOnly=false) const
Function ComputeBoundingBox calculates the bounding box containing all board items (or board edge seg...
void PlotOneBoardLayer(BOARD *aBoard, PLOTTER *aPlotter, PCB_LAYER_ID aLayer, const PCB_PLOT_PARAMS &aPlotOpt)
Function PlotOneBoardLayer main function to plot one copper or technical layer.
void SetPageSettings(const PAGE_INFO &aPageSettings)
Definition: class_board.h:549
void SetFormat(PlotFormat aFormat)
int GetHeight() const
void SetMirror(bool aFlag)
void SetDrillMarksType(DrillMarksType aVal)
void SetAuxOrigin(const wxPoint &aPoint)
Function SetAuxOrigin sets the origin point used for plotting.
Definition: class_board.h:334
LSEQ SeqStackupBottom2Top() const
Function SeqStackBottom2Top returns the sequence that is typical for a bottom-to-top stack-up...
Definition: lset.cpp:385
const wxPoint & GetOrigin() const
virtual bool EndPlot() override
void SetPlotFrameRef(bool aFlag)
Class PAGE_INFO describes the page size and margins of a paper page on which to eventually print or p...
void PlotStandardLayer(BOARD *aBoard, PLOTTER *aPlotter, LSET aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
Function PlotStandardLayer plot copper or technical layers.
void SetSkipPlotNPTH_Pads(bool aSkip)
Class PCB_PLOT_PARAMS handles plot parameters and options when plotting/printing a board...
void SetHeightMils(int aHeightInMils)
Class LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
const PAGE_INFO & GetPageSettings() const
Definition: class_board.h:548
const wxPoint & GetAuxOrigin() const
Definition: class_board.h:335
void SetValueColor(COLOR4D aVal)
void SetWidthMils(int aWidthInMils)
Class EDA_RECT handles the component boundary box.
int GetWidth() const
PLOTTER * StartPlotBoard(BOARD *aBoard, PCB_PLOT_PARAMS *aPlotOpts, int aLayer, const wxString &aFullFileName, const wxString &aSheetDesc)
Open a new plotfile using the options (and especially the format) specified in the options and prepar...
virtual void SetColorMode(bool _color_mode)
Definition: plot_common.h:116
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39
bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 182 of file dialog_shim.cpp.

Referenced by DIALOG_PRINT_USING_PRINTER::InitValues().

183 {
184  // so we can do logging of this state change:
185 
186 #if defined(DEBUG)
187  const char* type_id = typeid( *this ).name();
188  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
189 #endif
190 
191  return wxDialog::Enable( enable );
192 }
void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 540 of file dialog_shim.cpp.

References DIALOG_SHIM::IsQuasiModal(), DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, and DIALOG_SHIM::Show().

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCancelButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCancelButtonClick(), DIALOG_EDIT_ONE_FIELD::OnCancelClick(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCloseDialog(), DIALOG_EDIT_ONE_FIELD::OnCloseDialog(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCloseDialog(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_EDIT_ONE_FIELD::OnOkClick(), DIALOG_EXCHANGE_MODULE::OnQuit(), DIALOG_CHOOSE_COMPONENT::OnSchViewDClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), and DIALOG_SHIM::~DIALOG_SHIM().

541 {
542  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
543  // handle validation in the same way as other dialogs.
544  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
545  return;
546 
547  SetReturnCode( retCode );
548 
549  if( !IsQuasiModal() )
550  {
551  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
552  return;
553  }
554 
555  m_qmodal_showing = false;
556 
557  if( m_qmodal_loop )
558  {
559  if( m_qmodal_loop->IsRunning() )
560  m_qmodal_loop->Exit( 0 );
561  else
562  m_qmodal_loop->ScheduleExit( 0 );
563 
564  m_qmodal_loop = NULL;
565  }
566 
569 
570  Show( false );
571 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool IsQuasiModal()
Definition: dialog_shim.h:93
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
void DIALOG_SVG_PRINT::ExportSVGFile ( bool  aOnlyOneFile)
private

Definition at line 260 of file dialog_SVG_print.cpp.

References BuildPlotFileName(), CreateSVGFile(), DisplayError(), Edge_Cuts, EnsureFileDirectoryExists(), Format(), GetChars(), getCheckBoxSelectedLayers(), BOARD::GetFileName(), BOARD::GetStandardLayerName(), m_board, DIALOG_SVG_PRINT_base::m_messagesPanel, DIALOG_SVG_PRINT_base::m_ModeColorOption, m_outputDirectory, DIALOG_SVG_PRINT_base::m_outputDirectoryName, DIALOG_SVG_PRINT_base::m_PrintBoardEdgesCtrl, m_printBW, m_printMaskLayer, m_printMirror, DIALOG_SVG_PRINT_base::m_printMirrorOpt, REPORTER::Report(), WX_HTML_REPORT_PANEL::Reporter(), REPORTER::RPT_ACTION, REPORTER::RPT_ERROR, LSET::Seq(), SetPenWidth(), and SVGFileExtension.

Referenced by OnButtonPlot().

261 {
263 
264  // Create output directory if it does not exist (also transform it in
265  // absolute form). Bail if it fails
266  wxFileName outputDir = wxFileName::DirName( m_outputDirectory );
267  wxString boardFilename = m_board->GetFileName();
268 
269  REPORTER& reporter = m_messagesPanel->Reporter();
270 
271  if( !EnsureFileDirectoryExists( &outputDir, boardFilename, &reporter ) )
272  {
273  wxString msg = wxString::Format(
274  _( "Could not write plot files to folder '%s'." ),
275  GetChars( outputDir.GetPath() )
276  );
277  DisplayError( this, msg );
278  return;
279  }
280 
281  m_printMirror = m_printMirrorOpt->GetValue();
282  m_printBW = m_ModeColorOption->GetSelection();
283  SetPenWidth();
284 
285  LSET all_selected = getCheckBoxSelectedLayers();
286 
287  for( LSEQ seq = all_selected.Seq(); seq; ++seq )
288  {
289  PCB_LAYER_ID layer = *seq;
290 
291  wxFileName fn( boardFilename );
292 
293  wxString suffix = aOnlyOneFile ? wxT( "brd" ) : m_board->GetStandardLayerName( layer );
294 
295  BuildPlotFileName( &fn, outputDir.GetPath(), suffix, SVGFileExtension );
296 
297  m_printMaskLayer = aOnlyOneFile ? all_selected : LSET( layer );
298 
299  if( m_PrintBoardEdgesCtrl->IsChecked() )
300  m_printMaskLayer.set( Edge_Cuts );
301 
302  if( CreateSVGFile( fn.GetFullPath(), aOnlyOneFile ) )
303  {
304  reporter.Report (
305  wxString::Format( _( "Plot: '%s' OK." ), GetChars( fn.GetFullPath() ) ),
307  }
308  else // Error
309  {
310  reporter.Report (
311  wxString::Format( _( "Unable to create file '%s'." ), GetChars( fn.GetFullPath() ) ),
313  }
314 
315  if( aOnlyOneFile )
316  break;
317  }
318 }
Class REPORTER is a pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:61
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Function Seq returns an LSEQ from the union of this LSET and a desired sequence.
Definition: lset.cpp:337
LSET getCheckBoxSelectedLayers() const
PCB_LAYER_ID
A quick note on layer IDs:
Class LSET is a set of PCB_LAYER_IDs.
const wxString SVGFileExtension
const wxString & GetFileName() const
Definition: class_board.h:234
bool EnsureFileDirectoryExists(wxFileName *aTargetFullFileName, const wxString &aBaseFilename, REPORTER *aReporter)
Helper function EnsureFileDirectoryExists make aTargetFullFileName absolute and creates the path of t...
Definition: common.cpp:267
REPORTER & Reporter()
returns the reporter object that reports to this panel
WX_HTML_REPORT_PANEL * m_messagesPanel
Class LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
void BuildPlotFileName(wxFileName *aFilename, const wxString &aOutputDir, const wxString &aSuffix, const wxString &aExtension)
Function BuildPlotFileName (helper function) Complete a plot filename: forces the output directory...
Definition: pcbplot.cpp:389
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_UNDEFINED)=0
Function Report is a pure virtual function to override in the derived object.
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:71
bool CreateSVGFile(const wxString &FullFileName, bool aOnlyOneFile)
void DIALOG_SHIM::FinishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

FinishDialogSettings must be called from derived classes, when all widgets are initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at end of TransferDataToWindow, or better at end of a wxInitDialogEvent handler

In any case, the best way is to call it in a wxInitDialogEvent handler after calling TransfertDataToWindow(), which is the default wxInitDialogEvent handler wxDialog

Definition at line 104 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by COLOR4D_PICKER_DLG::COLOR4D_PICKER_DLG(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES(), DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR(), DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCH_EDIT_SHEET_PIN::DIALOG_SCH_EDIT_SHEET_PIN(), DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SELECT_PRETTY_LIB::DIALOG_SELECT_PRETTY_LIB(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_EDIT_ONE_FIELD::init(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_LIB_EDIT_PIN::OnInitDialog(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnInitDialog(), DIALOG_TRACK_VIA_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEMS_OPTIONS::OnInitDlg(), DialogEditModuleText::OnInitDlg(), DIALOG_SET_GRID::OnInitDlg(), DIALOG_PCB_TEXT_PROPERTIES::OnInitDlg(), DIALOG_PRINT_FOR_MODEDIT::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_MODULE_MODULE_EDITOR::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_MODULE_BOARD_EDITOR::OnInitDlg(), DIALOG_PRINT_USING_PRINTER::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR(), and DIALOG_SIGNAL_LIST::TransferDataToWindow().

105 {
106  // must be called from the constructor of derived classes,
107  // when all widgets are initialized, and therefore their size fixed
108 
109  // SetSizeHints fixes the minimal size of sizers in the dialog
110  // (SetSizeHints calls Fit(), so no need to call it)
111  GetSizer()->SetSizeHints( this );
112 
113  // the default position, when calling the first time the dlg
114  Center();
115 }
void DIALOG_SHIM::FixOSXCancelButtonIssue ( )
protectedinherited

A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.

Definition at line 117 of file dialog_shim.cpp.

Referenced by DIALOG_SHIM::Show().

118 {
119 #ifdef __WXMAC__
120  // A ugly hack to fix an issue on OSX: ctrl+c closes the dialog instead of
121  // copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer
122  // created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority
123  // to copy text standard accelerator, and the dlg is closed when trying to copy text
124  wxButton* button = dynamic_cast< wxButton* > ( wxWindow::FindWindowById( wxID_CANCEL, this ) );
125 
126  if( button )
127  button->SetLabel( _( "Cancel" ) );
128 #endif
129 }
LSET DIALOG_SVG_PRINT::getCheckBoxSelectedLayers ( ) const
private

Definition at line 190 of file dialog_SVG_print.cpp.

References DIM, and m_boxSelectLayer.

Referenced by ExportSVGFile().

191 {
192  LSET ret;
193 
194  for( unsigned layer = 0; layer < DIM(m_boxSelectLayer); ++layer )
195  {
196  if( !m_boxSelectLayer[layer].first )
197  continue;
198 
199  if( m_boxSelectLayer[layer].first->IsChecked( m_boxSelectLayer[layer].second ) )
200  ret.set( layer );
201  }
202 
203  return ret;
204 }
#define DIM(x)
of elements in an array
Definition: macros.h:98
Class LSET is a set of PCB_LAYER_IDs.
std::pair< wxCheckListBox *, int > m_boxSelectLayer[PCB_LAYER_ID_COUNT]
void DIALOG_SVG_PRINT::initDialog ( )
private

Definition at line 134 of file dialog_SVG_print.cpp.

References AddUnitSymbol(), g_DrawDefaultLineThickness, g_UserUnit, BOARD::GetEnabledLayers(), BOARD::GetLayerName(), PCB_PLOT_PARAMS::GetOutputDirectory(), IsCopperLayer(), m_board, m_boxSelectLayer, m_callers_params, m_config, DIALOG_SVG_PRINT_base::m_CopperLayersList, DIALOG_SVG_PRINT_base::m_DialogDefaultPenSize, DIALOG_SVG_PRINT_base::m_ModeColorOption, m_oneFileOnly, m_outputDirectory, DIALOG_SVG_PRINT_base::m_outputDirectoryName, DIALOG_SVG_PRINT_base::m_PrintBoardEdgesCtrl, m_printBW, m_printMirror, DIALOG_SVG_PRINT_base::m_printMirrorOpt, DIALOG_SVG_PRINT_base::m_rbFileOpt, DIALOG_SVG_PRINT_base::m_rbSvgPageSizeOpt, DIALOG_SVG_PRINT_base::m_TechnicalLayersList, DIALOG_SVG_PRINT_base::m_TextPenWidth, OPTKEY_LAYERBASE, PLOTSVGMODECOLOR_KEY, PLOTSVGMODEMIRROR_KEY, PLOTSVGMODEONEFILE_KEY, PLOTSVGPAGESIZEOPT_KEY, PLOTSVGPLOT_BRD_EDGE_KEY, StringFromValue(), and LSET::UIOrder().

Referenced by DIALOG_SVG_PRINT().

135 {
136  if( m_config )
137  {
138  m_config->Read( PLOTSVGMODECOLOR_KEY, &m_printBW, false );
139  long ltmp;
140  m_config->Read( PLOTSVGPAGESIZEOPT_KEY, &ltmp, 0 );
141  m_config->Read( PLOTSVGMODEMIRROR_KEY, &m_printMirror, false );
143  m_rbSvgPageSizeOpt->SetSelection( ltmp );
144  m_config->Read( PLOTSVGPLOT_BRD_EDGE_KEY, &ltmp, 1 );
145  m_PrintBoardEdgesCtrl->SetValue( ltmp );
146  }
147 
150 
151  m_ModeColorOption->SetSelection( m_printBW ? 1 : 0 );
152  m_printMirrorOpt->SetValue( m_printMirror );
153  m_rbFileOpt->SetSelection( m_oneFileOnly ? 1 : 0 );
154 
156 
158 
160 
161  for( ; seq; ++seq )
162  {
163  PCB_LAYER_ID layer = *seq;
164  int checkIndex;
165 
166  if( IsCopperLayer( layer ) )
167  {
168  checkIndex = m_CopperLayersList->Append( m_board->GetLayerName( layer ) );
169  m_boxSelectLayer[layer] = std::make_pair( m_CopperLayersList, checkIndex );
170  }
171  else
172  {
173  checkIndex = m_TechnicalLayersList->Append( m_board->GetLayerName( layer ) );
174  m_boxSelectLayer[layer] = std::make_pair( m_TechnicalLayersList, checkIndex );
175  }
176 
177  if( m_config )
178  {
179  wxString layerKey;
180  layerKey.Printf( OPTKEY_LAYERBASE, layer );
181  bool option;
182 
183  if( m_config && m_config->Read( layerKey, &option ) )
184  m_boxSelectLayer[layer].first->Check( checkIndex, option );
185  }
186  }
187 }
#define OPTKEY_LAYERBASE
Definition: pcbplot.h:52
wxString StringFromValue(EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol)
Function StringFromValue returns the string from aValue according to units (inch, mm ...
Definition: base_units.cpp:203
LSET GetEnabledLayers() const
Function GetEnabledLayers is a proxy function that calls the corresponding function in m_BoardSetting...
#define PLOTSVGPAGESIZEOPT_KEY
wxString GetOutputDirectory() const
PCB_LAYER_ID
A quick note on layer IDs:
wxCheckListBox * m_CopperLayersList
wxCheckListBox * m_TechnicalLayersList
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
int g_DrawDefaultLineThickness
Default line thickness in internal units used to draw or plot items using a default thickness line va...
Class LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
PCB_PLOT_PARAMS * m_callers_params
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:56
void AddUnitSymbol(wxStaticText &Stext, EDA_UNITS_T aUnit)
Definition: base_units.cpp:509
#define PLOTSVGMODEONEFILE_KEY
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
#define PLOTSVGPLOT_BRD_EDGE_KEY
wxConfigBase * m_config
#define PLOTSVGMODECOLOR_KEY
std::pair< wxCheckListBox *, int > m_boxSelectLayer[PCB_LAYER_ID_COUNT]
LSEQ UIOrder() const
Definition: lset.cpp:752
#define PLOTSVGMODEMIRROR_KEY
KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 60 of file kiway_player.h.

References KIWAY_HOLDER::m_kiway.

Referenced by SCH_EDIT_FRAME::AppendOneEEProject(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), CVPCB_MAINFRAME::CreateScreenCmp(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_SHIM::DIALOG_SHIM(), EDIT_TOOL::editFootprintInFpEditor(), SCH_EDIT_FRAME::EditSheet(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::initBuffers(), LIB_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallModuleOptionsFrame(), KIWAY_PLAYER::language_change(), SCH_SHEET::Load(), CVPCB_MAINFRAME::LoadFootprintFiles(), KIWAY_PLAYER::OnChangeIconsOptions(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnLeftClick(), SCH_BASE_FRAME::OnOpenLibraryViewer(), SCH_EDIT_FRAME::OnSimulate(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateReplaceModuleInBoard(), SCH_EDIT_FRAME::OpenProjectFiles(), KIWAY_HOLDER::Prj(), PCB_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDIT_FRAME::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame(), FOOTPRINT_VIEWER_FRAME::Show3D_Frame(), FOOTPRINT_EDIT_FRAME::Show3D_Frame(), FOOTPRINT_WIZARD_FRAME::Show3D_Frame(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::showButtonHandler(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::showButtonHandler(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), and DIALOG_EXCHANGE_MODULE::ViewAndSelectFootprint().

61  {
62  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
63  return *m_kiway;
64  }
KIWAY * m_kiway
Definition: kiway_player.h:85
void DIALOG_SVG_PRINT::OnButtonCloseClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SVG_PRINT_base.

Definition at line 398 of file dialog_SVG_print.cpp.

399 {
400  Close();
401 }
void DIALOG_SVG_PRINT::OnButtonPlot ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SVG_PRINT_base.

Definition at line 389 of file dialog_SVG_print.cpp.

References ExportSVGFile(), m_did_print, m_oneFileOnly, and DIALOG_SVG_PRINT_base::m_rbFileOpt.

390 {
391  m_oneFileOnly = m_rbFileOpt->GetSelection() == 1;
393 
394  m_did_print = true;
395 }
void ExportSVGFile(bool aOnlyOneFile)
void DIALOG_SVG_PRINT::OnCloseWindow ( wxCloseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SVG_PRINT_base.

Definition at line 404 of file dialog_SVG_print.cpp.

References DIM, m_boxSelectLayer, m_callers_params, m_config, m_did_print, DIALOG_SVG_PRINT_base::m_ModeColorOption, m_oneFileOnly, DIALOG_SVG_PRINT_base::m_outputDirectoryName, DIALOG_SVG_PRINT_base::m_PrintBoardEdgesCtrl, m_printBW, m_printMirror, DIALOG_SVG_PRINT_base::m_rbFileOpt, DIALOG_SVG_PRINT_base::m_rbSvgPageSizeOpt, OPTKEY_LAYERBASE, PLOTSVGMODECOLOR_KEY, PLOTSVGMODEMIRROR_KEY, PLOTSVGMODEONEFILE_KEY, PLOTSVGPAGESIZEOPT_KEY, PLOTSVGPLOT_BRD_EDGE_KEY, PCB_PLOT_PARAMS::SetOutputDirectory(), and SetPenWidth().

405 {
406  if( m_did_print ) // unless output was created, this is tantamount to a cancel.
407  {
408  SetPenWidth();
409  m_printBW = m_ModeColorOption->GetSelection();
410  m_oneFileOnly = m_rbFileOpt->GetSelection() == 1;
411 
412  // Why are SVG layer choices co-mingled with other plot layer choices in the config file?
413  // The string OPTKEY_LAYERBASE is used in multiple places.
414  // fix this.
415 
416  wxString dirStr = m_outputDirectoryName->GetValue();
417  dirStr.Replace( wxT( "\\" ), wxT( "/" ) );
418 
420 
421  if( m_config )
422  {
426  m_config->Write( PLOTSVGPAGESIZEOPT_KEY, m_rbSvgPageSizeOpt->GetSelection() );
428 
429  wxString layerKey;
430 
431  for( unsigned layer = 0; layer < DIM(m_boxSelectLayer); ++layer )
432  {
433  if( !m_boxSelectLayer[layer].first )
434  continue;
435 
436  layerKey.Printf( OPTKEY_LAYERBASE, layer );
437  m_config->Write( layerKey,
438  m_boxSelectLayer[layer].first->IsChecked( m_boxSelectLayer[layer].second ) );
439  }
440  }
441  }
442 
443  EndModal( m_did_print ? wxID_OK : wxID_CANCEL );
444 }
#define DIM(x)
of elements in an array
Definition: macros.h:98
#define OPTKEY_LAYERBASE
Definition: pcbplot.h:52
#define PLOTSVGPAGESIZEOPT_KEY
void SetOutputDirectory(wxString aDir)
PCB_PLOT_PARAMS * m_callers_params
#define PLOTSVGMODEONEFILE_KEY
#define PLOTSVGPLOT_BRD_EDGE_KEY
wxConfigBase * m_config
#define PLOTSVGMODECOLOR_KEY
std::pair< wxCheckListBox *, int > m_boxSelectLayer[PCB_LAYER_ID_COUNT]
#define PLOTSVGMODEMIRROR_KEY
void DIALOG_SVG_PRINT::OnOutputDirectoryBrowseClicked ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SVG_PRINT_base.

Definition at line 207 of file dialog_SVG_print.cpp.

References PROJECT::AbsolutePath(), BOARD::GetFileName(), m_board, m_outputDirectory, DIALOG_SVG_PRINT_base::m_outputDirectoryName, and KIWAY_HOLDER::Prj().

208 {
209  // Build the absolute path of current output plot directory
210  // to preselect it when opening the dialog.
211  wxFileName fn( m_outputDirectoryName->GetValue() );
212  wxString path = Prj().AbsolutePath( m_outputDirectoryName->GetValue() );
213 
214  wxDirDialog dirDialog( this, _( "Select Output Directory" ), path );
215 
216  if( dirDialog.ShowModal() == wxID_CANCEL )
217  return;
218 
219  wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
220 
221  wxMessageDialog dialog( this, _( "Use a relative path?" ),
222  _( "Plot Output Directory" ),
223  wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
224 
225  if( dialog.ShowModal() == wxID_YES )
226  {
227  wxString boardFilePath = Prj().AbsolutePath( m_board->GetFileName() );
228 
229  boardFilePath = wxPathOnly( boardFilePath );
230 
231  if( !dirName.MakeRelativeTo( boardFilePath ) )
232  wxMessageBox( _( "Cannot make path relative (target volume different from board file volume)!" ),
233  _( "Plot Output Directory" ), wxOK | wxICON_ERROR );
234  }
235 
236  m_outputDirectoryName->SetValue( dirName.GetFullPath() );
238 }
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
const wxString & GetFileName() const
Definition: class_board.h:234
VTBL_ENTRY const wxString AbsolutePath(const wxString &aFileName) const
Function AbsolutePath fixes up aFileName if it is relative to the project's directory to be an absolu...
Definition: project.cpp:371
bool DIALOG_SVG_PRINT::PageIsBoardBoundarySize ( )
inlineprivate

Definition at line 82 of file dialog_SVG_print.cpp.

References DIALOG_SVG_PRINT_base::m_rbSvgPageSizeOpt.

Referenced by CreateSVGFile().

83  {
84  return m_rbSvgPageSizeOpt->GetSelection() == 2;
85  }
bool DIALOG_SVG_PRINT::PrintPageRef ( )
inlineprivate

Definition at line 87 of file dialog_SVG_print.cpp.

References DIALOG_SVG_PRINT_base::m_rbSvgPageSizeOpt.

Referenced by CreateSVGFile().

88  {
89  return m_rbSvgPageSizeOpt->GetSelection() == 0;
90  }
PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Function Prj returns a reference to the PROJECT "associated with" this KIWAY.

Definition at line 34 of file kiway_holder.cpp.

References KIWAY_HOLDER::Kiway(), and KIWAY::Prj().

Referenced by SCH_EDIT_FRAME::AnnotateComponents(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), SCH_EDIT_FRAME::backAnnotateFootprints(), LIB_VIEW_FRAME::BestZoom(), DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile(), DIALOG_EXCHANGE_MODULE::BrowseAndSelectFootprint(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_MODULE_MODULE_EDITOR::Cfg3DPath(), DIALOG_MODULE_BOARD_EDITOR::Cfg3DPath(), SCH_EDIT_FRAME::CheckAnnotate(), SCH_SCREEN::CheckComponentsToPartsLinks(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), SCH_EDIT_FRAME::CreateArchiveLibrary(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary(), LIB_EDIT_FRAME::DeleteOnePart(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EESCHEMA_CONFIG::DIALOG_EESCHEMA_CONFIG(), DIALOG_FP_LIB_TABLE::DIALOG_FP_LIB_TABLE(), DIALOG_MODULE_BOARD_EDITOR::DIALOG_MODULE_BOARD_EDITOR(), DIALOG_MODULE_MODULE_EDITOR::DIALOG_MODULE_MODULE_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), LIB_VIEW_FRAME::DisplayLibInfos(), SCH_BASE_FRAME::DisplayListComponentsInLib(), PCB_EDIT_FRAME::doAutoSave(), DIALOG_MODULE_MODULE_EDITOR::Edit3DShapeFileName(), DIALOG_MODULE_BOARD_EDITOR::Edit3DShapeFileName(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditSheet(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), NETLIST_DIALOG::GenNetlist(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), LIB_EDIT_FRAME::GetCurPart(), FOOTPRINT_EDIT_FRAME::GetCurrentLib(), FOOTPRINT_EDIT_FRAME::getLibPath(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DIALOG_BOM::getPluginFileName(), LIB_VIEW_FRAME::getSelectedAlias(), FP_THREAD_IFACE::GetTable(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), LIB_EDIT_FRAME::InstallConfigFrame(), SCH_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallNetlistFrame(), SCH_EDIT_FRAME::IsSearchCacheObsolete(), SCH_EDIT_FRAME::Load_Component(), SCH_EDIT_FRAME::LoadCmpToFootprintLinkFile(), DIALOG_BOM_EDITOR::LoadComponents(), CVPCB_MAINFRAME::LoadFootprintFiles(), SCH_EDIT_FRAME::LoadOneEEFile(), LIB_EDIT_FRAME::LoadOneLibraryPart(), LIB_EDIT_FRAME::LoadOneSymbol(), CVPCB_MAINFRAME::LoadProjectFile(), SCH_EDIT_FRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DIALOG_DRC_CONTROL::makeValidFileNameReport(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertPath(), DIALOG_DRC_CONTROL::OnButtonBrowseRptFileClick(), LIB_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), DIALOG_GENDRILL::OnGenReportFile(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), PCB_EDIT_FRAME::OnLeftClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_NETLIST::OnOpenNetlistClick(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_MODULE_POSITION::OnOutputDirectoryBrowseClicked(), LIB_EDIT_FRAME::OnPlotCurrentComponent(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OnRightClick(), DIALOG_BOM::OnRunPlugin(), DIALOG_NETLIST::OnSaveMessagesToFile(), SCH_EDIT_FRAME::OnSaveProject(), DIALOG_SPICE_MODEL::onSelectIcLib(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OnSelectUnit(), DIALOG_SPICE_MODEL::onSemiSelectLib(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnTestChipName(), FOOTPRINT_EDIT_FRAME::OnUpdateSelectCurrentLib(), LIB_EDIT_FRAME::OnViewEntryDoc(), LIB_VIEW_FRAME::onViewSymbolDocument(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_EDITOR_CONTROL::PlaceModule(), SCH_EDIT_FRAME::prepareForNetlist(), SCH_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Config(), SCH_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), LIB_VIEW_FRAME::RedrawActiveWindow(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDIT_FRAME::RescueProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_SCREEN::Save(), LIB_EDIT_FRAME::SaveActiveLibrary(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectComponentFromLibrary(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), EDA_3D_VIEWER::takeScreenshot(), DIALOG_ERC::TestErc(), DIALOG_SPICE_MODEL::updateFromFile(), SIM_PLOT_FRAME::updateNetlistExporter(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), CVPCB_MAINFRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR(), and DIALOG_MODULE_MODULE_EDITOR::~DIALOG_MODULE_MODULE_EDITOR().

35 {
36  return Kiway().Prj();
37 }
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_player.h:60
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:144
void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

Function SetKiway.

Parameters
aDestis the recipient of aKiway pointer. It is only used for debugging, since "this" is not a wxWindow*. "this" is a KIWAY_HOLDER mix-in.
aKiwayis often from a parent window, or from KIFACE::CreateWindow().

Definition at line 41 of file kiway_holder.cpp.

References KIWAY_HOLDER::m_kiway, and name.

Referenced by DIALOG_SHIM::DIALOG_SHIM(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

42 {
43 #if defined(DEBUG)
44  // offer a trap point for debugging most any window
45  wxASSERT( aDest );
46  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
47  {
48  int breakhere=1;
49  (void) breakhere;
50  }
51 #endif
52 
53  (void) aDest;
54 
55  m_kiway = aKiway;
56 }
KIWAY * m_kiway
Definition: kiway_player.h:85
const char * name
void DIALOG_SVG_PRINT::SetPenWidth ( )
private

Definition at line 241 of file dialog_SVG_print.cpp.

References g_DrawDefaultLineThickness, g_UserUnit, DIALOG_SVG_PRINT_base::m_DialogDefaultPenSize, StringFromValue(), ValueFromTextCtrl(), WIDTH_MAX_VALUE, and WIDTH_MIN_VALUE.

Referenced by ExportSVGFile(), and OnCloseWindow().

242 {
243  int pensize = ValueFromTextCtrl( *m_DialogDefaultPenSize );
244 
245  if( pensize > WIDTH_MAX_VALUE )
246  {
247  pensize = WIDTH_MAX_VALUE;
248  }
249 
250  if( pensize < WIDTH_MIN_VALUE )
251  {
252  pensize = WIDTH_MIN_VALUE;
253  }
254 
255  g_DrawDefaultLineThickness = pensize;
256  m_DialogDefaultPenSize->SetValue( StringFromValue( g_UserUnit, pensize ) );
257 }
wxString StringFromValue(EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol)
Function StringFromValue returns the string from aValue according to units (inch, mm ...
Definition: base_units.cpp:203
int g_DrawDefaultLineThickness
Default line thickness in internal units used to draw or plot items using a default thickness line va...
int ValueFromTextCtrl(const wxTextCtrl &aTextCtr)
Convert the number Value in a string according to the internal units and the selected unit (g_UserUni...
Definition: base_units.cpp:384
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:56
#define WIDTH_MIN_VALUE
#define WIDTH_MAX_VALUE
bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 139 of file dialog_shim.cpp.

References class_map, DIALOG_SHIM::FixOSXCancelButtonIssue(), EDA_RECT::GetPosition(), EDA_RECT::GetSize(), DIALOG_SHIM::m_hash_key, wxPoint::x, and wxPoint::y.

Referenced by DisplayHotkeyList(), DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), DIALOG_ANNOTATE::OnApplyClick(), DIALOG_SCH_FIND::OnCancel(), DIALOG_ANNOTATE::OnCancelClick(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), DIALOG_DRC_CONTROL::OnPopupMenu(), DIALOG_EXCHANGE_MODULE::OnQuit(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), and DIALOG_SHIM::ShowQuasiModal().

140 {
141  bool ret;
142  const char* hash_key;
143 
144  if( m_hash_key.size() )
145  {
146  // a special case like EDA_LIST_DIALOG, which has multiple uses.
147  hash_key = m_hash_key.c_str();
148  }
149  else
150  {
151  hash_key = typeid(*this).name();
152  }
153 
154  // Show or hide the window. If hiding, save current position and size.
155  // If showing, use previous position and size.
156  if( show )
157  {
158  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
159  ret = wxDialog::Show( show );
160 
161  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
162  EDA_RECT r = class_map[ hash_key ];
163 
164  if( r.GetSize().x != 0 && r.GetSize().y != 0 )
165  SetSize( r.GetPosition().x, r.GetPosition().y, r.GetSize().x, r.GetSize().y, 0 );
166  }
167  else
168  {
169  // Save the dialog's position & size before hiding, using classname as key
170  EDA_RECT r( wxDialog::GetPosition(), wxDialog::GetSize() );
171  class_map[ hash_key ] = r;
172 
173  ret = wxDialog::Show( show );
174  }
175 
177 
178  return ret;
179 }
std::string m_hash_key
Definition: dialog_shim.h:128
void FixOSXCancelButtonIssue()
A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.
static RECT_MAP class_map
const wxPoint & GetPosition() const
Class EDA_RECT handles the component boundary box.
const wxSize & GetSize() const
int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 495 of file dialog_shim.cpp.

References DBG, DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, and DIALOG_SHIM::Show().

Referenced by LIB_EDIT_FRAME::DeleteOnePart(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditField(), EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), LIB_EDIT_FRAME::InstallFieldsEditorDialog(), InvokeDialogCreateBOMEditor(), LIB_VIEW_FRAME::OnSelectSymbol(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

496 {
497  // This is an exception safe way to zero a pointer before returning.
498  // Yes, even though DismissModal() clears this first normally, this is
499  // here in case there's an exception before the dialog is dismissed.
500  struct NULLER
501  {
502  void*& m_what;
503  NULLER( void*& aPtr ) : m_what( aPtr ) {}
504  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
505  } clear_this( (void*&) m_qmodal_loop );
506 
507  // release the mouse if it's currently captured as the window having it
508  // will be disabled when this dialog is shown -- but will still keep the
509  // capture making it impossible to do anything in the modal dialog itself
510  wxWindow* win = wxWindow::GetCapture();
511  if( win )
512  win->ReleaseMouse();
513 
514  // Get the optimal parent
515  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
516 
517  // Show the optimal parent
518  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
519 
520  wxASSERT_MSG( !m_qmodal_parent_disabler,
521  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
522 
523  // quasi-modal: disable only my "optimal" parent
525 
526  Show( true );
527 
528  m_qmodal_showing = true;
529 
530  EVENT_LOOP event_loop;
531 
532  m_qmodal_loop = &event_loop;
533 
534  event_loop.Run();
535 
536  return GetReturnCode();
537 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:33
#define DBG(x)
Definition: fctsys.h:33

Member Data Documentation

BOARD* DIALOG_SVG_PRINT::m_board
private
std::pair<wxCheckListBox*, int> DIALOG_SVG_PRINT::m_boxSelectLayer[PCB_LAYER_ID_COUNT]
private
wxButton* DIALOG_SVG_PRINT_base::m_browseButton
protectedinherited
wxButton* DIALOG_SVG_PRINT_base::m_buttonCreateFile
protectedinherited
wxButton* DIALOG_SVG_PRINT_base::m_buttonQuit
protectedinherited
PCB_PLOT_PARAMS* DIALOG_SVG_PRINT::m_callers_params
private

Definition at line 60 of file dialog_SVG_print.cpp.

Referenced by initDialog(), and OnCloseWindow().

wxConfigBase* DIALOG_SVG_PRINT::m_config
private

Definition at line 61 of file dialog_SVG_print.cpp.

Referenced by DIALOG_SVG_PRINT(), initDialog(), and OnCloseWindow().

wxCheckListBox* DIALOG_SVG_PRINT_base::m_CopperLayersList
protectedinherited
wxTextCtrl* DIALOG_SVG_PRINT_base::m_DialogDefaultPenSize
protectedinherited
bool DIALOG_SVG_PRINT::m_did_print
private

Definition at line 58 of file dialog_SVG_print.cpp.

Referenced by OnButtonPlot(), and OnCloseWindow().

std::string DIALOG_SHIM::m_hash_key
protectedinherited
WX_HTML_REPORT_PANEL* DIALOG_SVG_PRINT_base::m_messagesPanel
protectedinherited
wxRadioBox* DIALOG_SVG_PRINT_base::m_ModeColorOption
protectedinherited
bool DIALOG_SVG_PRINT::m_oneFileOnly
private

Definition at line 69 of file dialog_SVG_print.cpp.

Referenced by initDialog(), OnButtonPlot(), and OnCloseWindow().

wxString DIALOG_SVG_PRINT::m_outputDirectory
private

Definition at line 67 of file dialog_SVG_print.cpp.

Referenced by ExportSVGFile(), initDialog(), and OnOutputDirectoryBrowseClicked().

wxTextCtrl* DIALOG_SVG_PRINT_base::m_outputDirectoryName
protectedinherited
wxCheckBox* DIALOG_SVG_PRINT_base::m_PrintBoardEdgesCtrl
protectedinherited
bool DIALOG_SVG_PRINT::m_printBW
private

Definition at line 66 of file dialog_SVG_print.cpp.

Referenced by CreateSVGFile(), ExportSVGFile(), initDialog(), and OnCloseWindow().

LSET DIALOG_SVG_PRINT::m_printMaskLayer
private

Definition at line 62 of file dialog_SVG_print.cpp.

Referenced by CreateSVGFile(), and ExportSVGFile().

bool DIALOG_SVG_PRINT::m_printMirror
private

Definition at line 68 of file dialog_SVG_print.cpp.

Referenced by CreateSVGFile(), ExportSVGFile(), initDialog(), and OnCloseWindow().

wxCheckBox* DIALOG_SVG_PRINT_base::m_printMirrorOpt
protectedinherited
EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 131 of file dialog_shim.h.

Referenced by DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited
bool DIALOG_SHIM::m_qmodal_showing
protectedinherited
wxRadioBox* DIALOG_SVG_PRINT_base::m_rbFileOpt
protectedinherited
wxRadioBox* DIALOG_SVG_PRINT_base::m_rbSvgPageSizeOpt
protectedinherited
wxStaticText* DIALOG_SVG_PRINT_base::m_staticTextCopperLayers
protectedinherited
wxStaticText* DIALOG_SVG_PRINT_base::m_staticTextDir
protectedinherited
wxStaticText* DIALOG_SVG_PRINT_base::m_staticTextTechLayers
protectedinherited
wxCheckListBox* DIALOG_SVG_PRINT_base::m_TechnicalLayersList
protectedinherited
wxStaticText* DIALOG_SVG_PRINT_base::m_TextPenWidth
protectedinherited

The documentation for this class was generated from the following file: