text: # https://wiki.freecadweb.org/Scripting_examples
  # https://wiki.freecadweb.org/Workbench_creation
  
  """FreeCAD init script of XXX module"""
  
  # ***************************************************************************
  # *   Copyright (c) 2015 John Doe john@doe.com                              *   
  # *                                                                         *
  # *   This file is part of the FreeCAD CAx development system.              *
  # *                                                                         *
  # *   This program is free software; you can redistribute it and/or modify  *
  # *   it under the terms of the GNU Lesser General Public License (LGPL)    *
  # *   as published by the Free Software Foundation; either version 2 of     *
  # *   the License, or (at your option) any later version.                   *
  # *   for detail see the LICENCE text file.                                 *
  # *                                                                         *
  # *   FreeCAD 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 Lesser General Public License for more details.                   *
  # *                                                                         *
  # *   You should have received a copy of the GNU Library General Public     *
  # *   License along with FreeCAD; if not, write to the Free Software        *
  # *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
  # *   USA                                                                   *
  # *                                                                         *
  # ***************************************************************************/
  
  FreeCAD.addImportType("My own format (*.own)", "importOwn")
  FreeCAD.addExportType("My own format (*.own)", "importOwn")
  print("I am executing some stuff here when FreeCAD starts!")
  
  class MyWorkbench (Workbench):
  
      MenuText = "My Workbench"
      ToolTip = "A description of my workbench"
      Icon = """paste here the contents of a 16x16 xpm icon"""
  
      def Initialize(self):
          """This function is executed when FreeCAD starts"""
          import MyModuleA, MyModuleB # import here all the needed files that create your FreeCAD commands
          self.list = ["MyCommand1, MyCommand2"] # A list of command names created in the line above
          self.appendToolbar("My Commands",self.list) # creates a new toolbar with your commands
          self.appendMenu("My New Menu",self.list) # creates a new menu
          self.appendMenu(["An existing Menu","My submenu"],self.list) # appends a submenu to an existing menu
  
      def Activated(self):
          """This function is executed when the workbench is activated"""
          return
  
      def Deactivated(self):
          """This function is executed when the workbench is deactivated"""
          return
  
      def ContextMenu(self, recipient):
          """This is executed whenever the user right-clicks on screen"""
          # "recipient" will be either "view" or "tree"
          self.appendContextMenu("My commands",self.list) # add commands to the context menu
  
      def GetClassName(self): 
          # this function is mandatory if this is a full python workbench
          return "Gui::PythonWorkbench"
         
  Gui.addWorkbench(MyWorkbench())
  
  class My_Command_Class():
      """My new command"""
  
      def GetResources(self):
          return {'Pixmap'  : 'My_Command_Icon', # the name of a svg file available in the resources
                  'Accel' : "Shift+S", # a default shortcut (optional)
                  'MenuText': "My New Command",
                  'ToolTip' : "What my new command does"}
  
      def Activated(self):
          """Do something here"""
          return
  
      def IsActive(self):
          """Here you can define if the command must be active or not (greyed) if certain conditions
          are met or not. This function is optional."""
          return True
  
  FreeCADGui.addCommand('My_Command',My_Command_Class())
  
  #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  #***************************************************************************
  #*                                                                         *
  #*   Copyright (c) 2019 kbwbe                                              *
  #*                                                                         *
  #*   Portions of code based on hamish's assembly 2                         *
  #*                                                                         *
  #*   This program is free software; you can redistribute it and/or modify  *
  #*   it under the terms of the GNU Lesser General Public License (LGPL)    *
  #*   as published by the Free Software Foundation; either version 2 of     *
  #*   the License, or (at your option) any later version.                   *
  #*   for detail see the LICENCE text file.                                 *
  #*                                                                         *
  #*   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 Library General Public License for more details.                  *
  #*                                                                         *
  #*   You should have received a copy of the GNU Library General Public     *
  #*   License along with this program; if not, write to the Free Software   *
  #*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
  #*   USA                                                                   *
  #*                                                                         *
  #***************************************************************************
  
  # This script compiles the A2plus icons for py2 and py3
  # For Linux only
  # Start this file in A2plus main directory
  # Make sure pyside-rcc is installed
  
  import os, glob
  
  qrc_filename = 'temp.qrc'
  if os.path.exists(qrc_filename):
      os.remove(qrc_filename)
  
  qrc = '''<RCC>
  \t<qresource prefix="/">'''
  for fn in glob.glob('./icons/*.svg'):
      qrc = qrc + '\n\t\t<file>%s</file>' % fn
  qrc = qrc + '''\n\t</qresource>
  </RCC>'''
  
  print(qrc)
  
  f = open(qrc_filename,'w')
  f.write(qrc)
  f.close()
  
  os.system(
      'pyside-rcc -o a2p_Resources2.py {}'.format(qrc_filename))
  os.system(
      'pyside-rcc -py3 -o a2p_Resources3.py {}'.format(qrc_filename))
  
  os.remove(qrc_filename)
  