improving Dialogs
This commit is contained in:
@ -17,13 +17,13 @@ import wx.xrc
|
|||||||
class Move2LayerDlg ( wx.Dialog ):
|
class Move2LayerDlg ( wx.Dialog ):
|
||||||
|
|
||||||
def __init__( self, parent ):
|
def __init__( self, parent ):
|
||||||
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Move to Layer", pos = wx.DefaultPosition, size = wx.Size( 325,190 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Move to Layer", pos = wx.DefaultPosition, size = wx.Size( 568,263 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||||
|
|
||||||
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
|
||||||
bSizer3 = wx.BoxSizer( wx.VERTICAL )
|
bSizer3 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Objects to Move to chosen Layer", wx.DefaultPosition, wx.DefaultSize, 0 )
|
self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Objects will Move to chosen Layer", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
self.m_comment.Wrap( -1 )
|
self.m_comment.Wrap( -1 )
|
||||||
|
|
||||||
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
@ -63,6 +63,11 @@ class Move2LayerDlg ( wx.Dialog ):
|
|||||||
|
|
||||||
bSizer3.Add( bSizer1, 0, wx.ALIGN_RIGHT|wx.EXPAND, 5 )
|
bSizer3.Add( bSizer1, 0, wx.ALIGN_RIGHT|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
bSizer4 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer4, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
self.SetSizer( bSizer3 )
|
self.SetSizer( bSizer3 )
|
||||||
self.Layout()
|
self.Layout()
|
||||||
|
75
MoveToLayer/Move2LayerDlg.py.bak
Normal file
75
MoveToLayer/Move2LayerDlg.py.bak
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Python code generated with wxFormBuilder (version Oct 26 2018)
|
||||||
|
## http://www.wxformbuilder.org/
|
||||||
|
##
|
||||||
|
## PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import wx.xrc
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class Move2LayerDlg
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class Move2LayerDlg ( wx.Dialog ):
|
||||||
|
|
||||||
|
def __init__( self, parent ):
|
||||||
|
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Move to Layer", pos = wx.DefaultPosition, size = wx.Size( 325,190 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||||
|
|
||||||
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
|
||||||
|
bSizer3 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Objects to Move to chosen Layer", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_comment.Wrap( -1 )
|
||||||
|
|
||||||
|
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
bSizer31 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_staticTextLayer = wx.StaticText( self, wx.ID_ANY, u"Layer", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_staticTextLayer.Wrap( -1 )
|
||||||
|
|
||||||
|
bSizer31.Add( self.m_staticTextLayer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
m_comboBoxLayerChoices = []
|
||||||
|
self.m_comboBoxLayer = wx.ComboBox( self, wx.ID_ANY, u"Combo!", wx.DefaultPosition, wx.Size( 250,-1 ), m_comboBoxLayerChoices, 0 )
|
||||||
|
bSizer31.Add( self.m_comboBoxLayer, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer31, 0, 0, 5 )
|
||||||
|
|
||||||
|
self.m_staticline1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
bSizer3.Add( self.m_staticline1, 0, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
bSizer1 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_staticText101 = wx.StaticText( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_staticText101.Wrap( -1 )
|
||||||
|
|
||||||
|
bSizer1.Add( self.m_staticText101, 1, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_buttonOK = wx.Button( self, wx.ID_OK, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
|
||||||
|
self.m_buttonOK.SetDefault()
|
||||||
|
bSizer1.Add( self.m_buttonOK, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_buttonCancel = wx.Button( self, wx.ID_CANCEL, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
bSizer1.Add( self.m_buttonCancel, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer1, 0, wx.ALIGN_RIGHT|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( bSizer3 )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
self.Centre( wx.BOTH )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
@ -25,19 +25,20 @@ from pcbnew import *
|
|||||||
import base64
|
import base64
|
||||||
from wx.lib.embeddedimage import PyEmbeddedImage
|
from wx.lib.embeddedimage import PyEmbeddedImage
|
||||||
import os
|
import os
|
||||||
___version___="1.2.2"
|
___version___="1.2.3"
|
||||||
|
|
||||||
from . import Move2LayerDlg
|
from . import Move2LayerDlg
|
||||||
|
|
||||||
|
|
||||||
def MoveToLayer(pcb,layerId):
|
def MoveToLayer(pcb,layerId):
|
||||||
|
found_selected=False
|
||||||
for drw in pcb.GetDrawings():
|
for drw in pcb.GetDrawings():
|
||||||
if drw.IsSelected():
|
if drw.IsSelected():
|
||||||
drw.SetLayer(layerId)
|
drw.SetLayer(layerId)
|
||||||
found_selected=True
|
found_selected=True
|
||||||
|
|
||||||
if found_selected!=True:
|
if found_selected!=True:
|
||||||
LogMsg="select lines to be moved to new layer\n"
|
LogMsg="select drawings to be moved to new layer\n"
|
||||||
LogMsg+="use GAL for selecting lines"
|
LogMsg+="use GAL for selecting lines"
|
||||||
wx.LogMessage(LogMsg)
|
wx.LogMessage(LogMsg)
|
||||||
else:
|
else:
|
||||||
|
153
MoveToLayer/move_to_layer.py.bak
Normal file
153
MoveToLayer/move_to_layer.py.bak
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
# move_to_edge_cuts.py
|
||||||
|
#
|
||||||
|
# Copyright (C) 2017 KiCad Developers, see CHANGELOG.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, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
# MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import pcbnew
|
||||||
|
from pcbnew import *
|
||||||
|
import base64
|
||||||
|
from wx.lib.embeddedimage import PyEmbeddedImage
|
||||||
|
import os
|
||||||
|
___version___="1.2.2"
|
||||||
|
|
||||||
|
from . import Move2LayerDlg
|
||||||
|
|
||||||
|
|
||||||
|
def MoveToLayer(pcb,layerId):
|
||||||
|
for drw in pcb.GetDrawings():
|
||||||
|
if drw.IsSelected():
|
||||||
|
drw.SetLayer(layerId)
|
||||||
|
found_selected=True
|
||||||
|
|
||||||
|
if found_selected!=True:
|
||||||
|
LogMsg="select lines to be moved to new layer\n"
|
||||||
|
LogMsg+="use GAL for selecting lines"
|
||||||
|
wx.LogMessage(LogMsg)
|
||||||
|
else:
|
||||||
|
pcbnew.Refresh()
|
||||||
|
layerName = pcbnew.GetBoard().GetLayerName(layerId)
|
||||||
|
LogMsg="selected drawings moved to "+layerName+" layer"
|
||||||
|
wx.LogMessage(LogMsg)
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Python plugin stuff
|
||||||
|
|
||||||
|
class Move2Layer_Dlg(Move2LayerDlg.Move2LayerDlg):
|
||||||
|
# from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||||
|
# hack for new wxFormBuilder generating code incompatible with old wxPython
|
||||||
|
# noinspection PyMethodOverriding
|
||||||
|
def SetSizeHints(self, sz1, sz2):
|
||||||
|
if wx.__version__ < '4.0':
|
||||||
|
self.SetSizeHintsSz(sz1, sz2)
|
||||||
|
else:
|
||||||
|
super(Move2Layer_Dlg, self).SetSizeHints(sz1, sz2)
|
||||||
|
|
||||||
|
#def onApplyClick(self, event):
|
||||||
|
# return self.EndModal(wx.ID_OK)
|
||||||
|
#
|
||||||
|
#def onCancelClick(self, event):
|
||||||
|
# return self.EndModal(wx.ID_CANCEL)
|
||||||
|
|
||||||
|
def __init__(self, parent):
|
||||||
|
import wx
|
||||||
|
Move2LayerDlg.Move2LayerDlg.__init__(self, parent)
|
||||||
|
#self.GetSizer().Fit(self)
|
||||||
|
self.SetMinSize(self.GetSize())
|
||||||
|
# self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||||
|
# self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||||
|
# if wx.__version__ < '4.0':
|
||||||
|
# self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
|
# self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
|
# else:
|
||||||
|
# self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
|
# self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
|
#
|
||||||
|
class move_to_draw_layer( pcbnew.ActionPlugin ):
|
||||||
|
"""
|
||||||
|
A script to Move Selected Drawing(s) to chosen new Layer (available only in GAL)
|
||||||
|
How to use:
|
||||||
|
- move to GAL
|
||||||
|
- select some draw objects
|
||||||
|
- call the plugin
|
||||||
|
- select the new layer
|
||||||
|
- selected draw objects will be moved to new layer
|
||||||
|
"""
|
||||||
|
|
||||||
|
def defaults( self ):
|
||||||
|
"""
|
||||||
|
Method defaults must be redefined
|
||||||
|
self.name should be the menu label to use
|
||||||
|
self.category should be the category (not yet used)
|
||||||
|
self.description should be a comprehensive description
|
||||||
|
of the plugin
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
self.name = "Move Selected Drawings to chosen Layer\nversion "+___version___
|
||||||
|
self.category = "Modify PCB"
|
||||||
|
self.description = "Move Selected Drawings to chosen Layer on an existing PCB"
|
||||||
|
self.icon_file_name = os.path.join(os.path.dirname(__file__), "./move2layer.png")
|
||||||
|
self.show_toolbar_button = True
|
||||||
|
|
||||||
|
def Run( self ):
|
||||||
|
found_selected=False
|
||||||
|
|
||||||
|
board = pcbnew.GetBoard()
|
||||||
|
fileName = GetBoard().GetFileName()
|
||||||
|
# # dicts for converting layer name to id, used by _get_layer
|
||||||
|
# _std_layer_dict = {pcbnew.BOARD_GetStandardLayerName(n): n
|
||||||
|
# for n in range(pcbnew.PCB_LAYER_ID_COUNT)}
|
||||||
|
# #_std_layer_names = {s: n for n, s in _std_layer_dict.iteritems()}
|
||||||
|
# _std_layer_names = {s: n for n, s in _std_layer_dict.items()}
|
||||||
|
# _brd_layer_dict = {pcbnew.GetBoard().GetLayerName(n): n
|
||||||
|
# for n in range(pcbnew.PCB_LAYER_ID_COUNT)}
|
||||||
|
# #_std_layer_names = {s: n for n, s in _std_layer_dict.iteritems()}
|
||||||
|
# _brd_layer_names = {s: n for n, s in _brd_layer_dict.items()}
|
||||||
|
|
||||||
|
|
||||||
|
if 0: #len(fileName) == 0:
|
||||||
|
wx.LogMessage("A board needs to be saved/loaded\nto run the plugin!")
|
||||||
|
else:
|
||||||
|
#from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||||
|
#hack wxFormBuilder py2/py3
|
||||||
|
_pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||||
|
aParameters = Move2Layer_Dlg(_pcbnew_frame)
|
||||||
|
aParameters.Show()
|
||||||
|
for l in range(pcbnew.PCB_LAYER_ID_COUNT):
|
||||||
|
aParameters.m_comboBoxLayer.Append(pcbnew.GetBoard().GetLayerName(l))
|
||||||
|
aParameters.m_comboBoxLayer.Select(44)
|
||||||
|
modal_result = aParameters.ShowModal()
|
||||||
|
if modal_result == wx.ID_OK:
|
||||||
|
LayerName = aParameters.m_comboBoxLayer.GetStringSelection()
|
||||||
|
LayerIndex = aParameters.m_comboBoxLayer.FindString(LayerName)
|
||||||
|
LayerStdName = pcbnew.BOARD_GetStandardLayerName(LayerIndex)
|
||||||
|
#wx.LogMessage(LayerName+';'+str(LayerIndex)+';'+LayerStdName)
|
||||||
|
MoveToLayer(board, LayerIndex)
|
||||||
|
else:
|
||||||
|
None # Cancel
|
||||||
|
|
||||||
|
LogMsg=''
|
||||||
|
msg="'move to layer tool'\n"
|
||||||
|
msg+="version = "+___version___
|
||||||
|
|
||||||
|
|
||||||
|
#move_to_draw_layer().register()
|
||||||
|
|
@ -45,7 +45,7 @@
|
|||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="name">Move2LayerDlg</property>
|
<property name="name">Move2LayerDlg</property>
|
||||||
<property name="pos"></property>
|
<property name="pos"></property>
|
||||||
<property name="size">325,190</property>
|
<property name="size">568,263</property>
|
||||||
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
<property name="subclass"></property>
|
<property name="subclass"></property>
|
||||||
<property name="title">Move to Layer</property>
|
<property name="title">Move to Layer</property>
|
||||||
@ -530,6 +530,17 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer4</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
536
MoveToLayer/move_to_layer_dlg.fbp.bak
Normal file
536
MoveToLayer/move_to_layer_dlg.fbp.bak
Normal file
@ -0,0 +1,536 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<wxFormBuilder_Project>
|
||||||
|
<FileVersion major="1" minor="15" />
|
||||||
|
<object class="Project" expanded="1">
|
||||||
|
<property name="class_decoration"></property>
|
||||||
|
<property name="code_generation">Python</property>
|
||||||
|
<property name="disconnect_events">1</property>
|
||||||
|
<property name="disconnect_mode">source_name</property>
|
||||||
|
<property name="disconnect_php_events">0</property>
|
||||||
|
<property name="disconnect_python_events">0</property>
|
||||||
|
<property name="embedded_files_path">res</property>
|
||||||
|
<property name="encoding">UTF-8</property>
|
||||||
|
<property name="event_generation">connect</property>
|
||||||
|
<property name="file">Move2LayerDlg</property>
|
||||||
|
<property name="first_id">1000</property>
|
||||||
|
<property name="help_provider">none</property>
|
||||||
|
<property name="indent_with_spaces"></property>
|
||||||
|
<property name="internationalize">0</property>
|
||||||
|
<property name="name">Move2LayerDlg</property>
|
||||||
|
<property name="namespace"></property>
|
||||||
|
<property name="path">.</property>
|
||||||
|
<property name="precompiled_header"></property>
|
||||||
|
<property name="relative_path">1</property>
|
||||||
|
<property name="skip_lua_events">1</property>
|
||||||
|
<property name="skip_php_events">1</property>
|
||||||
|
<property name="skip_python_events">1</property>
|
||||||
|
<property name="ui_table">UI</property>
|
||||||
|
<property name="use_enum">0</property>
|
||||||
|
<property name="use_microsoft_bom">0</property>
|
||||||
|
<object class="Dialog" expanded="1">
|
||||||
|
<property name="aui_managed">0</property>
|
||||||
|
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="center">wxBOTH</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
|
<property name="extra_style"></property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">Move2LayerDlg</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="size">325,190</property>
|
||||||
|
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="title">Move to Layer</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer3</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Selected Objects will Move to chosen Layer</property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_comment</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag"></property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer31</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Layer</property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticTextLayer</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxComboBox" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="choices"></property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size">-1,-1</property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size">-1,-1</property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_comboBoxLayer</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="selection">-1</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size">250,-1</property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">Combo!</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND | wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticLine" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticline1</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxLI_HORIZONTAL</property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_RIGHT|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer1</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label"></property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticText101</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxButton" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="bitmap"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">0</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="current"></property>
|
||||||
|
<property name="default">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="disabled"></property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="focus"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_OK</property>
|
||||||
|
<property name="label">Apply</property>
|
||||||
|
<property name="margins"></property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_buttonOK</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="position"></property>
|
||||||
|
<property name="pressed"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxButton" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="bitmap"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="current"></property>
|
||||||
|
<property name="default">0</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="disabled"></property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="focus"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_CANCEL</property>
|
||||||
|
<property name="label">Cancel</property>
|
||||||
|
<property name="margins"></property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_buttonCancel</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="position"></property>
|
||||||
|
<property name="pressed"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</wxFormBuilder_Project>
|
2
PcbToDxf/__init__.py
Normal file
2
PcbToDxf/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
from .action_menu_pcb2dxf import pcb2dxf
|
||||||
|
pcb2dxf().register()
|
682
Snap2Grid/Snap2GridDlg.fbp
Normal file
682
Snap2Grid/Snap2GridDlg.fbp
Normal file
@ -0,0 +1,682 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<wxFormBuilder_Project>
|
||||||
|
<FileVersion major="1" minor="15" />
|
||||||
|
<object class="Project" expanded="1">
|
||||||
|
<property name="class_decoration"></property>
|
||||||
|
<property name="code_generation">Python</property>
|
||||||
|
<property name="disconnect_events">1</property>
|
||||||
|
<property name="disconnect_mode">source_name</property>
|
||||||
|
<property name="disconnect_php_events">0</property>
|
||||||
|
<property name="disconnect_python_events">0</property>
|
||||||
|
<property name="embedded_files_path">res</property>
|
||||||
|
<property name="encoding">UTF-8</property>
|
||||||
|
<property name="event_generation">connect</property>
|
||||||
|
<property name="file">Snap2GridDlg</property>
|
||||||
|
<property name="first_id">1000</property>
|
||||||
|
<property name="help_provider">none</property>
|
||||||
|
<property name="indent_with_spaces"></property>
|
||||||
|
<property name="internationalize">0</property>
|
||||||
|
<property name="name">Snap2GridDlg</property>
|
||||||
|
<property name="namespace"></property>
|
||||||
|
<property name="path">.</property>
|
||||||
|
<property name="precompiled_header"></property>
|
||||||
|
<property name="relative_path">1</property>
|
||||||
|
<property name="skip_lua_events">1</property>
|
||||||
|
<property name="skip_php_events">1</property>
|
||||||
|
<property name="skip_python_events">1</property>
|
||||||
|
<property name="ui_table">UI</property>
|
||||||
|
<property name="use_enum">0</property>
|
||||||
|
<property name="use_microsoft_bom">0</property>
|
||||||
|
<object class="Dialog" expanded="1">
|
||||||
|
<property name="aui_managed">0</property>
|
||||||
|
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="center">wxBOTH</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
|
<property name="extra_style"></property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">Snap2GridDlg</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="size">499,394</property>
|
||||||
|
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="title">Snap to Grid</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer3</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Selected Model(s) to Snap
to the Grid</property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_comment</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag"></property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer31</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Grid</property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticTextGrid</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxComboBox" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="choices">"1.0mm (39.37mils)" "0.5mm (19.69mils)" "0.25mm (9.84mils)" "0.1mm (3.94mils)" "2.54mm (100mils)" "1.27mm (50mils)" "0.635mm (25mils)" "0.508mm (20mils)" "0.254mm (10mils)" "0.127mm (5mils)"</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size">-1,-1</property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size">-1,-1</property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_comboBoxGrid</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="selection">0</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size">-1,-1</property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">1.0mm (39.37mils)</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND | wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticLine" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticline1</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxLI_HORIZONTAL</property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxRadioButton" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">GridOrigin reference</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_radioBtnGO</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">0</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxRadioButton" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">AuxOrigin reference</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_radioBtnAO</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">0</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND | wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticLine" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_staticline2</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxLI_HORIZONTAL</property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_RIGHT|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer1</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="spacer" expanded="1">
|
||||||
|
<property name="height">0</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="width">0</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxButton" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="bitmap"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">0</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="current"></property>
|
||||||
|
<property name="default">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="disabled"></property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="focus"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_OK</property>
|
||||||
|
<property name="label">Apply</property>
|
||||||
|
<property name="margins"></property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_buttonOK</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="position"></property>
|
||||||
|
<property name="pressed"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxButton" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="bitmap"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="current"></property>
|
||||||
|
<property name="default">0</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="disabled"></property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="focus"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_CANCEL</property>
|
||||||
|
<property name="label">Cancel</property>
|
||||||
|
<property name="margins"></property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_buttonCancel</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="position"></property>
|
||||||
|
<property name="pressed"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer4</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</wxFormBuilder_Project>
|
88
Snap2Grid/Snap2GridDlg.py
Normal file
88
Snap2Grid/Snap2GridDlg.py
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Python code generated with wxFormBuilder (version Oct 26 2018)
|
||||||
|
## http://www.wxformbuilder.org/
|
||||||
|
##
|
||||||
|
## PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import wx.xrc
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class Snap2GridDlg
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class Snap2GridDlg ( wx.Dialog ):
|
||||||
|
|
||||||
|
def __init__( self, parent ):
|
||||||
|
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Snap to Grid", pos = wx.DefaultPosition, size = wx.Size( 499,394 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||||
|
|
||||||
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
|
||||||
|
bSizer3 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_comment = wx.StaticText( self, wx.ID_ANY, u"Selected Model(s) to Snap\nto the Grid", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_comment.Wrap( -1 )
|
||||||
|
|
||||||
|
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
bSizer31 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_staticTextGrid = wx.StaticText( self, wx.ID_ANY, u"Grid", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_staticTextGrid.Wrap( -1 )
|
||||||
|
|
||||||
|
bSizer31.Add( self.m_staticTextGrid, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
m_comboBoxGridChoices = [ u"1.0mm (39.37mils)", u"0.5mm (19.69mils)", u"0.25mm (9.84mils)", u"0.1mm (3.94mils)", u"2.54mm (100mils)", u"1.27mm (50mils)", u"0.635mm (25mils)", u"0.508mm (20mils)", u"0.254mm (10mils)", u"0.127mm (5mils)" ]
|
||||||
|
self.m_comboBoxGrid = wx.ComboBox( self, wx.ID_ANY, u"1.0mm (39.37mils)", wx.DefaultPosition, wx.Size( -1,-1 ), m_comboBoxGridChoices, 0 )
|
||||||
|
self.m_comboBoxGrid.SetSelection( 0 )
|
||||||
|
bSizer31.Add( self.m_comboBoxGrid, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer31, 0, 0, 5 )
|
||||||
|
|
||||||
|
self.m_staticline1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
bSizer3.Add( self.m_staticline1, 0, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_radioBtnGO = wx.RadioButton( self, wx.ID_ANY, u"GridOrigin reference", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
bSizer3.Add( self.m_radioBtnGO, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_radioBtnAO = wx.RadioButton( self, wx.ID_ANY, u"AuxOrigin reference", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
bSizer3.Add( self.m_radioBtnAO, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
bSizer3.Add( self.m_staticline2, 0, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
bSizer1 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer1.Add( ( 0, 0), 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_buttonOK = wx.Button( self, wx.ID_OK, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
|
||||||
|
self.m_buttonOK.SetDefault()
|
||||||
|
bSizer1.Add( self.m_buttonOK, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_buttonCancel = wx.Button( self, wx.ID_CANCEL, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
bSizer1.Add( self.m_buttonCancel, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer1, 0, wx.ALIGN_RIGHT|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
bSizer4 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3.Add( bSizer4, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( bSizer3 )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
self.Centre( wx.BOTH )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
@ -8,6 +8,10 @@
|
|||||||
|
|
||||||
#import snaptogrid; import importlib; importlib.reload(snaptogrid)
|
#import snaptogrid; import importlib; importlib.reload(snaptogrid)
|
||||||
|
|
||||||
|
### plugins errors
|
||||||
|
#import pcbnew
|
||||||
|
#pcbnew.GetWizardsBackTrace()
|
||||||
|
|
||||||
__version__ = '1.0.1'
|
__version__ = '1.0.1'
|
||||||
import sys, os
|
import sys, os
|
||||||
import pcbnew
|
import pcbnew
|
||||||
@ -17,11 +21,11 @@ from pcbnew import *
|
|||||||
|
|
||||||
use_grid_origin = True
|
use_grid_origin = True
|
||||||
|
|
||||||
gridReference = 2.54 #1.27 #mm pcbnew.FromMM(1.0) #0.1mm
|
gridReference = 0.1 #1.27 #mm pcbnew.FromMM(1.0) #0.1mm
|
||||||
|
|
||||||
gridSizeMM = gridReference
|
gridSizeMM = gridReference
|
||||||
|
|
||||||
#from . import Send2GridDlg
|
from . import Snap2GridDlg
|
||||||
|
|
||||||
sys.path.append(os.path.dirname(__file__))
|
sys.path.append(os.path.dirname(__file__))
|
||||||
|
|
||||||
@ -32,36 +36,36 @@ def wxLogDebug(msg,dbg):
|
|||||||
wx.LogMessage(msg)
|
wx.LogMessage(msg)
|
||||||
#
|
#
|
||||||
|
|
||||||
#class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
||||||
# # from https://github.com/MitjaNemec/Kicad_action_plugins
|
# from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||||
# # hack for new wxFormBuilder generating code incompatible with old wxPython
|
# hack for new wxFormBuilder generating code incompatible with old wxPython
|
||||||
# # noinspection PyMethodOverriding
|
# noinspection PyMethodOverriding
|
||||||
# def SetSizeHints(self, sz1, sz2):
|
def SetSizeHints(self, sz1, sz2):
|
||||||
|
if wx.__version__ < '4.0':
|
||||||
|
self.SetSizeHintsSz(sz1, sz2)
|
||||||
|
else:
|
||||||
|
super(Snap2Grid_Dlg, self).SetSizeHints(sz1, sz2)
|
||||||
|
|
||||||
|
# def onDeleteClick(self, event):
|
||||||
|
# return self.EndModal(wx.ID_DELETE)
|
||||||
|
#
|
||||||
|
# def onConnectClick(self, event):
|
||||||
|
# return self.EndModal(wx.ID_REVERT)
|
||||||
|
|
||||||
|
def __init__(self, parent):
|
||||||
|
import wx
|
||||||
|
Snap2GridDlg.Snap2GridDlg.__init__(self, parent)
|
||||||
|
#self.GetSizer().Fit(self)
|
||||||
|
self.SetMinSize(self.GetSize())
|
||||||
|
#self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||||
|
#self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||||
#if wx.__version__ < '4.0':
|
#if wx.__version__ < '4.0':
|
||||||
# self.SetSizeHintsSz(sz1, sz2)
|
# self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
|
# self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
#else:
|
#else:
|
||||||
# super(RoundTrack_Dlg, self).SetSizeHints(sz1, sz2)
|
# self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
#
|
# self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
# # def onDeleteClick(self, event):
|
|
||||||
# # return self.EndModal(wx.ID_DELETE)
|
|
||||||
# #
|
|
||||||
# # def onConnectClick(self, event):
|
|
||||||
# # return self.EndModal(wx.ID_REVERT)
|
|
||||||
#
|
|
||||||
# def __init__(self, parent):
|
|
||||||
# import wx
|
|
||||||
# Send2GridDlg.Send2GridDlg.__init__(self, parent)
|
|
||||||
# #self.GetSizer().Fit(self)
|
|
||||||
# self.SetMinSize(self.GetSize())
|
|
||||||
# #self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
|
||||||
# #self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
|
||||||
# #if wx.__version__ < '4.0':
|
|
||||||
# # self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
|
||||||
# # self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
|
||||||
# #else:
|
|
||||||
# # self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
|
||||||
# # self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
|
||||||
#
|
|
||||||
# Python plugin stuff
|
# Python plugin stuff
|
||||||
class snap_to_grid( pcbnew.ActionPlugin ):
|
class snap_to_grid( pcbnew.ActionPlugin ):
|
||||||
"""
|
"""
|
||||||
@ -77,7 +81,7 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
|||||||
self.description should be a comprehensive description
|
self.description should be a comprehensive description
|
||||||
of the plugin
|
of the plugin
|
||||||
"""
|
"""
|
||||||
self.name = "Snap Selected Module(s) to Grid\nversion "+__version__
|
self.name = "Snap Selected Modules to Grid \nversion "+__version__
|
||||||
self.category = "Modify PCB"
|
self.category = "Modify PCB"
|
||||||
self.description = "Automaticaly Snap Selected Module(s) to Grid on an existing PCB"
|
self.description = "Automaticaly Snap Selected Module(s) to Grid on an existing PCB"
|
||||||
#self.pcbnew_icon_support = hasattr(self, "show_toolbar_button")
|
#self.pcbnew_icon_support = hasattr(self, "show_toolbar_button")
|
||||||
@ -89,6 +93,29 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
|||||||
#self.pcb = GetBoard()
|
#self.pcb = GetBoard()
|
||||||
import sys,os
|
import sys,os
|
||||||
#mm_ius = 1000000.0
|
#mm_ius = 1000000.0
|
||||||
|
_pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||||
|
#aParameters = RoundTrackDlg(None)
|
||||||
|
aParameters = Snap2Grid_Dlg(_pcbnew_frame)
|
||||||
|
gridIndex = aParameters.m_comboBoxGrid.FindString('0.1mm (3.94mils)')
|
||||||
|
aParameters.m_comboBoxGrid.SetSelection(gridIndex)
|
||||||
|
#aParameters.m_comboBoxGrid.Append('0.1mm (3.94mils)')
|
||||||
|
aParameters.m_radioBtnGO.SetValue(True)
|
||||||
|
aParameters.Show()
|
||||||
|
|
||||||
|
modal_result = aParameters.ShowModal()
|
||||||
|
if modal_result == wx.ID_OK:
|
||||||
|
grid = aParameters.m_comboBoxGrid.GetStringSelection()
|
||||||
|
gridSizeMM = float(grid.split('mm')[0])
|
||||||
|
if aParameters.m_radioBtnGO.GetValue():
|
||||||
|
use_grid_origin = True
|
||||||
|
else:
|
||||||
|
use_grid_origin = False
|
||||||
|
snap2grid(gridSizeMM,use_grid_origin)
|
||||||
|
else:
|
||||||
|
None # Cancel
|
||||||
|
##
|
||||||
|
|
||||||
|
def snap2grid(gridSizeMM,use_grid_origin):
|
||||||
|
|
||||||
pcb = pcbnew.GetBoard()
|
pcb = pcbnew.GetBoard()
|
||||||
gridOrigin = pcb.GetGridOrigin()
|
gridOrigin = pcb.GetGridOrigin()
|
||||||
@ -101,10 +128,33 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
|||||||
if use_grid_origin:
|
if use_grid_origin:
|
||||||
mpx = module.GetPosition().x - gridOrigin.x
|
mpx = module.GetPosition().x - gridOrigin.x
|
||||||
mpy = module.GetPosition().y - gridOrigin.y
|
mpy = module.GetPosition().y - gridOrigin.y
|
||||||
print(mpx,mpy)
|
#print(mpx,mpy)
|
||||||
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.x
|
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.x
|
||||||
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.y
|
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.y
|
||||||
print(mpxOnG,mpyOnG)
|
#print(mpxOnG,mpyOnG)
|
||||||
|
locked=''
|
||||||
|
if not module.IsLocked():
|
||||||
|
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||||
|
else:
|
||||||
|
locked='LOCKED'
|
||||||
|
X_POS=str(module.GetPosition().x) # - gridOrigin.x)
|
||||||
|
#X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - gridOrigin.x ))
|
||||||
|
X_POS="{0:<11}".format(X_POS)
|
||||||
|
Y_POS=str(module.GetPosition().y) # - gridOrigin.y)
|
||||||
|
Y_POS="{0:<11}".format(Y_POS)
|
||||||
|
## mpOnGx = PutOnGridMM(module.GetPosition().x, gridSizeMM)
|
||||||
|
## mpOnGy = PutOnGridMM(module.GetPosition().y, gridSizeMM)
|
||||||
|
## module.SetPosition(wxPoint(mpOnGx,mpOnGy))
|
||||||
|
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||||
|
#module.SetOrientation(10)
|
||||||
|
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||||
|
else: # AuxOrigin
|
||||||
|
mpx = module.GetPosition().x - auxOrigin.x
|
||||||
|
mpy = module.GetPosition().y - auxOrigin.y
|
||||||
|
#print(mpx,mpy)
|
||||||
|
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ auxOrigin.x
|
||||||
|
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ auxOrigin.y
|
||||||
|
#print(mpxOnG,mpyOnG)
|
||||||
locked=''
|
locked=''
|
||||||
if not module.IsLocked():
|
if not module.IsLocked():
|
||||||
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||||
@ -121,13 +171,6 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
|||||||
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||||
#module.SetOrientation(10)
|
#module.SetOrientation(10)
|
||||||
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||||
# else:
|
|
||||||
# mpx = module.GetPosition().x - auxOrigin().x
|
|
||||||
# mpy = module.GetPosition().y - auxOrigin().y
|
|
||||||
# X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - auxOrigin().x ))
|
|
||||||
# X_POS="{0:<11}".format(X_POS)
|
|
||||||
# Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - auxOrigin().y))
|
|
||||||
# Y_POS="{0:<11}".format(Y_POS)
|
|
||||||
Reference="{0:<10}".format(str(module.GetReference()))
|
Reference="{0:<10}".format(str(module.GetReference()))
|
||||||
Value = str(module.GetValue())
|
Value = str(module.GetValue())
|
||||||
Value=(Value[:17] + '..') if len(Value) > 19 else Value
|
Value=(Value[:17] + '..') if len(Value) > 19 else Value
|
||||||
@ -152,48 +195,29 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
|||||||
content+=str(mpyOnG)
|
content+=str(mpyOnG)
|
||||||
content+=Layer+'\n' #os.linesep
|
content+=Layer+'\n' #os.linesep
|
||||||
if len(content)>0:
|
if len(content)>0:
|
||||||
content+=str(pcbnew.FromMM(gridReference))
|
content+=str(pcbnew.FromMM(gridSizeMM))+'\n'
|
||||||
|
info='Snapped to grid: '+str(gridSizeMM)+'mm\n'
|
||||||
|
if use_grid_origin:
|
||||||
|
content+="Using GridOrigin as Ref"+'\n'
|
||||||
|
info+="Using GridOrigin as Ref"+'\n'
|
||||||
|
else:
|
||||||
|
content+="Using AuxOrigin as Ref"+'\n'
|
||||||
|
info+="Using AuxOrigin as Ref"+'\n'
|
||||||
|
if debug:
|
||||||
wxLogDebug(content,debug)
|
wxLogDebug(content,debug)
|
||||||
|
#else:
|
||||||
|
wxLogDebug(info,True)
|
||||||
if len (locked_fp)>0:
|
if len (locked_fp)>0:
|
||||||
locked_fp+='\n'+'NOT Moved'
|
locked_fp+='\n'+'NOT Moved (Locked fp)'
|
||||||
|
locked_fp+='\n'+info
|
||||||
wxLogDebug(locked_fp,True)
|
wxLogDebug(locked_fp,True)
|
||||||
|
else:
|
||||||
|
wxLogDebug(info,True)
|
||||||
else:
|
else:
|
||||||
wxLogDebug('No Modules Selected',True)
|
wxLogDebug('No Modules Selected',True)
|
||||||
Refresh()
|
Refresh()
|
||||||
#return content
|
#return content
|
||||||
|
|
||||||
#if 0:
|
|
||||||
# #from https://github.com/MitjaNemec/Kicad_action_plugins
|
|
||||||
# #hack wxFormBuilder py2/py3
|
|
||||||
# _pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
|
||||||
# #aParameters = RoundTrackDlg(None)
|
|
||||||
# aParameters = RoundTrack_Dlg(_pcbnew_frame)
|
|
||||||
# #aParameters = RoundTrack_DlgEx(_pcbnew_frame)
|
|
||||||
# aParameters.Show()
|
|
||||||
# #end hack
|
|
||||||
# aParameters.m_distanceMM.SetValue("5")
|
|
||||||
# aParameters.m_segments.SetValue("16")
|
|
||||||
# aParameters.m_bitmap1.SetBitmap(wx.Bitmap( os.path.join(os.path.dirname(os.path.realpath(__file__)), "round_track_help.png") ) )
|
|
||||||
# modal_result = aParameters.ShowModal()
|
|
||||||
# segments = self.CheckSegmentsInput(
|
|
||||||
# aParameters.m_segments.GetValue(), "number of segments")
|
|
||||||
# distI = FromMM(self.CheckDistanceInput(aParameters.m_distanceMM.GetValue(), "distance from intersection"))
|
|
||||||
# if segments is not None and distI is not None:
|
|
||||||
# if modal_result == wx.ID_OK:
|
|
||||||
# Round_Selection(pcb, distI, segments)
|
|
||||||
# elif modal_result == wx.ID_DELETE:
|
|
||||||
# Delete_Segments(pcb)
|
|
||||||
# #wx.LogMessage('Round Segments on Track Net Deleted')
|
|
||||||
# elif modal_result == wx.ID_REVERT:
|
|
||||||
# wxLogDebug('Connecting Tracks',debug)
|
|
||||||
# Connect_Segments(pcb)
|
|
||||||
# else:
|
|
||||||
# None # Cancel
|
|
||||||
# else:
|
|
||||||
# None # Invalid input
|
|
||||||
# aParameters.Destroy()
|
|
||||||
|
|
||||||
|
|
||||||
# wxLogDebug('showing Selected Tracks',debug)
|
# wxLogDebug('showing Selected Tracks',debug)
|
||||||
# wx.LogMessage('Select Tracks to calculate the Length\nor One Pad to select connected Tracks')
|
# wx.LogMessage('Select Tracks to calculate the Length\nor One Pad to select connected Tracks')
|
||||||
#
|
#
|
||||||
|
200
Snap2Grid/snap2grid.py.bak
Normal file
200
Snap2Grid/snap2grid.py.bak
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# A script to Snap modules to selected Grid for kicad_pcb
|
||||||
|
# requirements: KiCAD pcbnew >= 4.0
|
||||||
|
# copyright Maurice easyw
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
#import snaptogrid; import importlib; importlib.reload(snaptogrid)
|
||||||
|
|
||||||
|
__version__ = '1.0.1'
|
||||||
|
import sys, os
|
||||||
|
import pcbnew
|
||||||
|
import datetime
|
||||||
|
import wx
|
||||||
|
from pcbnew import *
|
||||||
|
|
||||||
|
use_grid_origin = True
|
||||||
|
|
||||||
|
gridReference = 2.54 #1.27 #mm pcbnew.FromMM(1.0) #0.1mm
|
||||||
|
|
||||||
|
gridSizeMM = gridReference
|
||||||
|
|
||||||
|
#from . import Send2GridDlg
|
||||||
|
|
||||||
|
sys.path.append(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
debug = False
|
||||||
|
def wxLogDebug(msg,dbg):
|
||||||
|
"""printing messages only if show is omitted or True"""
|
||||||
|
if dbg == True:
|
||||||
|
wx.LogMessage(msg)
|
||||||
|
#
|
||||||
|
|
||||||
|
#class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
||||||
|
# # from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||||
|
# # hack for new wxFormBuilder generating code incompatible with old wxPython
|
||||||
|
# # noinspection PyMethodOverriding
|
||||||
|
# def SetSizeHints(self, sz1, sz2):
|
||||||
|
# if wx.__version__ < '4.0':
|
||||||
|
# self.SetSizeHintsSz(sz1, sz2)
|
||||||
|
# else:
|
||||||
|
# super(RoundTrack_Dlg, self).SetSizeHints(sz1, sz2)
|
||||||
|
#
|
||||||
|
# # def onDeleteClick(self, event):
|
||||||
|
# # return self.EndModal(wx.ID_DELETE)
|
||||||
|
# #
|
||||||
|
# # def onConnectClick(self, event):
|
||||||
|
# # return self.EndModal(wx.ID_REVERT)
|
||||||
|
#
|
||||||
|
# def __init__(self, parent):
|
||||||
|
# import wx
|
||||||
|
# Send2GridDlg.Send2GridDlg.__init__(self, parent)
|
||||||
|
# #self.GetSizer().Fit(self)
|
||||||
|
# self.SetMinSize(self.GetSize())
|
||||||
|
# #self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||||
|
# #self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||||
|
# #if wx.__version__ < '4.0':
|
||||||
|
# # self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
|
# # self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
|
# #else:
|
||||||
|
# # self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||||
|
# # self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||||
|
#
|
||||||
|
# Python plugin stuff
|
||||||
|
class snap_to_grid( pcbnew.ActionPlugin ):
|
||||||
|
"""
|
||||||
|
A plugin to Snap modules to selected Grid for kicad_pcb
|
||||||
|
requirements: KiCAD pcbnew >= 4.0
|
||||||
|
|
||||||
|
"""
|
||||||
|
def defaults( self ):
|
||||||
|
"""
|
||||||
|
Method defaults must be redefined
|
||||||
|
self.name should be the menu label to use
|
||||||
|
self.category should be the category (not yet used)
|
||||||
|
self.description should be a comprehensive description
|
||||||
|
of the plugin
|
||||||
|
"""
|
||||||
|
self.name = "Snap Selected Module(s) to Grid\nversion "+__version__
|
||||||
|
self.category = "Modify PCB"
|
||||||
|
self.description = "Automaticaly Snap Selected Module(s) to Grid on an existing PCB"
|
||||||
|
#self.pcbnew_icon_support = hasattr(self, "show_toolbar_button")
|
||||||
|
self.show_toolbar_button = True
|
||||||
|
self.icon_file_name = os.path.join(os.path.dirname(__file__), './snap2grid.png')
|
||||||
|
#
|
||||||
|
|
||||||
|
def Run(self):
|
||||||
|
#self.pcb = GetBoard()
|
||||||
|
import sys,os
|
||||||
|
#mm_ius = 1000000.0
|
||||||
|
|
||||||
|
pcb = pcbnew.GetBoard()
|
||||||
|
gridOrigin = pcb.GetGridOrigin()
|
||||||
|
auxOrigin = pcb.GetAuxOrigin()
|
||||||
|
content=''
|
||||||
|
locked_fp=''
|
||||||
|
#wxPoint(77470000, 135890000)
|
||||||
|
for module in pcb.GetModules():
|
||||||
|
if module.IsSelected():
|
||||||
|
if use_grid_origin:
|
||||||
|
mpx = module.GetPosition().x - gridOrigin.x
|
||||||
|
mpy = module.GetPosition().y - gridOrigin.y
|
||||||
|
print(mpx,mpy)
|
||||||
|
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.x
|
||||||
|
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.y
|
||||||
|
print(mpxOnG,mpyOnG)
|
||||||
|
locked=''
|
||||||
|
if not module.IsLocked():
|
||||||
|
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||||
|
else:
|
||||||
|
locked='LOCKED'
|
||||||
|
X_POS=str(module.GetPosition().x) # - gridOrigin.x)
|
||||||
|
#X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - gridOrigin.x ))
|
||||||
|
X_POS="{0:<11}".format(X_POS)
|
||||||
|
Y_POS=str(module.GetPosition().y) # - gridOrigin.y)
|
||||||
|
Y_POS="{0:<11}".format(Y_POS)
|
||||||
|
## mpOnGx = PutOnGridMM(module.GetPosition().x, gridSizeMM)
|
||||||
|
## mpOnGy = PutOnGridMM(module.GetPosition().y, gridSizeMM)
|
||||||
|
## module.SetPosition(wxPoint(mpOnGx,mpOnGy))
|
||||||
|
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||||
|
#module.SetOrientation(10)
|
||||||
|
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||||
|
# else:
|
||||||
|
# mpx = module.GetPosition().x - auxOrigin().x
|
||||||
|
# mpy = module.GetPosition().y - auxOrigin().y
|
||||||
|
# X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - auxOrigin().x ))
|
||||||
|
# X_POS="{0:<11}".format(X_POS)
|
||||||
|
# Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - auxOrigin().y))
|
||||||
|
# Y_POS="{0:<11}".format(Y_POS)
|
||||||
|
Reference="{0:<10}".format(str(module.GetReference()))
|
||||||
|
Value = str(module.GetValue())
|
||||||
|
Value=(Value[:17] + '..') if len(Value) > 19 else Value
|
||||||
|
Value="{0:<20}".format(Value)
|
||||||
|
Rotation='{0:.1f}'.format((module.GetOrientation()/10))
|
||||||
|
Rotation="{0:>6}".format(Rotation)+' '
|
||||||
|
if module.GetLayer() == 0:
|
||||||
|
Layer=" top"
|
||||||
|
else:
|
||||||
|
Layer=" bottom"
|
||||||
|
#Side="## Side :"+Layer+lsep
|
||||||
|
Layer="{0:<10}".format(Layer)
|
||||||
|
content+=Reference
|
||||||
|
if 'LOCKED' in locked:
|
||||||
|
locked_fp+=Reference + ' LOCKED'+'\n' #os.linesep
|
||||||
|
#content+=Value
|
||||||
|
content+=X_POS
|
||||||
|
content+=Y_POS
|
||||||
|
#content+=str(mpOnGx)
|
||||||
|
#content+=str(mpOnGy)
|
||||||
|
content+=str(mpxOnG)
|
||||||
|
content+=str(mpyOnG)
|
||||||
|
content+=Layer+'\n' #os.linesep
|
||||||
|
if len(content)>0:
|
||||||
|
content+=str(pcbnew.FromMM(gridReference))
|
||||||
|
wxLogDebug(content,debug)
|
||||||
|
if len (locked_fp)>0:
|
||||||
|
locked_fp+='\n'+'NOT Moved'
|
||||||
|
wxLogDebug(locked_fp,True)
|
||||||
|
else:
|
||||||
|
wxLogDebug('No Modules Selected',True)
|
||||||
|
Refresh()
|
||||||
|
#return content
|
||||||
|
|
||||||
|
#if 0:
|
||||||
|
# #from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||||
|
# #hack wxFormBuilder py2/py3
|
||||||
|
# _pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||||
|
# #aParameters = RoundTrackDlg(None)
|
||||||
|
# aParameters = RoundTrack_Dlg(_pcbnew_frame)
|
||||||
|
# #aParameters = RoundTrack_DlgEx(_pcbnew_frame)
|
||||||
|
# aParameters.Show()
|
||||||
|
# #end hack
|
||||||
|
# aParameters.m_distanceMM.SetValue("5")
|
||||||
|
# aParameters.m_segments.SetValue("16")
|
||||||
|
# aParameters.m_bitmap1.SetBitmap(wx.Bitmap( os.path.join(os.path.dirname(os.path.realpath(__file__)), "round_track_help.png") ) )
|
||||||
|
# modal_result = aParameters.ShowModal()
|
||||||
|
# segments = self.CheckSegmentsInput(
|
||||||
|
# aParameters.m_segments.GetValue(), "number of segments")
|
||||||
|
# distI = FromMM(self.CheckDistanceInput(aParameters.m_distanceMM.GetValue(), "distance from intersection"))
|
||||||
|
# if segments is not None and distI is not None:
|
||||||
|
# if modal_result == wx.ID_OK:
|
||||||
|
# Round_Selection(pcb, distI, segments)
|
||||||
|
# elif modal_result == wx.ID_DELETE:
|
||||||
|
# Delete_Segments(pcb)
|
||||||
|
# #wx.LogMessage('Round Segments on Track Net Deleted')
|
||||||
|
# elif modal_result == wx.ID_REVERT:
|
||||||
|
# wxLogDebug('Connecting Tracks',debug)
|
||||||
|
# Connect_Segments(pcb)
|
||||||
|
# else:
|
||||||
|
# None # Cancel
|
||||||
|
# else:
|
||||||
|
# None # Invalid input
|
||||||
|
# aParameters.Destroy()
|
||||||
|
|
||||||
|
|
||||||
|
# wxLogDebug('showing Selected Tracks',debug)
|
||||||
|
# wx.LogMessage('Select Tracks to calculate the Length\nor One Pad to select connected Tracks')
|
||||||
|
#
|
||||||
|
|
Reference in New Issue
Block a user