FreeCAD GUI Widgets toolkit: Difference between revisions

From FreeCAD Documentation
No edit summary
mNo edit summary
Line 1: Line 1:
== Background ==
=Design456 - FreeCAD GUI Widgets toolkit:=

===Introduction===
Design456 is an external workbench that aims to provide a Direct Modeling solution within FreeCAD.
In the effort of making new tools for the direct modeling, graphical interface needed. Widget system required to let the user interact with the 3D world and the objects in side the document.

Often FreeCAD implemented this interactive part as a ViewProivder part. These ViewProvider are made for each tool and they are specific for each tools.
==Introduction==

=== FreeCAD GUI Widgets toolkit ===

In the effort of making new tools for direct modeling, a graphical user interface (GUI) is needed. A widget system is required to let the user interact with the [[3D view]].
Often FreeCAD implemented this interactive part as a [[Viewprovider|ViewProvider]]. These ViewProviders are made for each tool and are specific for each tools.
This wouldn't be good for Design456 and wouldn't make producing new tools easy. That is why I needed to figure out how COIN3D works and how drawings are implemented there.
This doesn't serve Design456's agenda as it would make producing new tools difficult. That is why the necessity to figure out how [[Coin3D]] works, in other words how drawings directly to the [[scenegraph]] is implemented.


This GUI toolkit will in the beginning try to produce different kind of primitive drawings which then can be adapted by different widgets (i.e square, circle, triangle, ellipse, ..etc.)
This GUI toolkit will in the beginning try to produce different kind of primitive drawings which then can be adapted by different widgets (i.e square, circle, triangle, ellipse etc...)
For example an arrow that user can push or pull to get the effect of extruding or pushing a face of an 3D object.
For example an arrow that a user can push/pull to get the effect of extruding or pushing a face of a 3D object.


As I am inspired totally by the simplicity of [https://www.fltk.org/ FLTK GUI Toolkit] for used for making Windows/MAC/Linux GUI interface in CPP and other languages. The Fr_Widget toolkit will be in the same flavor and understanding the toolkit shouldn't be too much difficult.
As I am inspired totally by the simplicity of [https://www.fltk.org/ FLTK GUI Toolkit] used for making Windows/MAC/Linux GUI interfaces in cplusplus and other languages. The [[Fr Widget]] toolkit will be inspired by FLTK so understanding the toolkit shouldn't present much difficulty.


===== Simple example showing a drawing=====
===== Simple example showing a drawing=====

Revision as of 12:47, 16 August 2021

Background

Design456 is an external workbench that aims to provide a Direct Modeling solution within FreeCAD.

Introduction

FreeCAD GUI Widgets toolkit

In the effort of making new tools for direct modeling, a graphical user interface (GUI) is needed. A widget system is required to let the user interact with the 3D view. Often FreeCAD implemented this interactive part as a ViewProvider. These ViewProviders are made for each tool and are specific for each tools.

This doesn't serve Design456's agenda as it would make producing new tools difficult. That is why the necessity to figure out how Coin3D works, in other words how drawings directly to the scenegraph is implemented.

This GUI toolkit will in the beginning try to produce different kind of primitive drawings which then can be adapted by different widgets (i.e square, circle, triangle, ellipse etc...) For example an arrow that a user can push/pull to get the effect of extruding or pushing a face of a 3D object.

As I am inspired totally by the simplicity of FLTK GUI Toolkit used for making Windows/MAC/Linux GUI interfaces in cplusplus and other languages. The Fr Widget toolkit will be inspired by FLTK so understanding the toolkit shouldn't present much difficulty.

Simple example showing a drawing
from pivy import coin
import fr_draw as d 

sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
root=d.draw_circle()
sg.addChild(root)

Installing the GUI toolkit

You need to install the Design456 Workbench to be able to use this widget system. Or you can specifically import the toolkit in your python code, but still you need to install the Design456 Workbench

Fr_Widget Basics

Fr_Widget Common Widgets