diff --git a/src/Tools/_TEMPLATEPY_/CMakeLists.txt b/src/Tools/_TEMPLATEPY_/CMakeLists.txt
new file mode 100644
index 0000000000..34b14da6ea
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/CMakeLists.txt
@@ -0,0 +1,40 @@
+
+IF (BUILD_GUI)
+ PYSIDE_WRAP_RC(_TEMPLATEPY__QRC_SRCS Resources/_TEMPLATEPY_.qrc)
+ENDIF (BUILD_GUI)
+
+SET(_TEMPLATEPY__SRCS
+ Init.py
+ InitGui.py
+ _TEMPLATEPY_.py
+ _TEMPLATEPY_Gui.py
+)
+SOURCE_GROUP("" FILES ${_TEMPLATEPY__SRCS})
+
+ADD_CUSTOM_TARGET(_TEMPLATEPY_ ALL
+ SOURCES ${_TEMPLATEPY__SRCS} ${_TEMPLATEPY__QRC_SRCS}
+)
+
+fc_copy_sources(_TEMPLATEPY_ "${CMAKE_BINARY_DIR}/Mod/_TEMPLATEPY_" ${_TEMPLATEPY__SRCS})
+
+IF (BUILD_GUI)
+ fc_target_copy_resource(_TEMPLATEPY_
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/Mod/_TEMPLATEPY_
+ _TEMPLATEPY__rc.py)
+ENDIF (BUILD_GUI)
+
+INSTALL(
+ FILES
+ ${_TEMPLATEPY__SRCS}
+ ${_TEMPLATEPY__QRC_SRCS}
+ DESTINATION
+ Mod/_TEMPLATEPY_
+)
+
+SET(_TEMPLATEPY_GuiIcon_SVG
+ Resources/icons/_TEMPLATEPY_Workbench.svg
+)
+
+fc_copy_sources(_TEMPLATEPY_ "${CMAKE_BINARY_DIR}/Mod/_TEMPLATEPY_" ${_TEMPLATEPY_GuiIcon_SVG})
+INSTALL(FILES ${_TEMPLATEPY_GuiIcon_SVG} DESTINATION "Mod/_TEMPLATEPY_/Resources/icons")
diff --git a/src/Tools/_TEMPLATEPY_/Init.py b/src/Tools/_TEMPLATEPY_/Init.py
new file mode 100644
index 0000000000..d19124bd88
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/Init.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# FreeCAD init script of the _TEMPLATEPY_ module
+# (c) 2001 Juergen Riegel
+# License LGPL
diff --git a/src/Tools/_TEMPLATEPY_/InitGui.py b/src/Tools/_TEMPLATEPY_/InitGui.py
new file mode 100644
index 0000000000..ba8aab5295
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/InitGui.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# _TEMPLATEPY_ gui init module
+# (c) 2001 Juergen Riegel
+# License LGPL
+
+class _TEMPLATEPY_Workbench ( Workbench ):
+ "_TEMPLATEPY_ workbench object"
+ Icon = FreeCAD.getHomePath() + "Mod/_TEMPLATEPY_/Resources/icons/_TEMPLATEPY_Workbench.svg"
+ MenuText = "_TEMPLATEPY_"
+ ToolTip = "_TEMPLATEPY_ workbench"
+
+ def Initialize(self):
+ # load the module
+ import _TEMPLATEPY_Gui
+ self.appendToolbar('_TEMPLATEPY_',['_TEMPLATEPY__HelloWorld'])
+ self.appendMenu('_TEMPLATEPY_',['_TEMPLATEPY__HelloWorld'])
+
+ def GetClassName(self):
+ return "Gui::PythonWorkbench"
+
+Gui.addWorkbench(_TEMPLATEPY_Workbench())
diff --git a/src/Tools/_TEMPLATEPY_/Resources/_TEMPLATEPY_.qrc b/src/Tools/_TEMPLATEPY_/Resources/_TEMPLATEPY_.qrc
new file mode 100644
index 0000000000..1d3ee961fd
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/Resources/_TEMPLATEPY_.qrc
@@ -0,0 +1,5 @@
+
+
+ icons/_TEMPLATEPY_Workbench.svg
+
+
diff --git a/src/Tools/_TEMPLATEPY_/Resources/icons/_TEMPLATEPY_Workbench.svg b/src/Tools/_TEMPLATEPY_/Resources/icons/_TEMPLATEPY_Workbench.svg
new file mode 100644
index 0000000000..28d7e0e826
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/Resources/icons/_TEMPLATEPY_Workbench.svg
@@ -0,0 +1,159 @@
+
+
+
+
diff --git a/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_.dox b/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_.dox
new file mode 100644
index 0000000000..b6b6ab28b0
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_.dox
@@ -0,0 +1,3 @@
+/** \defgroup TEMPLATE _TEMPLATEPY_
+ * \ingroup WORKBENCHES */
+
diff --git a/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_.py b/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_Gui.py b/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_Gui.py
new file mode 100644
index 0000000000..1da2960637
--- /dev/null
+++ b/src/Tools/_TEMPLATEPY_/_TEMPLATEPY_Gui.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# FreeCAD tools of the _TEMPLATEPY_ workbench
+# (c) 2001 Juergen Riegel
+# License LGPL
+
+import FreeCAD, FreeCADGui
+
+class CmdHelloWorld:
+ def Activated(self):
+ FreeCAD.Console.PrintMessage("Hello, World!\n")
+ def IsActive(self):
+ return True
+ def GetResources(self):
+ return {'Pixmap': 'freecad', 'MenuText': 'Hello World', 'ToolTip': 'Print Hello World'}
+
+FreeCADGui.addCommand('_TEMPLATEPY__HelloWorld', CmdHelloWorld())