68 m_editFrame( aEditFrame ),
71 m_defaultLineWidth( aEditFrame, m_lineWidthLabel, m_lineWidthCtrl, m_lineWidthUnits ),
72 m_penWidth( aEditFrame, m_penWidthLabel, m_penWidthCtrl, m_penWidthUnits ), m_job( aJob )
81 { wxID_APPLY,
_(
"Plot Current Page" ) },
82 { wxID_CANCEL,
_(
"Close" ) } } );
122 static_cast<void*
>( settings ) );
124 if( settings->GetFilename() == cfg->m_PlotPanel.color_theme )
166 if( fmt == PLOT_FORMAT::DXF || fmt == PLOT_FORMAT::HPGL )
183 path.Replace(
'/',
'\\' );
191 int idx =
m_colorTheme->Append( settings->GetName(),
static_cast<void*
>( settings ) );
243 if(
Prj().IsNullProject() )
254 wxDirDialog dirDialog(
this,
_(
"Select Output Directory" ),
path );
256 if( dirDialog.ShowModal() == wxID_CANCEL )
259 wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
262 wxString defaultPath = fn.GetPathWithSep();
264 wxFileName relPathTest;
266 relPathTest.Assign( dirDialog.GetPath() );
269 if( relPathTest.MakeRelativeTo( defaultPath ) )
271 msg.Printf(
_(
"Do you want to use a path relative to\n'%s'?" ), defaultPath );
273 wxMessageDialog dialog(
this, msg,
_(
"Plot Output Directory" ),
274 wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
276 if( dialog.ShowModal() == wxID_YES )
277 dirName.MakeRelativeTo( defaultPath );
289 case 0:
return PLOT_FORMAT::POST;
290 case 1:
return PLOT_FORMAT::PDF;
291 case 2:
return PLOT_FORMAT::SVG;
292 case 3:
return PLOT_FORMAT::DXF;
293 case 4:
return PLOT_FORMAT::HPGL;
315 wxArrayString paperSizes;
316 paperSizes.push_back(
_(
"Schematic size" ) );
320 if( fmt == PLOT_FORMAT::HPGL )
322 paperSizes.push_back(
_(
"A5" ) );
323 paperSizes.push_back(
_(
"A4" ) );
324 paperSizes.push_back(
_(
"A3" ) );
325 paperSizes.push_back(
_(
"A2" ) );
326 paperSizes.push_back(
_(
"A1" ) );
327 paperSizes.push_back(
_(
"A0" ) );
328 paperSizes.push_back(
_(
"A" ) );
329 paperSizes.push_back(
_(
"B" ) );
330 paperSizes.push_back(
_(
"C" ) );
331 paperSizes.push_back(
_(
"D" ) );
332 paperSizes.push_back(
_(
"E" ) );
338 paperSizes.push_back(
_(
"A4" ) );
339 paperSizes.push_back(
_(
"A" ) );
353 fmt == PLOT_FORMAT::POST || fmt == PLOT_FORMAT::PDF || fmt == PLOT_FORMAT::SVG );
360 fmt == PLOT_FORMAT::POST || fmt == PLOT_FORMAT::PDF || fmt == PLOT_FORMAT::SVG );
407 path.Replace(
'\\',
'/' );
480 std::unique_ptr<SCH_PLOTTER> schPlotter = std::make_unique<SCH_PLOTTER>(
m_editFrame );
503 wxLaunchDefaultApplication( schPlotter->GetLastOutputFilePath() );
516 std::function<bool( wxString* )> textResolver =
517 [&]( wxString* token ) ->
bool
530 if( fn.IsAbsolute() )
535 if(
Prj().IsNullProject() )
542 msg.Printf(
_(
"Cannot normalize path '%s%s'." ), fn.GetPathWithSep(),
path );
543 fn.SetPath( fn.GetPathWithSep() +
path );
547 fn.SetName( wxEmptyString );
548 fn.SetExt( wxEmptyString );
556 wxMessageDialog dlg(
this, msg,
_(
"Warning" ), wxOK | wxCENTER | wxRESIZE_BORDER
557 | wxICON_EXCLAMATION | wxSTAY_ON_TOP );
559 dlg.SetExtendedMessage( extMsg );
567 msg =
_(
"No project or path defined for the current schematic." );
569 wxMessageDialog dlg(
this, msg,
_(
"Warning" ), wxOK | wxCENTER | wxRESIZE_BORDER
570 | wxICON_EXCLAMATION | wxSTAY_ON_TOP );
571 dlg.SetExtendedMessage( extMsg );
580 msg.Printf(
_(
"Cannot normalize path '%s%s'." ),
Prj().GetProjectPath(),
path );
583 fn.SetPath(
Prj().GetProjectPath() +
path );
591 wxMessageDialog dlg(
this, msg,
_(
"Warning" ),
592 wxOK | wxCENTER | wxRESIZE_BORDER | wxICON_EXCLAMATION |
595 dlg.SetExtendedMessage( extMsg );
constexpr EDA_IU_SCALE schIUScale
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap)
Color settings are a bit different than most of the settings objects in that there can be more than o...
static const wxString COLOR_BUILTIN_DEFAULT
COLOR4D GetColor(int aLayer) const
const wxString & GetName() const
Class DIALOG_PLOT_SCHEMATIC_BASE.
wxStaticText * m_outputPathLabel
wxRadioBox * m_plotFormatOpt
wxCheckBox * m_plotPDFMetadata
wxChoice * m_ModeColorOption
wxStaticText * m_plotOriginTitle
STD_BITMAP_BUTTON * m_browseButton
wxCheckBox * m_plotDrawingSheet
wxCheckBox * m_plotPDFPropertyPopups
WX_HTML_REPORT_PANEL * m_MessagesBox
wxCheckBox * m_plotPDFHierarchicalLinks
wxChoice * m_paperSizeOption
wxChoice * m_plotOriginOpt
wxCheckBox * m_openFileAfterPlot
wxButton * m_sdbSizer1Apply
wxCheckBox * m_plotBackgroundColor
wxTextCtrl * m_outputPath
UNIT_BINDER m_defaultLineWidth
void OnPageSizeSelected(wxCommandEvent &event) override
void OnPlotAll(wxCommandEvent &event) override
bool getOpenFileAfterPlot()
static HPGL_PAGE_SIZE m_HPGLPaperSizeSelect
PLOT_FORMAT GetPlotFileFormat()
static int m_pageSizeSelect
void setOpenFileAfterPlot(bool aOpen)
void OnPlotCurrent(wxCommandEvent &event) override
void setModeColor(bool aColor)
bool getPlotDrawingSheet()
void setPlotDrawingSheet(bool aPlot)
JOB_EXPORT_SCH_PLOT * m_job
SCH_EDIT_FRAME * m_editFrame
void getPlotOptions(RENDER_SETTINGS *aSettings)
COLOR_SETTINGS * getColorSettings()
void plotSchematic(bool aPlotAll)
void onOutputDirectoryBrowseClicked(wxCommandEvent &event) override
Set the m_outputDirectoryName variable to the selected directory from directory dialog.
void OnUpdateUI(wxUpdateUIEvent &event) override
DIALOG_PLOT_SCHEMATIC(SCH_EDIT_FRAME *aEditFrame)
wxString getOutputPath()
Determine the best absolute path to plot files given the contents of the path edit control.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
SETTINGS_MANAGER * GetSettingsManager() const
JOB_PAGE_SIZE m_pageSizeSelect
SCH_PLOT_FORMAT m_plotFormat
bool m_useBackgroundColor
bool m_PDFHierarchicalLinks
JOB_HPGL_PLOT_ORIGIN_AND_UNITS m_HPGLPlotOrigin
JOB_HPGL_PAGE_SIZE m_HPGLPaperSizeSelect
void SetConfiguredOutputPath(const wxString &aPath)
Sets the configured output path for the job, this path is always saved to file.
virtual wxString GetSettingsDialogTitle() const
wxString GetConfiguredOutputPath() const
Returns the configured output path for the job.
wxString GetFilename() const
APP_SETTINGS_BASE * KifaceSettings() const
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
void SetDefaultFont(const wxString &aFont)
virtual void SetBackgroundColor(const COLOR4D &aColor)=0
Set the background color.
void SetMinPenWidth(int aWidth)
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
virtual SETTINGS_MANAGER & GetSettingsManager() const
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
These are loaded from Eeschema settings but then overwritten by the project settings.
wxString m_PlotDirectoryName
Holds all the data relating to one schematic.
SCH_SHEET_PATH & CurrentSheet() const override
SCHEMATIC_SETTINGS & Settings() const
SCH_SCREEN * RootScreen() const
Helper to retrieve the screen of the root sheet.
bool ResolveTextVar(const SCH_SHEET_PATH *aSheetPath, wxString *token, int aDepth) const
SCH_RENDER_SETTINGS * GetRenderSettings()
Schematic editor (Eeschema) main window.
SCHEMATIC & Schematic() const
const wxString & GetFileName() const
wxString GetFileName() const
Return the filename corresponding to this sheet.
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieve a color settings object that applications can read colors from.
std::vector< COLOR_SETTINGS * > GetColorSettingsList()
virtual long long int GetValue()
Return the current value in Internal Units.
void Enable(bool aEnable)
Enable/disable the label, widget and units label.
virtual double GetDoubleValue()
Return the current value in Internal Units.
virtual void SetDoubleValue(double aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
virtual void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
void SetFileName(const wxString &aReportFileName)
Set the report full file name to the string.
REPORTER & Reporter()
Return the reporter object that reports to this panel.
const wxString ExpandEnvVarSubstitutions(const wxString &aString, const PROJECT *aProject)
Replace any environment variable & text variable references with their values.
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject, int aFlags)
JOB_HPGL_PLOT_ORIGIN_AND_UNITS
@ LAYER_SCHEMATIC_BACKGROUND
SETTINGS_MANAGER * GetSettingsManager()
PGM_BASE & Pgm()
The global program "get" accessor.
PLOT_FORMAT
The set of supported output plot formats.
Plotting engines similar to ps (PostScript, Gerber, svg)
HPGL_PLOT_ORIGIN_AND_UNITS
std::vector< FAB_LAYER_COLOR > dummy
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
constexpr int MilsToIU(int mils) const
bool open_file_after_plot
bool pdf_hierarchical_links
wxString m_outputDirectory
HPGL_PLOT_ORIGIN_AND_UNITS m_HPGLPlotOrigin
HPGL_PAGE_SIZE m_HPGLPaperSizeSelect
bool m_PDFHierarchicalLinks
bool m_useBackgroundColor
wxLogTrace helper definitions.
#define FN_NORMALIZE_FLAGS
Default flags to pass to wxFileName::Normalize().