Add Button to FEM Toolbar Tutorial: Difference between revisions

From FreeCAD Documentation
m (Roy 043 moved page Add A Button In FEM Toolbar Tutorial to Add button to FEM toolbar tutorial: New page titles should use sentence case)
m (Improved the wiki code.)
Line 1: Line 1:
{{Page_in_progress}}
<languages/>
<languages/>
<translate>


<translate>
<!--T:1-->
{{TutorialInfo
{{TutorialInfo
|Topic= FEM
|Topic= FEM
Line 11: Line 11:
|Files=
|Files=
}}
}}
</translate>


== Introduction ==
'''Notes: Work In Progress'''


FEM workbench has toolbars and menus. This tutorial shows how to add a test button onto the toolbars. It also shows how to add a menuitem into the menu.
The FEM workbench has toolbars and menus. This tutorial shows how to add a test button to a toolbar. It also shows how to add a menuitem to a menu.


The task can be split into four parts:
The task can be split into four parts:
Line 25: Line 24:
== Create a new icon file ==
== Create a new icon file ==


For a button, we need an icon file. You can use any of your favorite tools to create it, but it must be in SVG format. Here we use {{FileName|FEM_testButton.svg}} file as an example.
For the button we need an icon file. You can use any of your favorite tools to create it, but it must be in the SVG format. Here we will use the {{FileName|FEM_testButton.svg}} file as an example.


It must be placed into: {{incode|src/Mod/Fem/Gui/Resources/icons/}}
It must be placed in: {{incode|src/Mod/Fem/Gui/Resources/icons/}}.


== Register the new icon file ==
== Register the new icon file ==


The new SVG icon file has to be registered for the GUI-button by inserting it into {{incode|src/Mod/Fem/Gui/Resources/Fem.qrc}}:
The new SVG icon file has to be registered for the GUI-button by inserting it in {{incode|src/Mod/Fem/Gui/Resources/Fem.qrc}}:


