summaryrefslogtreecommitdiff
path: root/pcbnew/invoke_pcb_dialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'pcbnew/invoke_pcb_dialog.h')
-rw-r--r--pcbnew/invoke_pcb_dialog.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/pcbnew/invoke_pcb_dialog.h b/pcbnew/invoke_pcb_dialog.h
new file mode 100644
index 0000000..aa5ad14
--- /dev/null
+++ b/pcbnew/invoke_pcb_dialog.h
@@ -0,0 +1,162 @@
+/**
+ * @file invoke_pcb_dialog.h
+ */
+
+/* This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+ * Copyright (C) 2013 KiCad Developers, see change_log.txt for contributors.
+ *
+ * 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
+ */
+
+// This header is an insolation layer between top most frames and any number of
+// DIALOG classes which can be called from a frame window.
+// It is a place to put invocation functions for [modal] dialogs, with benefits:
+//
+// 1) The information about each dialog class is not exposed to the frame.
+// So therefore the DIALOG class can often be kept out of a header file entirely.
+//
+// 2) The information about the calling frame is not necessarily exposed to
+// to the called dialog class, at least not in here.
+
+// The actual InvokeDialog<class>() function is usually coded at the bottom of the
+// DIALOG_<class>.cpp file.
+
+
+#ifndef INVOKE_A_DIALOG_H_
+#define INVOKE_A_DIALOG_H_
+
+
+class wxTopLevelWindow;
+class wxPoint;
+class wxSize;
+class wxString;
+
+class BOARD;
+class MODULE;
+
+// Often this is not used in the prototypes, since wxFrame is good enough and would
+// represent maximum information hiding.
+class PCB_BASE_FRAME;
+class FOOTPRINT_EDIT_FRAME;
+class FP_LIB_TABLE;
+class BOARD;
+class PCB_PLOT_PARAMS;
+
+
+/**
+ * Function InvokePcbLibTableEditor
+ * shows the modal DIALOG_FP_LIB_TABLE for purposes of editing two lib tables.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aGlobal is the common footprint library table file being edited.
+ * @param aProject is the project specific footprint library table file being edited.
+ *
+ * @return int - bits 0 and 1 tell whether a change was made to the @a aGlobal
+ * and/or the @a aProject table, respectively. If set, table was modified.
+ */
+int InvokePcbLibTableEditor( wxTopLevelWindow* aCaller, FP_LIB_TABLE* aGlobal, FP_LIB_TABLE* aProject );
+
+/**
+ * Function InvokeFootprintWizard
+ * Runs the footprint library wizard for easy library addition.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aGlobal is the common footprint library table file being edited. If aGlobal is NULL, then
+ * it will not be updated.
+ * @param aProject is the project specific footprint library table file being edited. if aProject
+ * is NULL, then it will not be updated.
+ *
+ * @return int 0 - no changes
+ * 1 - changes in the global table
+ * 2 - changes in the project table
+ * 3 - changes in both tables
+ */
+int InvokeFootprintWizard( wxTopLevelWindow* aParent, FP_LIB_TABLE* aGlobal, FP_LIB_TABLE* aProject );
+
+/**
+ * Function Invoke3DShapeLibsDownloaderWizard
+ * Runs the downloader wizard for easy 3D shape libraries download from
+ * the official Kicad Github repository of *.3Dshape libraries.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ */
+void Invoke3DShapeLibsDownloaderWizard( wxTopLevelWindow* aParent );
+
+
+/**
+ * Function InvokePluginOptionsEditor
+ * calls DIALOG_FP_PLUGIN_OPTIONS dialog so that plugin options set can be edited.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aNickname is the footprint library whose options are being edited.
+ * @param aPluginType is something that will pass through IO_MGR::EnumFromStr().
+ * @param aOptions is the options string on calling into this function.
+ * @param aResult is where to put the result of the editing.
+ */
+void InvokePluginOptionsEditor( wxTopLevelWindow* aCaller, const wxString& aNickname,
+ const wxString& aPluginType, const wxString& aOptions, wxString* aResult );
+
+/**
+ * Function InvokeDXFDialogBoardImport
+ * shows the modal DIALOG_DXF_IMPORT for importing a DXF file to a board.
+
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @return true if the import was made.
+ */
+bool InvokeDXFDialogBoardImport( PCB_BASE_FRAME* aCaller );
+
+/**
+ * Function InvokeDXFDialogModuleImport
+ * shows the modal DIALOG_DXF_IMPORT for importing a DXF file as footprint outlines.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aModule is the footprint currently edited.
+ * @return true if the import was made.
+ */
+bool InvokeDXFDialogModuleImport( PCB_BASE_FRAME* aCaller, MODULE* aModule );
+
+/**
+ * Function InvokeLayerSetup
+ * shows the layer setup dialog
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aBoard is the currently edited board.
+ * @return bool - true if user pressed OK (did not abort), else false.
+ */
+bool InvokeLayerSetup( wxTopLevelWindow* aCaller, BOARD* aBoard );
+
+/**
+ * Function InvokeSVGPrint
+ * shows the SVG print dialog
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ * @param aBoard is the currently edited board.
+ * @param aSettings is the current pcb plot parameters.
+ * @return bool - true if user pressed OK (did not abort), else false.
+ */
+bool InvokeSVGPrint( wxTopLevelWindow* aCaller, BOARD* aBoard, PCB_PLOT_PARAMS* aSettings );
+
+/**
+ * Function InvokeSVGPrint
+ * shows the SVG print dialog
+ * @param aCaller is the FOOTPRINT_EDIT_FRAME which is invoking the dialog.
+ * @return bool - true if user pressed OK (did not abort), else false.
+ */
+bool InvokeFPEditorPrefsDlg( FOOTPRINT_EDIT_FRAME* aCaller );
+
+#endif // INVOKE_A_DIALOG_H_