From 5cf5bbce8b3fdea49dc2090cc037088efd50cd52 Mon Sep 17 00:00:00 2001 From: charras Date: Tue, 17 Feb 2009 09:03:45 +0000 Subject: [PATCH] Dialog track options redesigned with wxFormBuilder Alt via drill renamed Specific via drill. Added tips in dialog. --- CHANGELOG.txt | 8 + common/makefile.gtk | 8 +- cvpcb/makefile.gtk | 13 +- internat/fr/kicad.mo | Bin 173377 -> 174668 bytes internat/fr/kicad.po | 208 +-- libs.linux | 3 + pcbnew/CMakeLists.txt | 3 +- pcbnew/dialog_general_options.cpp | 6 +- pcbnew/dialog_track_options.cpp | 439 +----- pcbnew/dialog_track_options.h | 146 +- pcbnew/dialog_track_options.pjd | 1968 -------------------------- pcbnew/dialog_track_options.rc | 1 - pcbnew/dialog_track_options_base.cpp | 152 ++ pcbnew/dialog_track_options_base.fbp | 1212 ++++++++++++++++ pcbnew/dialog_track_options_base.h | 81 ++ pcbnew/makefile.gtk | 8 +- pcbnew/makefile.include | 4 +- pcbnew/onrightclick.cpp | 10 +- 18 files changed, 1664 insertions(+), 2606 deletions(-) delete mode 100644 pcbnew/dialog_track_options.pjd delete mode 100644 pcbnew/dialog_track_options.rc create mode 100644 pcbnew/dialog_track_options_base.cpp create mode 100644 pcbnew/dialog_track_options_base.fbp create mode 100644 pcbnew/dialog_track_options_base.h diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 84afb1aef9..ab76dce7cc 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,6 +5,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2009-Feb-17 Jean-Pierre Charras +================================================================================ +++pcbnew: + Dialog track options redesigned with wxFormBuilder + Alt via drill renamed Specific via drill in dialog and popup menu. + Added tips in dialog. + + 2009-Feb-09 UPDATE Dick Hollenbeck ================================================================================ ++eeschema diff --git a/common/makefile.gtk b/common/makefile.gtk index 10c653f47a..cddad4b949 100644 --- a/common/makefile.gtk +++ b/common/makefile.gtk @@ -4,11 +4,6 @@ CC = gcc include ../libs.linux -# Compiler flags. -CPPFLAGS += -I./ -I../include - -EDACPPFLAGS = $(CPPFLAGS) - all: common.a deps: @@ -17,7 +12,8 @@ deps: include makefile.include -include *.d -CPPFLAGS += $(EXTRACPPFLAGS) -fno-strict-aliasing +# specfic Compiler flags and options +CPPFLAGS += $(EXTRACPPFLAGS) -I./ -I../include -I$(BOOST) EDACPPFLAGS = $(CPPFLAGS) diff --git a/cvpcb/makefile.gtk b/cvpcb/makefile.gtk index d7bf1a882a..579d502540 100644 --- a/cvpcb/makefile.gtk +++ b/cvpcb/makefile.gtk @@ -5,17 +5,8 @@ FINAL = 1 include ../libs.linux -# Compiler flags. -CPPFLAGS += - -EDACPPFLAGS = $(CPPFLAGS) - TARGET = cvpcb -all: $(TARGET) - -deps: - $(CXX) $(CPPFLAGS) -E -MMD -MG *.cpp >/dev/null include makefile.include -include *.d @@ -23,6 +14,10 @@ include makefile.include CPPFLAGS += $(EXTRACPPFLAGS) EDACPPFLAGS = $(CPPFLAGS) +all: $(TARGET) + +deps: + $(CXX) $(CPPFLAGS) -E -MMD -MG *.cpp >/dev/null $(TARGET): $(OBJECTS) makefile.gtk makefile.include $(EXTRALIBS) ../libs.linux $(LIBVIEWER3D) $(LD) $(OBJECTS) $(LDFLAGS) $(LIBVIEWER3D) $(LIBS_WITH_GL) -o $(TARGET) diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 8320c6fa5d6ecef2e832e35dfe6b2e00ca4bfe99..3b2f265ed4e664b027ec1cffd60c2521a1fd5861 100644 GIT binary patch delta 56978 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 ahE9H#`eU5T$t?{gJAHGrxXgB{=KX(A`as+O diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index b71432756f..6bfefe9044 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-02-15 19:36+0100\n" -"PO-Revision-Date: 2009-02-15 19:39+0100\n" +"POT-Creation-Date: 2009-02-17 09:24+0100\n" +"PO-Revision-Date: 2009-02-17 09:34+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -2014,67 +2014,6 @@ msgstr "Le fichier Session a une 'reference' a un composant non existant \"%s\"" msgid "A wire_via references a missing padstack \"%s\"" msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant" -#: pcbnew/dialog_track_options.cpp:151 -msgid "Vias:" -msgstr "Vias:" - -#: pcbnew/dialog_track_options.cpp:160 -msgid "Via size" -msgstr "Diamètre via" - -#: pcbnew/dialog_track_options.cpp:176 -msgid "Default Via Drill" -msgstr "Perçage vias par défaut" - -#: pcbnew/dialog_track_options.cpp:192 -msgid "Alternate Via Drill" -msgstr "Perçage vias alternatif" - -#: pcbnew/dialog_track_options.cpp:208 -msgid "Through Via" -msgstr "Via Traversante" - -#: pcbnew/dialog_track_options.cpp:209 -msgid "Blind or Buried Via " -msgstr "Via enterrée ou Aveugle" - -#: pcbnew/dialog_track_options.cpp:212 -msgid "Default Via Type" -msgstr "Via par Défaut" - -#: pcbnew/dialog_track_options.cpp:223 -msgid "Micro Vias:" -msgstr "Micro Vias:" - -#: pcbnew/dialog_track_options.cpp:232 -msgid "Micro Via Size" -msgstr "Diamètre Micro Via" - -#: pcbnew/dialog_track_options.cpp:245 -msgid "Micro Via Drill" -msgstr "Perçage Micro Via" - -#: pcbnew/dialog_track_options.cpp:260 -msgid "Allows Micro Vias" -msgstr "Autorise Micro Vias" - -#: pcbnew/dialog_track_options.cpp:265 -#: pcbnew/dialog_track_options.cpp:268 -msgid "" -"Allows use of micro vias\n" -"They are very small vias only from an external copper layer to its near neightbour\n" -msgstr "" -"Autorise l'utilisation de micro vias\n" -"Ce sont de petites vias allant d'une couche externe a la plus proche couche interne uniquement\n" - -#: pcbnew/dialog_track_options.cpp:276 -msgid "Track Width" -msgstr "Epais. Piste" - -#: pcbnew/dialog_track_options.cpp:304 -msgid "Mask clearance" -msgstr "Retrait Masque" - #: pcbnew/class_pad.cpp:381 msgid "Unknown Pad shape" msgstr "Forme Pad inconnue" @@ -2519,6 +2458,110 @@ msgstr "Le composant avec valeur \"%s\" a une référence vide." msgid "Multiple components have identical reference IDs of \"%s\"." msgstr "Multiple composants ont une reference identique \"%s\"." +#: pcbnew/dialog_track_options_base.cpp:20 +msgid "Vias:" +msgstr "Vias:" + +#: pcbnew/dialog_track_options_base.cpp:22 +msgid "Via size" +msgstr "Diamètre via" + +#: pcbnew/dialog_track_options_base.cpp:27 +msgid "Enter the current via diameter." +msgstr "Entrer la valeur courante du diamètre de via" + +#: pcbnew/dialog_track_options_base.cpp:31 +msgid "Default Via Drill" +msgstr "Perçage vias par défaut" + +#: pcbnew/dialog_track_options_base.cpp:36 +msgid "" +"Enter the default via drill diameter\n" +"All vias drills not set to a specific drill value will have this drill value." +msgstr "" +"Entrer le preçage des vias par défault\n" +"Tous les perçages de vias non ajusté à une valeur spécifique auront cette valeur de perçage." + +#: pcbnew/dialog_track_options_base.cpp:40 +msgid "Specific Via Drill" +msgstr "Perçage Spécifique" + +#: pcbnew/dialog_track_options_base.cpp:45 +msgid "" +"Use a specific drill value for all vias that must have a given drill value,\n" +"and set the via hole to this specific drill value using the pop up menu." +msgstr "" +"Utiliser une valeur de perçage spécifique pour toutes les vias qui doivent avoir un perçage donné,\n" +"et mettre le trou de la via à cette valeur spécifique en utilisant le menu popup." + +#: pcbnew/dialog_track_options_base.cpp:49 +msgid "Through Via" +msgstr "Via Traversante" + +#: pcbnew/dialog_track_options_base.cpp:49 +msgid "Blind or Buried Via" +msgstr "Via enterrée ou Aveugle" + +#: pcbnew/dialog_track_options_base.cpp:51 +msgid "Default Via Type" +msgstr "Via par Défaut" + +#: pcbnew/dialog_track_options_base.cpp:53 +msgid "" +"Select the current via type.\n" +"Trough via is the usual selection" +msgstr "" +"Selection du type de via courant.\n" +"Via traversante est la sélection usuelle." + +#: pcbnew/dialog_track_options_base.cpp:60 +msgid "Micro Vias:" +msgstr "Micro Vias:" + +#: pcbnew/dialog_track_options_base.cpp:62 +msgid "Micro Via Size" +msgstr "Diamètre Micro Via" + +#: pcbnew/dialog_track_options_base.cpp:69 +msgid "Micro Via Drill" +msgstr "Perçage Micro Via" + +#: pcbnew/dialog_track_options_base.cpp:79 +msgid "Allows Micro Vias" +msgstr "Autorise Micro Vias" + +#: pcbnew/dialog_track_options_base.cpp:81 +msgid "" +"Allows use of micro vias\n" +"They are very small vias only from an external copper layer to its near neightbour\n" +msgstr "" +"Autorise l'utilisation de micro vias\n" +"Ce sont de petites vias allant d'une couche externe a la plus proche couche interne uniquement\n" + +#: pcbnew/dialog_track_options_base.cpp:88 +msgid "Dimensions:" +msgstr "Dimensions:" + +#: pcbnew/dialog_track_options_base.cpp:90 +msgid "Track Width" +msgstr "Epais. Piste" + +#: pcbnew/dialog_track_options_base.cpp:95 +msgid "Enter the current track width" +msgstr "Entrer la largeur de piste courante" + +#: pcbnew/dialog_track_options_base.cpp:104 +msgid "This is the clearance between tracks, vias and pads for DRC." +msgstr "Ceci est l'isolation entre pistes, vias et pads pour le calcul DRC." + +#: pcbnew/dialog_track_options_base.cpp:111 +msgid "Mask clearance" +msgstr "Retrait Masque" + +#: pcbnew/dialog_track_options_base.cpp:116 +msgid "This is the clearance between pads and the mask" +msgstr "Ceci est l'espace entre pads et le masque" + #: pcbnew/pcbcfg.cpp:72 msgid "Read config file" msgstr "Lire config" @@ -2789,24 +2832,24 @@ msgid "Set via hole to a specific value. This specific value is currently" msgstr "Ajuster diamètre perçage via a une valeur sécifique. Cette valeur spécifique est actuellement" #: pcbnew/onrightclick.cpp:493 -msgid "Set Via Hole to Alt Value" -msgstr "Ajuste Perçage Via à Valeur Alternative" +msgid "Set Via Hole to Specific Value" +msgstr "Ajuste Perçage Via à Valeur Spécifique" #: pcbnew/onrightclick.cpp:495 msgid "Set a specific via hole value. This value is currently" msgstr "Ajuste une valeur spécifique de perçage de la via. Cette valeur est actuellement" #: pcbnew/onrightclick.cpp:498 -msgid "Set the Via Hole Alt Value" -msgstr "Ajuste la Valeur Alt. Perçage Via" +msgid "Change the Current Specific Drill Value" +msgstr "Changer la Valeur du Perçage Spécifique Courant" #: pcbnew/onrightclick.cpp:500 -msgid "Export Via Hole to Alt Value" -msgstr "Exporte Perçage Via à Valeur Alt." +msgid "Export this Via Hole to Alt Value" +msgstr "Exporte ce Perçage Via comme Valeur Alt." #: pcbnew/onrightclick.cpp:502 -msgid "Export Via Hole to Others id Vias" -msgstr "Exporte Perçage Via aux Autres Semblables." +msgid "Export this Via Hole to Others id Vias" +msgstr "Exporte ce Perçage Via aux Autres Semblables." #: pcbnew/onrightclick.cpp:504 msgid "Set ALL Via Holes to Default" @@ -4181,7 +4224,6 @@ msgid "Export this zone setup to all others copper zones" msgstr "Exporter ces options vers les autres zones de cuivre" #: pcbnew/dialog_copper_zones_base.cpp:156 -#: pcbnew/dialog_pad_properties_base.cpp:91 msgid "Ok" msgstr "Ok" @@ -4294,7 +4336,6 @@ msgid "Copper" msgstr "Cuivre" #: pcbnew/dialog_edit_module.cpp:271 -#: pcbnew/dialog_pad_properties_base.cpp:64 msgid "User" msgstr "User" @@ -4400,7 +4441,6 @@ msgid "Delete [%s]" msgstr "Supprimer [%s]" #: pcbnew/dialog_SVG_print_base.cpp:23 -#: pcbnew/dialog_pad_properties_base.cpp:106 msgid "Layers:" msgstr "Couches:" @@ -5721,10 +5761,12 @@ msgid "Schematic" msgstr "Schématique" #: eeschema/hotkeys.cpp:253 +#: eeschema/schedit.cpp:244 msgid "Add Component" msgstr "Ajout Composant" #: eeschema/hotkeys.cpp:275 +#: eeschema/schedit.cpp:192 msgid "Add Wire" msgstr "Ajouter Fils" @@ -6845,22 +6887,18 @@ msgid "No Draw" msgstr "Invisible" #: eeschema/pinedit-dialog.cpp:213 -#: eeschema/affiche.cpp:112 msgid "Right" msgstr "Droite" #: eeschema/pinedit-dialog.cpp:214 -#: eeschema/affiche.cpp:109 msgid "Left" msgstr "Gauche" #: eeschema/pinedit-dialog.cpp:215 -#: eeschema/affiche.cpp:103 msgid "Up" msgstr "Haut" #: eeschema/pinedit-dialog.cpp:216 -#: eeschema/affiche.cpp:106 msgid "Down" msgstr "Bas" @@ -7130,10 +7168,12 @@ msgid "All" msgstr "Tout" #: eeschema/affiche.cpp:180 +#: eeschema/onrightclick.cpp:330 msgid "Unit" msgstr "Unité" #: eeschema/affiche.cpp:190 +#: eeschema/onrightclick.cpp:317 msgid "Convert" msgstr "Convert" @@ -10582,10 +10622,6 @@ msgstr "Orientation des Modules" msgid "Dialog" msgstr "Dialog" -#: pcbnew/dialog_track_options.h:53 -msgid "Tracks and Vias Sizes" -msgstr "Dims Pistes et Vias" - #: pcbnew/pcbnew.h:285 msgid "??? Via" msgstr "??? Via" @@ -10594,6 +10630,10 @@ msgstr "??? Via" msgid "Blind/Buried Via" msgstr "Via Aveugle/Enterrée" +#: pcbnew/dialog_track_options_base.h:68 +msgid "Tracks and Vias Sizes" +msgstr "Dims Pistes et Vias" + #: pcbnew/dialog_SVG_print_base.h:68 msgid "Create SVG file" msgstr "Créer Fichier SVG" @@ -10992,6 +11032,10 @@ msgstr "DCodes id." msgid "Page Settings" msgstr "Ajustage opt Page" +#~ msgid "Alternate Via Drill" +#~ msgstr "Perçage vias alternatif" +#~ msgid "Set the Via Hole Alt Value" +#~ msgstr "Ajuste la Valeur Alt. Perçage Via" #~ msgid "Zoom %d" #~ msgstr "Zoom %d" diff --git a/libs.linux b/libs.linux index c02a64b1b1..440581c379 100644 --- a/libs.linux +++ b/libs.linux @@ -99,6 +99,9 @@ endif # mesa (free opengl library) libs MESALIBSPATH = /usr/local/lib +# Boost headers (location of boost/) +BOOST = ../ + #for static link: add wx gl lib LIBVERSION=`wx-config --release` WXPATH = `wx-config --prefix`/lib diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index ca61858f53..531af2fbd2 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -54,7 +54,8 @@ set(PCBNEW_SRCS dialog_print_using_printer.cpp dialog_setup_libs.cpp dialog_orient_footprints.cpp -# dialog_track_options.cpp + dialog_track_options.cpp + dialog_track_options_base.cpp dialog_SVG_print.cpp dialog_SVG_print_base.cpp dist.cpp diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp index 15bb38ef6c..b6315c9ee1 100644 --- a/pcbnew/dialog_general_options.cpp +++ b/pcbnew/dialog_general_options.cpp @@ -17,6 +17,7 @@ #include "dialog_general_options_BoardEditor_base.h" #include "dialog_display_options_base.h" #include "dialog_general_options.h" +#include "dialog_track_options.h" /***********************************************************************************/ Dialog_GeneralOptions::Dialog_GeneralOptions( WinEDA_PcbFrame* parent, wxDC* DC ) : @@ -228,7 +229,6 @@ void Dialog_Display_Options::OnOkClick(wxCommandEvent& event) } -#include "dialog_track_options.cpp" #include "dialog_graphic_items_options.cpp" /*****************************************************************/ @@ -240,8 +240,8 @@ void WinEDA_PcbFrame::InstallPcbOptionsFrame( const wxPoint& pos, { case ID_PCB_TRACK_SIZE_SETUP: { - WinEDA_PcbTracksDialog* OptionsFrame = - new WinEDA_PcbTracksDialog( this ); + DIALOG_TRACKS_OPTIONS* OptionsFrame = + new DIALOG_TRACKS_OPTIONS( this ); OptionsFrame->ShowModal(); OptionsFrame->Destroy(); diff --git a/pcbnew/dialog_track_options.cpp b/pcbnew/dialog_track_options.cpp index a9bcf4d7dc..24a348092d 100644 --- a/pcbnew/dialog_track_options.cpp +++ b/pcbnew/dialog_track_options.cpp @@ -1,386 +1,53 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dialog_track_options.cpp -// Purpose: // Author: jean-pierre Charras // Modified by: -// Created: 24/02/2006 20:58:54 -// RCS-ID: -// Copyright: License GNU -// Licence: +// Created: 17 feb 2009 +// Licence: GPL ///////////////////////////////////////////////////////////////////////////// -// Generated by DialogBlocks (unregistered), 24/02/2006 20:58:54 - -#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA) -#pragma implementation "dialog_track_options.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes +#include "fctsys.h" +#include "common.h" +#include "pcbnew.h" #include "dialog_track_options.h" -////@begin XPM images -////@end XPM images -/*! - * WinEDA_PcbTracksDialog type definition +/** + * DIALOG_TRACKS_OPTIONS, derived from DIALOG_TRACKS_OPTIONS_BASE + * @see dialog_track_options_base.h and dialog_track_options_base.cpp, + * automatically created by wxFormBuilder */ -IMPLEMENT_DYNAMIC_CLASS( WinEDA_PcbTracksDialog, wxDialog ) - -/*! - * WinEDA_PcbTracksDialog event table definition - */ - -BEGIN_EVENT_TABLE( WinEDA_PcbTracksDialog, wxDialog ) - -////@begin WinEDA_PcbTracksDialog event table entries -EVT_INIT_DIALOG( WinEDA_PcbTracksDialog::OnInitDialog ) - -EVT_CHECKBOX( ID_CHECKBOX_ALLOWS_MICROVIA, WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick ) - -EVT_BUTTON( wxID_OK, WinEDA_PcbTracksDialog::OnOkClick ) - -EVT_BUTTON( wxID_CANCEL, WinEDA_PcbTracksDialog::OnCancelClick ) - -////@end WinEDA_PcbTracksDialog event table entries - -END_EVENT_TABLE() - -/*! - * WinEDA_PcbTracksDialog constructors - */ - -WinEDA_PcbTracksDialog::WinEDA_PcbTracksDialog() -{ -} - - -WinEDA_PcbTracksDialog::WinEDA_PcbTracksDialog( WinEDA_PcbFrame* parent, - wxWindowID id, - const wxString& caption, - const wxPoint& pos, - const wxSize& size, - long style ) +DIALOG_TRACKS_OPTIONS::DIALOG_TRACKS_OPTIONS( WinEDA_PcbFrame* parent ) + : DIALOG_TRACKS_OPTIONS_BASE(parent) { m_Parent = parent; - Create( parent, id, caption, pos, size, style ); } -/*! - * WinEDA_PcbTracksDialog creator - */ - -bool WinEDA_PcbTracksDialog::Create( wxWindow* parent, - wxWindowID id, - const wxString& caption, - const wxPoint& pos, - const wxSize& size, - long style ) +void DIALOG_TRACKS_OPTIONS::OnInitDialog( wxInitDialogEvent& event ) { -////@begin WinEDA_PcbTracksDialog member initialisation - m_ViaSizeTitle = NULL; - m_OptViaSize = NULL; - m_ViaDefaultDrillValueTitle = NULL; - m_OptViaDrill = NULL; - m_ViaAltDrillValueTitle = NULL; - m_OptCustomViaDrill = NULL; - m_OptViaType = NULL; - m_MicroViaSizeTitle = NULL; - m_MicroViaSizeCtrl = NULL; - m_MicroViaDrillTitle = NULL; - m_MicroViaDrillCtrl = NULL; - m_AllowMicroViaCtrl = NULL; - m_TrackWidthTitle = NULL; - m_OptTrackWidth = NULL; - m_TrackClearanceTitle = NULL; - m_OptTrackClearance = NULL; - m_MaskClearanceTitle = NULL; - m_OptMaskMargin = NULL; + SetFont( *g_DialogFont ); + SetFocus(); -////@end WinEDA_PcbTracksDialog member initialisation + // deselect the existing text, seems SetFocus() wants to emulate Microsoft, which is not desireable here. + m_OptViaSize->SetSelection( 0, 0 ); -////@begin WinEDA_PcbTracksDialog creation - SetExtraStyle( wxWS_EX_BLOCK_EVENTS ); - wxDialog::Create( parent, id, caption, pos, size, style ); + SetDisplayValue(); - CreateControls(); if( GetSizer() ) { GetSizer()->SetSizeHints( this ); } - Centre(); -////@end WinEDA_PcbTracksDialog creation - return true; -} - - -/*! - * Control creation for WinEDA_PcbTracksDialog - */ - -void WinEDA_PcbTracksDialog::CreateControls() -{ - SetFont( *g_DialogFont ); - -////@begin WinEDA_PcbTracksDialog content construction - // Generated by DialogBlocks, 11/01/2008 21:51:48 (unregistered) - - WinEDA_PcbTracksDialog* itemDialog1 = this; - - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer( wxHORIZONTAL ); - - itemDialog1->SetSizer( itemBoxSizer2 ); - - wxStaticBox* itemStaticBoxSizer3Static = new wxStaticBox( itemDialog1, wxID_ANY, _( - "Vias:" ) ); - - wxStaticBoxSizer* itemStaticBoxSizer3 = new wxStaticBoxSizer( - itemStaticBoxSizer3Static, - wxVERTICAL ); - - itemBoxSizer2->Add( itemStaticBoxSizer3, 0, wxGROW | wxALL, 5 ); - - m_ViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Via size" ), - wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_ViaSizeTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptViaSize = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T( - "" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_OptViaSize, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_ViaDefaultDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Default Via Drill" ), - wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_ViaDefaultDrillValueTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T( - "" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_OptViaDrill, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_ViaAltDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Alternate Via Drill" ), - wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_ViaAltDrillValueTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptCustomViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T( - "" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer3->Add( m_OptCustomViaDrill, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - wxArrayString m_OptViaTypeStrings; - m_OptViaTypeStrings.Add( _( "Through Via" ) ); - m_OptViaTypeStrings.Add( _( "Blind or Buried Via " ) ); - m_OptViaType = new wxRadioBox( itemDialog1, - ID_VIA_TYPE_SELECTION, - _( "Default Via Type" ), - wxDefaultPosition, - wxDefaultSize, - m_OptViaTypeStrings, - 1, - wxRA_SPECIFY_COLS ); - - m_OptViaType->SetSelection( 0 ); - itemStaticBoxSizer3->Add( m_OptViaType, 0, wxGROW | wxALL, 5 ); - - wxStaticBox* itemStaticBoxSizer11Static = new wxStaticBox( itemDialog1, wxID_ANY, _( - "Micro Vias:" ) ); - - wxStaticBoxSizer* itemStaticBoxSizer11 = new wxStaticBoxSizer( - itemStaticBoxSizer11Static, - wxVERTICAL ); - - itemBoxSizer2->Add( itemStaticBoxSizer11, 0, wxGROW | wxALL, 5 ); - - m_MicroViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Micro Via Size" ), - wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer11->Add( m_MicroViaSizeTitle, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); - - m_MicroViaSizeCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL7, _T( - "" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer11->Add( m_MicroViaSizeCtrl, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_MicroViaDrillTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Micro Via Drill" ), - wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer11->Add( m_MicroViaDrillTitle, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); - - m_MicroViaDrillCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL6, _T( - "" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemStaticBoxSizer11->Add( m_MicroViaDrillCtrl, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - itemStaticBoxSizer11->Add( 5, 5, 0, wxGROW | wxALL, 5 ); - - m_AllowMicroViaCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX_ALLOWS_MICROVIA, _( - "Allows Micro Vias" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - m_AllowMicroViaCtrl->SetValue( false ); - m_AllowMicroViaCtrl->SetHelpText( _( - "Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n" ) ); - if( WinEDA_PcbTracksDialog::ShowToolTips() ) - m_AllowMicroViaCtrl->SetToolTip( _( - "Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n" ) ); - itemStaticBoxSizer11->Add( m_AllowMicroViaCtrl, 0, wxGROW | wxALL, 5 ); - - wxBoxSizer* itemBoxSizer18 = new wxBoxSizer( wxVERTICAL ); - - itemBoxSizer2->Add( itemBoxSizer18, 0, wxGROW | wxALL, 5 ); - - m_TrackWidthTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Track Width" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_TrackWidthTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptTrackWidth = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T( - "" ), wxDefaultPosition, wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_OptTrackWidth, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_TrackClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Clearance" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_TrackClearanceTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptTrackClearance = new wxTextCtrl( itemDialog1, ID_TEXTCTRL4, _T( - "" ), wxDefaultPosition, wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_OptTrackClearance, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_MaskClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _( - "Mask clearance" ), wxDefaultPosition, - wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_MaskClearanceTitle, - 0, - wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, - 5 ); - - m_OptMaskMargin = new wxTextCtrl( itemDialog1, ID_TEXTCTRL5, _T( - "" ), wxDefaultPosition, wxDefaultSize, 0 ); - - itemBoxSizer18->Add( m_OptMaskMargin, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - wxBoxSizer* itemBoxSizer25 = new wxBoxSizer( wxVERTICAL ); - - itemBoxSizer2->Add( itemBoxSizer25, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); - - wxButton* itemButton26 = new wxButton( itemDialog1, wxID_OK, _( - "&OK" ), wxDefaultPosition, wxDefaultSize, 0 ); - - itemButton26->SetForegroundColour( wxColour( 210, 0, 0 ) ); - itemBoxSizer25->Add( itemButton26, 0, wxGROW | wxALL, 5 ); - - wxButton* itemButton27 = new wxButton( itemDialog1, wxID_CANCEL, _( - "&Cancel" ), wxDefaultPosition, - wxDefaultSize, wxBU_LEFT ); - - itemButton27->SetForegroundColour( wxColour( 0, 0, 255 ) ); - itemBoxSizer25->Add( itemButton27, 0, wxGROW | wxALL, 5 ); - - // Set validators - m_AllowMicroViaCtrl->SetValidator( wxGenericValidator( &g_DesignSettings.m_MicroViasAllowed ) ); - -////@end WinEDA_PcbTracksDialog content construction - SetDisplayValue(); -} - - -/*! - * Should we show tooltips? - */ - -bool WinEDA_PcbTracksDialog::ShowToolTips() -{ - return true; -} - - -/*! - * Get bitmap resources - */ - -wxBitmap WinEDA_PcbTracksDialog::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin WinEDA_PcbTracksDialog bitmap retrieval - wxUnusedVar( name ); - return wxNullBitmap; - -////@end WinEDA_PcbTracksDialog bitmap retrieval -} - - -/*! - * Get icon resources - */ - -wxIcon WinEDA_PcbTracksDialog::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin WinEDA_PcbTracksDialog icon retrieval - wxUnusedVar( name ); - return wxNullIcon; - -////@end WinEDA_PcbTracksDialog icon retrieval + event.Skip(); } /*************************************************/ -void WinEDA_PcbTracksDialog::SetDisplayValue() +void DIALOG_TRACKS_OPTIONS::SetDisplayValue() /*************************************************/ { AddUnitSymbol( *m_ViaSizeTitle ); @@ -399,7 +66,9 @@ void WinEDA_PcbTracksDialog::SetDisplayValue() Internal_Unit ); PutValueInLocalUnits( *m_OptViaDrill, g_DesignSettings.m_ViaDrill, Internal_Unit ); PutValueInLocalUnits( *m_MicroViaDrillCtrl, g_DesignSettings.m_MicroViaDrill, Internal_Unit ); - PutValueInLocalUnits( *m_OptCustomViaDrill, g_DesignSettings.m_ViaDrillCustomValue, Internal_Unit ); + PutValueInLocalUnits( *m_OptCustomViaDrill, + g_DesignSettings.m_ViaDrillCustomValue, + Internal_Unit ); PutValueInLocalUnits( *m_OptTrackWidth, g_DesignSettings.m_CurrentTrackWidth, Internal_Unit ); PutValueInLocalUnits( *m_OptTrackClearance, g_DesignSettings.m_TrackClearence, Internal_Unit ); PutValueInLocalUnits( *m_OptMaskMargin, g_DesignSettings.m_MaskMargin, Internal_Unit ); @@ -411,11 +80,14 @@ void WinEDA_PcbTracksDialog::SetDisplayValue() m_MicroViaDrillTitle->Enable( g_DesignSettings.m_MicroViasAllowed ); m_MicroViaDrillCtrl->Enable( g_DesignSettings.m_MicroViasAllowed ); + + m_AllowMicroViaCtrl->SetValue( g_DesignSettings.m_MicroViasAllowed ); + } /*******************************************************************/ -void WinEDA_PcbTracksDialog::AcceptPcbOptions( wxCommandEvent& event ) +void DIALOG_TRACKS_OPTIONS::OnButtonOkClick( wxCommandEvent& event ) /*******************************************************************/ { g_DesignSettings.m_CurrentViaType = VIA_THROUGH; @@ -475,21 +147,22 @@ void WinEDA_BasePcbFrame::AddHistory( int value, KICAD_T type ) if( !addhistory ) break; - for( ii = HISTORY_NUMBER-1; ii > 0; ii-- ) + for( ii = HISTORY_NUMBER - 1; ii > 0; ii-- ) { - g_DesignSettings.m_TrackWidthHistory[ii] = g_DesignSettings.m_TrackWidthHistory[ii-1]; + g_DesignSettings.m_TrackWidthHistory[ii] = + g_DesignSettings.m_TrackWidthHistory[ii - 1]; } g_DesignSettings.m_TrackWidthHistory[0] = value; // Reclassement par valeur croissante - for( ii = 0; ii < HISTORY_NUMBER-1; ii++ ) + for( ii = 0; ii < HISTORY_NUMBER - 1; ii++ ) { - if( g_DesignSettings.m_TrackWidthHistory[ii+1] == 0 ) + if( g_DesignSettings.m_TrackWidthHistory[ii + 1] == 0 ) break; // Fin de liste if( g_DesignSettings.m_TrackWidthHistory[ii] > - g_DesignSettings.m_TrackWidthHistory[ii+1] ) + g_DesignSettings.m_TrackWidthHistory[ii + 1] ) { EXCHG( g_DesignSettings.m_TrackWidthHistory[ii], g_DesignSettings.m_TrackWidthHistory[ii + 1] ); @@ -511,25 +184,26 @@ void WinEDA_BasePcbFrame::AddHistory( int value, KICAD_T type ) if( !addhistory ) break; - for( ii = HISTORY_NUMBER-1; ii > 0; ii-- ) + for( ii = HISTORY_NUMBER - 1; ii > 0; ii-- ) { - g_DesignSettings.m_ViaSizeHistory[ii] = g_DesignSettings.m_ViaSizeHistory[ii-1]; + g_DesignSettings.m_ViaSizeHistory[ii] = g_DesignSettings.m_ViaSizeHistory[ii - 1]; } g_DesignSettings.m_ViaSizeHistory[0] = value; // Reclassement par valeur croissante - for( ii = 0; ii < HISTORY_NUMBER-1; ii++ ) + for( ii = 0; ii < HISTORY_NUMBER - 1; ii++ ) { - if( g_DesignSettings.m_ViaSizeHistory[ii+1] == 0 ) + if( g_DesignSettings.m_ViaSizeHistory[ii + 1] == 0 ) break; // Fin de liste - if( g_DesignSettings.m_ViaSizeHistory[ii] > g_DesignSettings.m_ViaSizeHistory[ii+1] ) + if( g_DesignSettings.m_ViaSizeHistory[ii] > g_DesignSettings.m_ViaSizeHistory[ii + 1] ) { EXCHG( g_DesignSettings.m_ViaSizeHistory[ii], - g_DesignSettings.m_ViaSizeHistory[ii+1] ); + g_DesignSettings.m_ViaSizeHistory[ii + 1] ); } } + break; default: @@ -538,42 +212,13 @@ void WinEDA_BasePcbFrame::AddHistory( int value, KICAD_T type ) } -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK - */ - -void WinEDA_PcbTracksDialog::OnOkClick( wxCommandEvent& event ) -{ - AcceptPcbOptions( event ); -} - - /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL */ -void WinEDA_PcbTracksDialog::OnCancelClick( wxCommandEvent& event ) +void DIALOG_TRACKS_OPTIONS::OnButtonCancelClick( wxCommandEvent& event ) { -////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PcbTracksDialog. - // Before editing this code, remove the block markers. - event.Skip(); - -////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PcbTracksDialog. -} - - -/*! - * wxEVT_INIT_DIALOG event handler for ID_DIALOG - */ - -void WinEDA_PcbTracksDialog::OnInitDialog( wxInitDialogEvent& event ) -{ - m_OptViaSize->SetFocus(); - - // deselect the existing text, seems SetFocus() wants to emulate Microsoft, which is not desireable here. - m_OptViaSize->SetSelection( 0, 0 ); - - event.Skip(); + EndModal( 0 ); } @@ -581,7 +226,7 @@ void WinEDA_PcbTracksDialog::OnInitDialog( wxInitDialogEvent& event ) * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA */ -void WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ) +void DIALOG_TRACKS_OPTIONS::OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ) { bool state = m_AllowMicroViaCtrl->IsChecked(); diff --git a/pcbnew/dialog_track_options.h b/pcbnew/dialog_track_options.h index 02c119fe87..13a1fca81f 100644 --- a/pcbnew/dialog_track_options.h +++ b/pcbnew/dialog_track_options.h @@ -1,142 +1,34 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dialog_track_options.h -// Purpose: // Author: jean-pierre Charras -// Modified by: -// Created: 24/02/2006 20:58:54 -// RCS-ID: -// Copyright: License GNU -// Licence: +// Created: 17 feb 2009 +// Licence: GPL ///////////////////////////////////////////////////////////////////////////// -// Generated by DialogBlocks (unregistered), 24/02/2006 20:58:54 - #ifndef _DIALOG_TRACK_OPTIONS_H_ #define _DIALOG_TRACK_OPTIONS_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "dialog_track_options.h" -#endif +#include "dialog_track_options_base.h" -/*! - * Includes +/** + * DIALOG_TRACKS_OPTIONS, derived from DIALOG_TRACKS_OPTIONS_BASE + * @see dialog_track_options_base.h and dialog_track_options_base.cpp, + * automatically created by wxFormBuilder */ - -////@begin includes -#include "wx/valgen.h" -////@end includes - -/*! - * Forward declarations - */ - -////@begin forward declarations -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_DIALOG 10000 -#define ID_TEXTCTRL 10001 -#define ID_TEXTCTRL1 10002 -#define ID_TEXTCTRL2 10003 -#define ID_VIA_TYPE_SELECTION 10004 -#define ID_TEXTCTRL7 10008 -#define ID_TEXTCTRL6 10010 -#define ID_CHECKBOX_ALLOWS_MICROVIA 10009 -#define ID_TEXTCTRL3 10005 -#define ID_TEXTCTRL4 10006 -#define ID_TEXTCTRL5 10007 -#define SYMBOL_WINEDA_PCBTRACKSDIALOG_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER -#define SYMBOL_WINEDA_PCBTRACKSDIALOG_TITLE _("Tracks and Vias Sizes") -#define SYMBOL_WINEDA_PCBTRACKSDIALOG_IDNAME ID_DIALOG -#define SYMBOL_WINEDA_PCBTRACKSDIALOG_SIZE wxSize(400, 300) -#define SYMBOL_WINEDA_PCBTRACKSDIALOG_POSITION wxDefaultPosition -////@end control identifiers - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif - -/*! - * WinEDA_PcbTracksDialog class declaration - */ - -class WinEDA_PcbTracksDialog: public wxDialog +class DIALOG_TRACKS_OPTIONS : public DIALOG_TRACKS_OPTIONS_BASE { - DECLARE_DYNAMIC_CLASS( WinEDA_PcbTracksDialog ) - DECLARE_EVENT_TABLE() +public: + WinEDA_PcbFrame* m_Parent; public: - /// Constructors - WinEDA_PcbTracksDialog( ); - WinEDA_PcbTracksDialog( WinEDA_PcbFrame* parent, wxWindowID id = SYMBOL_WINEDA_PCBTRACKSDIALOG_IDNAME, const wxString& caption = SYMBOL_WINEDA_PCBTRACKSDIALOG_TITLE, const wxPoint& pos = SYMBOL_WINEDA_PCBTRACKSDIALOG_POSITION, const wxSize& size = SYMBOL_WINEDA_PCBTRACKSDIALOG_SIZE, long style = SYMBOL_WINEDA_PCBTRACKSDIALOG_STYLE ); - - /// Creation - bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_PCBTRACKSDIALOG_IDNAME, const wxString& caption = SYMBOL_WINEDA_PCBTRACKSDIALOG_TITLE, const wxPoint& pos = SYMBOL_WINEDA_PCBTRACKSDIALOG_POSITION, const wxSize& size = SYMBOL_WINEDA_PCBTRACKSDIALOG_SIZE, long style = SYMBOL_WINEDA_PCBTRACKSDIALOG_STYLE ); - - /// Creates the controls and sizers - void CreateControls(); - -////@begin WinEDA_PcbTracksDialog event handler declarations - - /// wxEVT_INIT_DIALOG event handler for ID_DIALOG - void OnInitDialog( wxInitDialogEvent& event ); - - /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA - void OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK - void OnOkClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL - void OnCancelClick( wxCommandEvent& event ); - -////@end WinEDA_PcbTracksDialog event handler declarations - -////@begin WinEDA_PcbTracksDialog member function declarations - - /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); -////@end WinEDA_PcbTracksDialog member function declarations - - /// Should we show tooltips? - static bool ShowToolTips(); - void AcceptPcbOptions(wxCommandEvent& event); - void SetDisplayValue(); - -////@begin WinEDA_PcbTracksDialog member variables - wxStaticText* m_ViaSizeTitle; - wxTextCtrl* m_OptViaSize; - wxStaticText* m_ViaDefaultDrillValueTitle; - wxTextCtrl* m_OptViaDrill; - wxStaticText* m_ViaAltDrillValueTitle; - wxTextCtrl* m_OptCustomViaDrill; - wxRadioBox* m_OptViaType; - wxStaticText* m_MicroViaSizeTitle; - wxTextCtrl* m_MicroViaSizeCtrl; - wxStaticText* m_MicroViaDrillTitle; - wxTextCtrl* m_MicroViaDrillCtrl; - wxCheckBox* m_AllowMicroViaCtrl; - wxStaticText* m_TrackWidthTitle; - wxTextCtrl* m_OptTrackWidth; - wxStaticText* m_TrackClearanceTitle; - wxTextCtrl* m_OptTrackClearance; - wxStaticText* m_MaskClearanceTitle; - wxTextCtrl* m_OptMaskMargin; -////@end WinEDA_PcbTracksDialog member variables - WinEDA_PcbFrame * m_Parent; - + DIALOG_TRACKS_OPTIONS( WinEDA_PcbFrame* parent ); + ~DIALOG_TRACKS_OPTIONS() {}; +private: + void SetDisplayValue(); + virtual void OnInitDialog( wxInitDialogEvent& event ); + virtual void OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ); + virtual void OnButtonOkClick( wxCommandEvent& event ); + virtual void OnButtonCancelClick( wxCommandEvent& event ); }; -#endif - // _DIALOG_TRACK_OPTIONS_H_ +#endif // _DIALOG_TRACK_OPTIONS_H_ diff --git a/pcbnew/dialog_track_options.pjd b/pcbnew/dialog_track_options.pjd deleted file mode 100644 index 105fa8f6f2..0000000000 --- a/pcbnew/dialog_track_options.pjd +++ /dev/null @@ -1,1968 +0,0 @@ - - -
- 0 - "" - "" - "" - "" - "" - 0 - 0 - 0 - 1 - 1 - 1 - 1 - 0 - "jean-pierre Charras" - "License GNU" - "" - 0 - 0 - "<All platforms>" - "<Any>" - "///////////////////////////////////////////////////////////////////////////// -// Name: %HEADER-FILENAME% -// Purpose: -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - -" - "///////////////////////////////////////////////////////////////////////////// -// Name: %SOURCE-FILENAME% -// Purpose: -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - -" - "///////////////////////////////////////////////////////////////////////////// -// Name: %SYMBOLS-FILENAME% -// Purpose: Symbols file -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - -" - "#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "%HEADER-FILENAME%" -#endif - -" - "#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "%HEADER-FILENAME%" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -" - " /// %BODY% -" - " -/*! - * %BODY% - */ - -" - "app_resources.h" - "app_resources.cpp" - "AppResources" - "app.h" - "app.cpp" - "Application" - 0 - "" - "<None>" - "<System>" - "utf-8" - "<System>" - "" - 0 - 0 - 4 - " " - "" - 0 - 0 - 1 - 0 - 1 - 1 - 0 - 1 - 0 -
- - - "" - "data-document" - "" - "" - 0 - 1 - 0 - 0 - - "Configurations" - "config-data-document" - "" - "" - 0 - 1 - 0 - 0 - "" - 1 - "" - "Debug" - "ANSI" - "Static" - "Modular" - "GUI" - "wxMSW" - "Dynamic" - "Yes" - "No" - "No" - "%WXVERSION%" - "%EXECUTABLE%" - "" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - "%AUTO%" - - - - - - - "Projects" - "root-document" - "" - "project" - 1 - 1 - 0 - 1 - - "Windows" - "html-document" - "" - "dialogsfolder" - 1 - 1 - 0 - 1 - - "Tracks and Vias Sizes" - "dialog-document" - "" - "dialog" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbDialogProxy" - 10000 - 0 - "" - 0 - "" - 0 - 0 - "wxEVT_INIT_DIALOG|OnInitDialog|NONE||" - "ID_DIALOG" - 10000 - "WinEDA_PcbTracksDialog" - "wxDialog" - "wxDialog" - "dialog_track_options.cpp" - "dialog_track_options.h" - "" - "Tracks and Vias Sizes" - 1 - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "Tiled" - 0 - 1 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - "MAYBE_RESIZE_BORDER" - 0 - 1 - -1 - -1 - 400 - 300 - 0 - "" - - "wxBoxSizer H" - "dialog-control-document" - "" - "sizer" - 0 - 1 - 0 - 0 - "wbBoxSizerProxy" - "Horizontal" - "" - 0 - 0 - 0 - "<Any platform>" - - "wxStaticBoxSizer V" - "dialog-control-document" - "" - "sizer" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbStaticBoxSizerProxy" - "wxID_ANY" - -1 - "Vias:" - "" - "" - "" - "" - 0 - 1 - "wxStaticBox" - "Vertical" - "Centre" - "Expand" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_ViaSizeTitle" - "Via Size" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbTextCtrlProxy" - "ID_TEXTCTRL" - 10001 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptViaSize" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_ViaDefaultDrillValueTitle" - "Default Via Drill" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL1" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbTextCtrlProxy" - "ID_TEXTCTRL1" - 10002 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptViaDrill" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_ViaAltDrillValueTitle" - "Alternate Via Drill" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL2" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbTextCtrlProxy" - "ID_TEXTCTRL2" - 10003 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptCustomViaDrill" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - - - "wxRadioBox: ID_VIA_TYPE_SELECTION" - "dialog-control-document" - "" - "radiobox" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbRadioBoxProxy" - "ID_VIA_TYPE_SELECTION" - 10004 - "" - "wxRadioBox" - "wxRadioBox" - 1 - 0 - "" - "" - "m_OptViaType" - "Default Via Type" - 1 - "Through Via|Blind or Buried Via " - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 1 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - - - - "wxStaticBoxSizer V" - "dialog-control-document" - "" - "sizer" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticBoxSizerProxy" - "wxID_ANY" - -1 - "Micro Vias:" - "" - "" - "" - "" - 0 - 1 - "wxStaticBox" - "Vertical" - "Centre" - "Expand" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_MicroViaSizeTitle" - "Micro Via Size" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL7" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbTextCtrlProxy" - "ID_TEXTCTRL7" - 10008 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_MicroViaSizeCtrl" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_MicroViaDrillTitle" - "Micro Via Drill" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL6" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbTextCtrlProxy" - "ID_TEXTCTRL6" - 10010 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_MicroViaDrillCtrl" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - - - "Spacer" - "dialog-control-document" - "" - "spacer" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbSpacerProxy" - 5 - 5 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" - - - "wxCheckBox: ID_CHECKBOX_ALLOWS_MICROVIA" - "dialog-control-document" - "" - "checkbox" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbCheckBoxProxy" - "wxEVT_COMMAND_CHECKBOX_CLICKED|OnCheckboxAllowsMicroviaClick|NONE||WinEDA_PcbTracksDialog" - "ID_CHECKBOX_ALLOWS_MICROVIA" - 10009 - "" - "wxCheckBox" - "wxCheckBox" - 1 - 0 - "" - "" - "m_AllowMicroViaCtrl" - "Allows Micro Vias" - 0 - "Allows use of micro vias -They are very small vias only from an external copper layer to its near neightbour -" - "" - "g_DesignSettings.m_MicroViasAllowed" - "wxGenericValidator(& %VARIABLE%)" - "" - "" - "" - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - - - - "wxBoxSizer V" - "dialog-control-document" - "" - "sizer" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbBoxSizerProxy" - "Vertical" - "" - "Centre" - "Expand" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_TrackWidthTitle" - "Track Width" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL3" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbTextCtrlProxy" - "ID_TEXTCTRL3" - 10005 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptTrackWidth" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - 0 - - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_TrackClearanceTitle" - "Clearance" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL4" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbTextCtrlProxy" - "ID_TEXTCTRL4" - 10006 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptTrackClearance" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - 0 - - - "wxStaticText: wxID_STATIC" - "dialog-control-document" - "" - "statictext" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbStaticTextProxy" - "wxID_STATIC" - 5105 - "" - "wxStaticText" - "wxStaticText" - 1 - 0 - "" - "" - "m_MaskClearanceTitle" - "Mask clearance" - -1 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Left" - "Centre" - 0 - 5 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - "" - "" - - - "wxTextCtrl: ID_TEXTCTRL5" - "dialog-control-document" - "" - "textctrl" - 0 - 1 - 0 - 0 - "24/4/2006" - "wbTextCtrlProxy" - "ID_TEXTCTRL5" - 10007 - "" - "wxTextCtrl" - "wxTextCtrl" - 1 - 0 - "" - "" - "m_OptMaskMargin" - "" - 0 - "" - "" - "" - "" - "" - 0 - 1 - "<Any platform>" - "" - "" - "" - "" - "" - "" - "" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - "" - "" - 0 - - - - "wxBoxSizer V" - "dialog-control-document" - "" - "sizer" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbBoxSizerProxy" - "Vertical" - "" - "Centre" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "<Any platform>" - - "wxButton: wxID_OK" - "dialog-control-document" - "" - "dialogcontrol" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick" - "wxID_OK" - 5100 - "" - "wxButton" - "wxButton" - 1 - 0 - "" - "" - "" - "&OK" - 0 - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "D20000" - "" - 0 - 1 - "<Any platform>" - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - - - "wxButton: wxID_CANCEL" - "dialog-control-document" - "" - "dialogcontrol" - 0 - 1 - 0 - 0 - "11/1/2008" - "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick" - "wxID_CANCEL" - 5101 - "" - "wxButton" - "wxButton" - 1 - 0 - "" - "" - "" - "&Cancel" - 0 - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "0000FF" - "" - 0 - 1 - "<Any platform>" - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - "" - -1 - -1 - -1 - -1 - "Expand" - "Centre" - 0 - 5 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - "" - "" - - - - - - - "Sources" - "html-document" - "" - "sourcesfolder" - 1 - 1 - 0 - 1 - - "dialog_track_options.rc" - "source-editor-document" - "dialog_track_options.rc" - "source-editor" - 0 - 0 - 1 - 0 - "24/4/2006" - "" - - - - "Images" - "html-document" - "" - "bitmapsfolder" - 1 - 1 - 0 - 1 - - - - -
diff --git a/pcbnew/dialog_track_options.rc b/pcbnew/dialog_track_options.rc deleted file mode 100644 index b86c4e2265..0000000000 --- a/pcbnew/dialog_track_options.rc +++ /dev/null @@ -1 +0,0 @@ -#include "wx/msw/wx.rc" diff --git a/pcbnew/dialog_track_options_base.cpp b/pcbnew/dialog_track_options_base.cpp new file mode 100644 index 0000000000..0aa57db941 --- /dev/null +++ b/pcbnew/dialog_track_options_base.cpp @@ -0,0 +1,152 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Apr 16 2008) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "dialog_track_options_base.h" + +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE( DIALOG_TRACKS_OPTIONS_BASE, wxDialog ) + EVT_INIT_DIALOG( DIALOG_TRACKS_OPTIONS_BASE::_wxFB_OnInitDialog ) + EVT_CHECKBOX( wxID_ANY, DIALOG_TRACKS_OPTIONS_BASE::_wxFB_OnCheckboxAllowsMicroviaClick ) + EVT_BUTTON( wxID_OK, DIALOG_TRACKS_OPTIONS_BASE::_wxFB_OnButtonOkClick ) + EVT_BUTTON( wxID_CANCEL, DIALOG_TRACKS_OPTIONS_BASE::_wxFB_OnButtonCancelClick ) +END_EVENT_TABLE() + +DIALOG_TRACKS_OPTIONS_BASE::DIALOG_TRACKS_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bMainSizer; + bMainSizer = new wxBoxSizer( wxHORIZONTAL ); + + wxStaticBoxSizer* sbLeftSizer; + sbLeftSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Vias:") ), wxVERTICAL ); + + m_ViaSizeTitle = new wxStaticText( this, wxID_ANY, _("Via size"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaSizeTitle->Wrap( -1 ); + sbLeftSizer->Add( m_ViaSizeTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptViaSize = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptViaSize->SetToolTip( _("Enter the current via diameter.") ); + + sbLeftSizer->Add( m_OptViaSize, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_ViaDefaultDrillValueTitle = new wxStaticText( this, wxID_ANY, _("Default Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaDefaultDrillValueTitle->Wrap( -1 ); + sbLeftSizer->Add( m_ViaDefaultDrillValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptViaDrill = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptViaDrill->SetToolTip( _("Enter the default via drill diameter\nAll vias drills not set to a specific drill value will have this drill value.") ); + + sbLeftSizer->Add( m_OptViaDrill, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_ViaAltDrillValueTitle = new wxStaticText( this, wxID_ANY, _("Specific Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaAltDrillValueTitle->Wrap( -1 ); + sbLeftSizer->Add( m_ViaAltDrillValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptCustomViaDrill = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptCustomViaDrill->SetToolTip( _("Use a specific drill value for all vias that must have a given drill value,\nand set the via hole to this specific drill value using the pop up menu.") ); + + sbLeftSizer->Add( m_OptCustomViaDrill, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + wxString m_OptViaTypeChoices[] = { _("Through Via"), _("Blind or Buried Via") }; + int m_OptViaTypeNChoices = sizeof( m_OptViaTypeChoices ) / sizeof( wxString ); + m_OptViaType = new wxRadioBox( this, wxID_ANY, _("Default Via Type"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeNChoices, m_OptViaTypeChoices, 1, wxRA_SPECIFY_COLS ); + m_OptViaType->SetSelection( 0 ); + m_OptViaType->SetToolTip( _("Select the current via type.\nTrough via is the usual selection") ); + + sbLeftSizer->Add( m_OptViaType, 0, wxALL, 5 ); + + bMainSizer->Add( sbLeftSizer, 1, wxEXPAND, 5 ); + + wxStaticBoxSizer* sbMiddleLeftSizer; + sbMiddleLeftSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Micro Vias:") ), wxVERTICAL ); + + m_MicroViaSizeTitle = new wxStaticText( this, wxID_ANY, _("Micro Via Size"), wxDefaultPosition, wxDefaultSize, 0 ); + m_MicroViaSizeTitle->Wrap( -1 ); + sbMiddleLeftSizer->Add( m_MicroViaSizeTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_MicroViaSizeCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + sbMiddleLeftSizer->Add( m_MicroViaSizeCtrl, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_MicroViaDrillTitle = new wxStaticText( this, wxID_ANY, _("Micro Via Drill"), wxDefaultPosition, wxDefaultSize, 0 ); + m_MicroViaDrillTitle->Wrap( -1 ); + sbMiddleLeftSizer->Add( m_MicroViaDrillTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_MicroViaDrillCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + sbMiddleLeftSizer->Add( m_MicroViaDrillCtrl, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + sbMiddleLeftSizer->Add( 10, 10, 0, 0, 5 ); + + m_AllowMicroViaCtrl = new wxCheckBox( this, wxID_ANY, _("Allows Micro Vias"), wxDefaultPosition, wxDefaultSize, 0 ); + + m_AllowMicroViaCtrl->SetToolTip( _("Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n") ); + + sbMiddleLeftSizer->Add( m_AllowMicroViaCtrl, 0, wxALL, 5 ); + + bMainSizer->Add( sbMiddleLeftSizer, 1, wxEXPAND, 5 ); + + wxStaticBoxSizer* sbMiddleRightSizer; + sbMiddleRightSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Dimensions:") ), wxVERTICAL ); + + m_TrackWidthTitle = new wxStaticText( this, wxID_ANY, _("Track Width"), wxDefaultPosition, wxDefaultSize, 0 ); + m_TrackWidthTitle->Wrap( -1 ); + sbMiddleRightSizer->Add( m_TrackWidthTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptTrackWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptTrackWidth->SetToolTip( _("Enter the current track width") ); + + sbMiddleRightSizer->Add( m_OptTrackWidth, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_TrackClearanceTitle = new wxStaticText( this, wxID_ANY, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 ); + m_TrackClearanceTitle->Wrap( -1 ); + sbMiddleRightSizer->Add( m_TrackClearanceTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptTrackClearance = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptTrackClearance->SetToolTip( _("This is the clearance between tracks, vias and pads for DRC.") ); + + sbMiddleRightSizer->Add( m_OptTrackClearance, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + sbMiddleRightSizer->Add( 10, 10, 0, 0, 5 ); + + m_MaskClearanceTitle = new wxStaticText( this, wxID_ANY, _("Mask clearance"), wxDefaultPosition, wxDefaultSize, 0 ); + m_MaskClearanceTitle->Wrap( -1 ); + sbMiddleRightSizer->Add( m_MaskClearanceTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OptMaskMargin = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_OptMaskMargin->SetToolTip( _("This is the clearance between pads and the mask") ); + + sbMiddleRightSizer->Add( m_OptMaskMargin, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + bMainSizer->Add( sbMiddleRightSizer, 1, wxEXPAND, 5 ); + + wxBoxSizer* bRightSizer; + bRightSizer = new wxBoxSizer( wxVERTICAL ); + + m_buttonOK = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonOK->SetDefault(); + m_buttonOK->SetForegroundColour( wxColour( 194, 0, 0 ) ); + + bRightSizer->Add( m_buttonOK, 0, wxALL, 5 ); + + m_buttonCANCEL = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonCANCEL->SetForegroundColour( wxColour( 2, 2, 196 ) ); + + bRightSizer->Add( m_buttonCANCEL, 0, wxALL, 5 ); + + bMainSizer->Add( bRightSizer, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( bMainSizer ); + this->Layout(); + bMainSizer->Fit( this ); +} + +DIALOG_TRACKS_OPTIONS_BASE::~DIALOG_TRACKS_OPTIONS_BASE() +{ +} diff --git a/pcbnew/dialog_track_options_base.fbp b/pcbnew/dialog_track_options_base.fbp new file mode 100644 index 0000000000..2059c5db9e --- /dev/null +++ b/pcbnew/dialog_track_options_base.fbp @@ -0,0 +1,1212 @@ + + + + + + C++ + 1 + UTF-8 + table + dialog_track_options_base + 1000 + none + 1 + DialogTrackAndViasOptions + + . + + 1 + 1 + 0 + + + + + 1 + + + + 0 + wxID_ANY + + + DIALOG_TRACKS_OPTIONS_BASE + + + wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + + Tracks and Vias Sizes + + + + + + + + + + + + + + OnInitDialog + + + + + + + + + + + + + + + + + + + + + + + bMainSizer + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + wxID_ANY + Vias: + + sbLeftSizer + wxVERTICAL + none + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Via size + + + m_ViaSizeTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptViaSize + protected + + + + + Enter the current via diameter. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Default Via Drill + + + m_ViaDefaultDrillValueTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptViaDrill + protected + + + + + Enter the default via drill diameter All vias drills not set to a specific drill value will have this drill value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Specific Via Drill + + + m_ViaAltDrillValueTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptCustomViaDrill + protected + + + + + Use a specific drill value for all vias that must have a given drill value, and set the via hole to this specific drill value using the pop up menu. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + "Through Via" "Blind or Buried Via" + + 1 + + + 0 + wxID_ANY + Default Via Type + 1 + + + m_OptViaType + protected + + 0 + + wxRA_SPECIFY_COLS + + Select the current via type. Trough via is the usual selection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + wxID_ANY + Micro Vias: + + sbMiddleLeftSizer + wxVERTICAL + none + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Micro Via Size + + + m_MicroViaSizeTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_MicroViaSizeCtrl + protected + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Micro Via Drill + + + m_MicroViaDrillTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_MicroViaDrillCtrl + protected + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + + 0 + + 10 + protected + 10 + + + + 5 + wxALL + 0 + + + 0 + + 1 + + + 0 + wxID_ANY + Allows Micro Vias + + + m_AllowMicroViaCtrl + protected + + + + + Allows use of micro vias They are very small vias only from an external copper layer to its near neightbour + + + + + OnCheckboxAllowsMicroviaClick + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + wxID_ANY + Dimensions: + + sbMiddleRightSizer + wxVERTICAL + none + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Track Width + + + m_TrackWidthTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptTrackWidth + protected + + + + + Enter the current track width + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Clearance + + + m_TrackClearanceTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptTrackClearance + protected + + + + + This is the clearance between tracks, vias and pads for DRC. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + + 0 + + 10 + protected + 10 + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Mask clearance + + + m_MaskClearanceTitle + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OptMaskMargin + protected + + + + + This is the clearance between pads and the mask + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + + bRightSizer + wxVERTICAL + none + + 5 + wxALL + 0 + + + + 1 + 1 + 194,0,0 + + 0 + wxID_OK + OK + + + m_buttonOK + protected + + + + + + + + + OnButtonOkClick + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + 0 + 1 + 2,2,196 + + 0 + wxID_CANCEL + Cancel + + + m_buttonCANCEL + protected + + + + + + + + + OnButtonCancelClick + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialog_track_options_base.h b/pcbnew/dialog_track_options_base.h new file mode 100644 index 0000000000..cab59e7cbd --- /dev/null +++ b/pcbnew/dialog_track_options_base.h @@ -0,0 +1,81 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Apr 16 2008) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __dialog_track_options_base__ +#define __dialog_track_options_base__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +/// Class DIALOG_TRACKS_OPTIONS_BASE +/////////////////////////////////////////////////////////////////////////////// +class DIALOG_TRACKS_OPTIONS_BASE : public wxDialog +{ + DECLARE_EVENT_TABLE() + private: + + // Private event handlers + void _wxFB_OnInitDialog( wxInitDialogEvent& event ){ OnInitDialog( event ); } + void _wxFB_OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ){ OnCheckboxAllowsMicroviaClick( event ); } + void _wxFB_OnButtonOkClick( wxCommandEvent& event ){ OnButtonOkClick( event ); } + void _wxFB_OnButtonCancelClick( wxCommandEvent& event ){ OnButtonCancelClick( event ); } + + + protected: + wxStaticText* m_ViaSizeTitle; + wxTextCtrl* m_OptViaSize; + wxStaticText* m_ViaDefaultDrillValueTitle; + wxTextCtrl* m_OptViaDrill; + wxStaticText* m_ViaAltDrillValueTitle; + wxTextCtrl* m_OptCustomViaDrill; + wxRadioBox* m_OptViaType; + wxStaticText* m_MicroViaSizeTitle; + wxTextCtrl* m_MicroViaSizeCtrl; + wxStaticText* m_MicroViaDrillTitle; + wxTextCtrl* m_MicroViaDrillCtrl; + + wxCheckBox* m_AllowMicroViaCtrl; + wxStaticText* m_TrackWidthTitle; + wxTextCtrl* m_OptTrackWidth; + wxStaticText* m_TrackClearanceTitle; + wxTextCtrl* m_OptTrackClearance; + + wxStaticText* m_MaskClearanceTitle; + wxTextCtrl* m_OptMaskMargin; + wxButton* m_buttonOK; + wxButton* m_buttonCANCEL; + + // Virtual event handlers, overide them in your derived class + virtual void OnInitDialog( wxInitDialogEvent& event ){ event.Skip(); } + virtual void OnCheckboxAllowsMicroviaClick( wxCommandEvent& event ){ event.Skip(); } + virtual void OnButtonOkClick( wxCommandEvent& event ){ event.Skip(); } + virtual void OnButtonCancelClick( wxCommandEvent& event ){ event.Skip(); } + + + public: + DIALOG_TRACKS_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Tracks and Vias Sizes"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~DIALOG_TRACKS_OPTIONS_BASE(); + +}; + +#endif //__dialog_track_options_base__ diff --git a/pcbnew/makefile.gtk b/pcbnew/makefile.gtk index ade48fd3f3..964ff168e4 100644 --- a/pcbnew/makefile.gtk +++ b/pcbnew/makefile.gtk @@ -3,11 +3,6 @@ include ../libs.linux -BOOST_LIB = ../ - -# Additional compiler flags -CPPFLAGS += -I $(BOOST_LIB) - TARGET = pcbnew all: $(TARGET) @@ -18,7 +13,8 @@ deps: include makefile.include -include *.d -CPPFLAGS += $(EXTRACPPFLAGS) +# Additional compiler flags +CPPFLAGS += $(EXTRACPPFLAGS) -I$(BOOST_LIB) EDACPPFLAGS = $(CPPFLAGS) $(BOOST_LIB) diff --git a/pcbnew/makefile.include b/pcbnew/makefile.include index ab7aa7a062..b850b3956f 100644 --- a/pcbnew/makefile.include +++ b/pcbnew/makefile.include @@ -76,6 +76,8 @@ OBJECTS= $(TARGET).o\ dialog_general_options_BoardEditor_base.o\ dialog_display_options_base.o\ dialog_orient_footprints.o\ + dialog_track_options.o\ + dialog_track_options_base.o\ muwave_command.o \ initpcb.o\ editrack.o \ @@ -132,7 +134,7 @@ setpage.o: ../share/setpage.cpp menubarpcb.o: menubarpcb.cpp -dialog_general_options.o: dialog_general_options.cpp dialog_track_options.cpp\ +dialog_general_options.o: dialog_general_options.cpp\ dialog_graphic_items_options.cpp dialog_general_options_BoardEditor_base.h dialog_general_options.h dialog_generaloptions_BoardEditor_base.o: dialog_general_options_BoardEditor_base.cpp dialog_generaloptions_BoardEditor_base.h diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index b023f1b9e7..353b41af2c 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -490,19 +490,19 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) msg = _( "Set via hole to a specific value. This specific value is currently" ); msg << wxT(" ") << ReturnStringFromValue( g_UnitMetric, g_DesignSettings.m_ViaDrillCustomValue, m_InternalUnits ); ADD_MENUITEM_WITH_HELP( via_mnu, ID_POPUP_PCB_VIA_HOLE_TO_VALUE, - _( "Set Via Hole to Alt Value" ), msg, + _( "Set Via Hole to Specific Value" ), msg, options_new_pad_xpm ); msg = _( "Set a specific via hole value. This value is currently" ); msg << wxT(" ") << ReturnStringFromValue( g_UnitMetric, g_DesignSettings.m_ViaDrillCustomValue, m_InternalUnits ); ADD_MENUITEM_WITH_HELP( via_mnu, ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE, - _( "Set the Via Hole Alt Value" ), msg, edit_xpm ); + _( "Change the Current Specific Drill Value" ), msg, edit_xpm ); ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_EXPORT, _( - "Export Via Hole to Alt Value" ), export_options_pad_xpm ); + "Use this Via Hole as Specific Value" ), export_options_pad_xpm ); ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS, - _( "Export Via Hole to Others id Vias" ), global_options_pad_xpm ); + _( "Export this Via Hole to Others id Vias" ), global_options_pad_xpm ); ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT, _( "Set ALL Via Holes to Default" ), apply_xpm ); - if( Track->IsDrillDefault() ) // Can't export the drill value, because this value is 0 + if( Track->IsDrillDefault() ) // Can't export the drill value, because this value is 0 (default) { via_mnu->Enable( ID_POPUP_PCB_VIA_HOLE_EXPORT, FALSE ); }