</translate>
{{code|code=
{{code|code=
<file>icons/FEM_testButton.svg</file>
<file>icons/FEM_testButton.svg</file>
Line 39: Line 39:


== Create a new command class ==
== Create a new command class ==

A new command class has to be added to the {{incode|src/Mod/Fem/femcommands/commands.py}} module.
A new command class has to be added to the {{incode|src/Mod/Fem/femcommands/commands.py}} module.


Just copy/paste an existing command, then adjust the icon, menu textm and tool-tip in {{incode|__init__(self)}}
Just copy/paste an existing command, then adjust the icon, menu text and tool-tip in {{incode|__init__(self)}}:

</translate>
</translate>
{{code|code=
{{code|code=
Line 55: Line 56:
#self.do_activated = "add_obj_on_gui_selobj_noset_edit"
#self.do_activated = "add_obj_on_gui_selobj_noset_edit"
}}
}}
<translate>

'''Important''': Don't forget to register the command at the bottom of the module file by using the {{incode|addCommand(...)}} method.
'''Important''': Don't forget to register the command at the bottom of the module file by using the {{incode|addCommand(...)}} method.


</translate>
{{code|code=
{{code|code=
FreeCADGui.addCommand(
FreeCADGui.addCommand(
Line 63: Line 67:
)
)
}}
}}
<translate>


'''Note''': Please see the [https://forum.freecadweb.org/viewtopic.php?f=18&t=46693&start=10#p402004 discussion thread] in the forum if icons are involved.
'''Note''': Please see the [https://forum.freecadweb.org/viewtopic.php?f=18&t=46693&start=10#p402004 discussion thread] in the forum if icons are involved.

<translate>


== Add new command to workbench ==
== Add new command to workbench ==
The FEM workbench has several toolbars and menus. We will add the new command on to both the '''solve''' toolbar and the '''solve''' menu.


We will add the new command to both the '''solve''' toolbar and the '''solve''' menu.
Search for the following code snippet in {{incode|/Gui/Workbench.cpp}} and add the new command.

Search for the following code snippet in {{incode|/Gui/Workbench.cpp}} and add the new command:

</translate>
</translate>
{{code|code=
{{code|code=
Line 82: Line 87:
<< "Separator"
<< "Separator"
}}
}}

<translate>
<translate>

To add the command to the '''solve''' menu of the FEM workbench, search for the following code snippet in {{incode|Workbench.cpp}}.
To add the command to the '''solve''' menu of the FEM workbench, search for the following code snippet in {{incode|Workbench.cpp}}:

</translate>
</translate>
{{code|code=
{{code|code=
Line 97: Line 103:
<< "Separator"
<< "Separator"
}}
}}
<translate>


'''Result''': You should have just successfully added a test button into FEM workbench toolbar and menu. Now, you [[Compiling|compile FreeCAD]] and test your new button.
'''Result''': You should have successfully added a test button to a FEM workbench toolbar and menu. Now, you [[Compiling|compile FreeCAD]] and test your new button.


== Related ==
== Related ==


* [[Extend FEM Module]]
* [[Extend FEM Module]]
* [[Onboarding FEM Devs]]
* [[Onboarding FEM Devs]]



</translate>
[[Category:FEM{{#translation:}}]]
[[Category:FEM{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]

Revision as of 16:44, 20 August 2021

This documentation is a work in progress. Please don't mark it as translatable since it will change in the next hours and days.
Other languages:
Tutorial
Topic
FEM
Level
Advanced
Time to complete
60 min
Authors
JohnWang
FreeCAD version
0.19
Example files
See also
None

Introduction

The FEM workbench has toolbars and menus. This tutorial shows how to add a test button to a toolbar. It also shows how to add a menuitem to a menu.

The task can be split into four parts:

  • Create a new icon file.
  • Register the new icon file. Modification needed to src/Mod/Fem//Gui/Resources/Fem.qrc
  • Create a new command class. Modification needed to src/Mod/Fem/femcommands/commands.py
  • Add new command to workbench. Modification needed to src/Mod/Fem/Gui/Workbench.cpp

Create a new icon file

For the button we need an icon file. You can use any of your favorite tools to create it, but it must be in the SVG format. Here we will use the FEM_testButton.svg file as an example.

It must be placed in: src/Mod/Fem/Gui/Resources/icons/.

Register the new icon file

The new SVG icon file has to be registered for the GUI-button by inserting it in src/Mod/Fem/Gui/Resources/Fem.qrc:

<file>icons/FEM_testButton.svg</file>

Create a new command class

A new command class has to be added to the src/Mod/Fem/femcommands/commands.py module.

Just copy/paste an existing command, then adjust the icon, menu text and tool-tip in __init__(self):

class _testButton(CommandManager):
    "The FEM_testButton command definition"

    def __init__(self):
        super(_testButton, self).__init__()
        self.menuetext = "test Button"
        self.tooltip = "This is a test button"
        self.is_active = "always"
        #self.do_activated = "add_obj_on_gui_selobj_noset_edit"

Important: Don't forget to register the command at the bottom of the module file by using the addCommand(...) method.

FreeCADGui.addCommand(
    "FEM_testButton",
    _testButton()
)

Note: Please see the discussion thread in the forum if icons are involved.

Add new command to workbench

We will add the new command to both the solve toolbar and the solve menu.

Search for the following code snippet in /Gui/Workbench.cpp and add the new command:

Gui::ToolBarItem* solve = new Gui::ToolBarItem(root);
     solve->setCommand("Solve");
     *solve << "FEM_SolverCalculixCxxtools"
            << "FEM_SolverCalculiX"
            << "FEM_SolverElmer"
+           << "FEM_testButton"
            << "Separator"

To add the command to the solve menu of the FEM workbench, search for the following code snippet in Workbench.cpp:

Gui::MenuItem* solve = new Gui::MenuItem;
    root->insertItem(item, solve);
    solve->setCommand("&Solve");
    *solve << "FEM_SolverCalculixCxxtools"
           << "FEM_SolverCalculiX"
           << "FEM_SolverElmer"
           << "FEM_SolverZ88"
+          << "FEM_testButton"
           << "Separator"

Result: You should have successfully added a test button to a FEM workbench toolbar and menu. Now, you compile FreeCAD and test your new button.

Related