From 75d51c27e2e2cad4cd1ca7a2293d898b36ca8468 Mon Sep 17 00:00:00 2001 From: easyw Date: Mon, 4 Nov 2019 21:35:33 +0100 Subject: [PATCH] first new working version --- MoveToLayer/Move2LayerDlg.py | 4 +- MoveToLayer/move_to_layer.py | 207 ++++-------------------------- MoveToLayer/move_to_layer_dlg.fbp | 4 +- 3 files changed, 31 insertions(+), 184 deletions(-) diff --git a/MoveToLayer/Move2LayerDlg.py b/MoveToLayer/Move2LayerDlg.py index c380ba4..3f5f403 100644 --- a/MoveToLayer/Move2LayerDlg.py +++ b/MoveToLayer/Move2LayerDlg.py @@ -17,13 +17,13 @@ import wx.xrc 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,180 ), 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( 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"Select Objects to Move to Layer\n", wx.DefaultPosition, wx.DefaultSize, 0 ) + 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 ) diff --git a/MoveToLayer/move_to_layer.py b/MoveToLayer/move_to_layer.py index 50ecd01..bc6b7b1 100644 --- a/MoveToLayer/move_to_layer.py +++ b/MoveToLayer/move_to_layer.py @@ -25,10 +25,30 @@ from pcbnew import * import base64 from wx.lib.embeddedimage import PyEmbeddedImage import os -___version___="1.2.1" +___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): @@ -81,127 +101,16 @@ class move_to_draw_layer( pcbnew.ActionPlugin ): of the plugin """ import os - self.name = "Move Selected drawings to chosen Layer\nversion "+___version___ + 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.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 - #wx.MessageDialog(self.frame,"ciao") - #subprocess.check_call(["C:\pathToYourProgram\yourProgram.exe", "your", "arguments", "comma", "separated"]) - #http://stackoverflow.com/questions/1811691/running-an-outside-program-executable-in-python - def switch(x): - return { - 'Edge_Cuts': pcbnew.Edge_Cuts, - 'Eco1_User': pcbnew.Eco1_User, - 'Eco2_User': pcbnew.Eco2_User, - 'Dwgs_User': pcbnew.Dwgs_User, - 'Cmts_User': pcbnew.Cmts_User, - 'Margin' : pcbnew.Margin, - 'F_CrtYd' : pcbnew.F_CrtYd, - 'B_CrtYd' : pcbnew.B_CrtYd, - 'F_Fab' : pcbnew.F_Fab, - 'B_Fab' : pcbnew.B_Fab, - 'F_SilkS' : pcbnew.F_SilkS, - 'B_SilkS' : pcbnew.B_SilkS, - }[x] - - # class displayDialog(wx.Dialog): - # """ - # The default frame - # http://stackoverflow.com/questions/3566603/how-do-i-make-wx-textctrl-multi-line-text-update-smoothly - # """ - # - # #---------------------------------------------------------------------- - # #def __init__(self): - # # """Constructor""" - # # wx.Frame.__init__(self, None, title="Display Frame", style=wx.DEFAULT_FRAME_STYLE, wx.ICON_INFORMATION) - # # panel = wx.Panel(self) - # def __init__(self, parent): - # wx.Dialog.__init__(self, parent, id=-1, title="Move to Layer")# - # #, style=wx.DEFAULT_DIALOG_STYLE, wx.ICON_INFORMATION) - # #, style=wx.DEFAULT_DIALOG_STYLE, wx.ICON_INFORMATION) - # #, pos=DefaultPosition, size=DefaultSize, style = wx.DEFAULT_FRAME_STYLE & (~wx.MAXIMIZE_BOX), name="fname") - # #, wx.ICON_INFORMATION) #, title="Annular Check", style=wx.DEFAULT_FRAME_STYLE, wx.ICON_INFORMATION) - # # - # - # self.SetIcon(PyEmbeddedImage(move_to_layer_ico_b64_data).GetIcon()) - # #wx.IconFromBitmap(wx.Bitmap("icon.ico", wx.BITMAP_TYPE_ANY))) - # self.panel = wx.Panel(self) - # - # self.ct = 0 - # self.layerSelection = "Edge_Cuts" - # layerList = ["Edge_Cuts", "Eco1_User", "Eco2_User", "Dwgs_User", "Cmts_User", "Margin", "F_CrtYd", "B_CrtYd", "F_Fab", "B_Fab", "F_SilkS", "B_SilkS"] - # self.combo = wx.ComboBox(self.panel, choices=layerList) - # self.combo.SetSelection(0) - # - # self.combo.Bind(wx.EVT_COMBOBOX, self.onCombo) - # - # self.title = wx.StaticText(self.panel, label="Move to Layer:") - # #self.result = wx.StaticText(self.panel, label="") - # #self.result.SetForegroundColour('#FF0000') - # #self.button = wx.Button(self.panel, label="Save") - # #self.lblname = wx.StaticText(self.panel, label="Your name:") - # #self.editname = wx.TextCtrl(self.panel, size=(140, -1)) - # ##self.editname = wx.TextCtrl(self.panel, size = (300, 400), style = wx.TE_MULTILINE|wx.TE_READONLY) - # - # - # # Set sizer for the frame, so we can change frame size to match widgets - # self.windowSizer = wx.BoxSizer() - # self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND) - # - # # Set sizer for the panel content - # self.sizer = wx.GridBagSizer(5, 0) - # self.sizer.Add(self.title, (0, 0)) - # self.button = wx.Button(self.panel, label="OK") - # self.sizer.Add(self.button, (2, 0), (1, 2), flag=wx.EXPAND) - # #self.sizer.Add(self.result, (1, 0)) - # #self.sizer.Add(self.lblname, (1, 0)) - # ##self.sizer.Add(self.editname, (1, 0)) - # self.sizer.Add(self.combo, (1, 0)) - # #self.sizer.Add(self.button, (2, 0), (1, 2), flag=wx.EXPAND) - # - # # Set simple sizer for a nice border - # self.border = wx.BoxSizer() - # self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5) - # - # # Use the sizers - # self.panel.SetSizerAndFit(self.border) - # self.SetSizerAndFit(self.windowSizer) - # - # #self.button = wx.Button(self.panel, label="Close") - # self.button.Bind(wx.EVT_BUTTON, self.OnClose) - # self.Bind(wx.EVT_CLOSE,self.OnClose) - # - # #---------------------------------------------------------------------- - # def OnClose(self,e): - # #wx.LogMessage("c") - # e.Skip() - # self.Close() - # #self.result.SetLabel(msg) - # # Set event handlers - # #self.button.Bind(wx.EVT_BUTTON, self.OnButton) - # #self.Show() - # #self.Bind(wx.EVT_CLOSE,self.OnClose) - # def onCombo(self, event): - # """ - # """ - # self.layerSelection = self.combo.GetValue() - # - # #def OnClose(self,e): - # # #wx.LogMessage("c") - # # e.Skip() - # #self.Close() - # - # #def OnButton(self, e): - # # self.result.SetLabel(self.editname.GetValue()) - # #def setMsg(self, t_msg): - # # self.editname.SetValue(t_msg) board = pcbnew.GetBoard() - #wx.MessageDialog(None, 'This is a message box.', 'Test', wx.OK | wx.ICON_INFORMATION).ShowModal() fileName = GetBoard().GetFileName() # # dicts for converting layer name to id, used by _get_layer # _std_layer_dict = {pcbnew.BOARD_GetStandardLayerName(n): n @@ -228,79 +137,17 @@ class move_to_draw_layer( pcbnew.ActionPlugin ): modal_result = aParameters.ShowModal() if modal_result == wx.ID_OK: LayerName = aParameters.m_comboBoxLayer.GetStringSelection() - idx = aParameters.m_comboBoxLayer.FindString(LayerName) - LayerStdName = pcbnew.BOARD_GetStandardLayerName(idx) - wx.LogMessage(LayerName+';'+str(idx)+';'+LayerStdName) - #MoveToLayer(pcb, Layer) + 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___ - #wx.LogMessage(LogMsg) - - # frame = displayDialog(None) - # #frame = wx.Frame(None) - # frame.Center() - # #frame.setMsg(LogMsg) - # frame.ShowModal() - # #dlg.Destroy() - # frame.Destroy() - - #dlg=wx.MessageBox( 'Changing Layer for Selected?', 'Confirm', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION ) - #dlg=wx.MessageBox( 'Changing Layer for Selected '+frame.layerSelection+ '?', 'Confirm', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_WARNING ) - #if dlg == wx.YES: - # #wx.LogMessage("YES") - # #wx.LogMessage(str(board.IsModified())) - # #board.SetModified() - # #wx.LogMessage(str(board.IsModified())) - # #try: - # # board_drawings=board.GetDrawings() - # #except: - # # board_drawings=board.DrawingsList() - # # - # #for drw in board_drawings: - # for drw in board.GetDrawings(): - # if drw.IsSelected(): - # drw.SetLayer(switch(frame.layerSelection)) - # 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() - # LogMsg="selected drawings moved to "+frame.layerSelection+" layer" - - - #move_to_draw_layer().register() -# pcbnew.F_Cu -# pcbnew.In1_Cu -# pcbnew.In2_Cu -#.. -# pcbnew.In30_Cu -# pcbnew.B_Cu -# pcbnew.B_Adhes -# pcbnew.F_Adhes -# pcbnew.B_Paste -# pcbnew.F_Paste -# pcbnew.B_SilkS -# pcbnew.F_SilkS -# pcbnew.B_Mask -# pcbnew.F_Mask -# pcbnew.Dwgs_User -# pcbnew.Cmts_User -# pcbnew.Eco1_User -# pcbnew.Eco2_User -# pcbnew.Edge_Cuts -# pcbnew.Margin -# pcbnew.B_CrtYd -# pcbnew.F_CrtYd -# pcbnew.B_Fab -# pcbnew.F_Fab diff --git a/MoveToLayer/move_to_layer_dlg.fbp b/MoveToLayer/move_to_layer_dlg.fbp index 5735e63..43a4da8 100644 --- a/MoveToLayer/move_to_layer_dlg.fbp +++ b/MoveToLayer/move_to_layer_dlg.fbp @@ -45,7 +45,7 @@ Move2LayerDlg - 325,180 + 325,190 wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER Move to Layer @@ -90,7 +90,7 @@ 0 0 wxID_ANY - Select Objects to Move to Layer + Selected Objects will Move to chosen Layer 0 0