widgets

Package Contents

class widget_graphs_visual(theGraphs, **kwargs)[source]

Bases: PyQt5.QtWidgets.QWidget

Widget element to draw a graph. The traces and graphs to draw are defined in Graphs taken as argument. This widget is linked to the excellent third-party library pyqtgraph, under MIT license

signal_must_update
signal_graph_changed
set_graph_disposition(self, indexGraph, row=1, col=1, rowspan=1, colspan=1)[source]

Change the graphs disposition.

Parameters
  • indexGraph – index of the graph to change

  • row – row where to place the graph

  • col – column where to place the graph

  • rowspan – number of rows across which the graph spans

  • colspan – number of columns across which the graph spans

Returns

__create_graph(self, idGraph)
__check_graphs(self)
on_click(self, plotDataItem, clicked_points)[source]
update_graphs(self, singleUpdate=True)[source]

This method is used to update the graph. This is fast but NOT safe (especially when working with threads). To limit the risks, please use self.signal_must_update.emit() instead.

Parameters

singleUpdate – if set to False, the graph will periodically refres each self.refreshtime

fast_update(self)[source]

Use this method to update the graph in a fast way. NOT THREAD SAFE.

exportGraphs(self)[source]

Export the graphs

export_txt(self, filename_txt)[source]
export_svg(self, filename)[source]
static export_pdf(filename_svg, filename_pdf)[source]
static export_png(filename_svg, filename_png)[source]
export_tikz(self, foldername_tikz)[source]
get_graph(self, idGraph)[source]

Get corresponding GraphVisual of the graph idGraph

keyPressEvent(self, event)[source]

What happens if a key is pressed. R: reset the axes to their default value

delete_graph(self, idGraph)[source]

Delete the graph idGraph

delete(self)[source]
get_all_graphsVisual(self)[source]

Return a dictionary {idGraph: GraphVisual}.

get_layout_buttons(self)[source]

Get the QGraphicsLayout where it’s possible to add buttons, etc.

set_actionOnClick(self, theActionOnClick)[source]

Action to perform when the graph is clicked

Parameters

theActionOnClickon_graph_click_interface

Returns

set_title(self, idGraph, titleName, **kwargs)[source]

Set title of the graph

Parameters
  • idGraph – id of the graph

  • titleName – title to set

set_article_template(self, graph_size_x=8.8, graph_size_y=4.4, legendPosition='NW')[source]

Method to set the graphs to article quality graph.

Parameters
  • graph_size_x – width of the graph in cm

  • graph_size_y – height of the graph in cm

  • legendPosition – position of the legend (NE, SE, SW, NW)

Returns

class widget_line_drawer(minWinHeight=300, minWinWidth=300, is_light=True)[source]

Bases: PyQt5.QtWidgets.QWidget

Widget allowing to display several lines easily

signal_must_update
on_update_signal(self, listOfLines)[source]
delete_lines(self, key_id)[source]

Dele the lines :param key_id: id to delete :return:

set_lines(self, listOfLines, key_id=0, pen=None)[source]

Set the lines to display :param listOfLines: list of [x1, y1, x2, y2] corresponding to lines :param key_id: id of the trace :param pen: pen used to draw the lines :return:

paintEvent(self, event, painter=None)[source]
get_extrema_lines(self)[source]
class widget_menuButton(theParentButton)[source]

Bases: PyQt5.QtWidgets.QMenu

Same as QMenu, but integrates it behind a button more easily.

showEvent(self, QShowEvent)[source]
class widget_openGL(parent=None)[source]

Bases: PyQt5.QtWidgets.QOpenGLWidget

Interface that provides opengl capabilities. Ensures zoom, light, rotation, etc.

sizeHint(self)[source]
minimumSizeHint(self)[source]
set_deviceDrawer(self, theDeviceDrawer)[source]

Set a drawer optimeed.visualize.gui.widgets.openGLWidget.DeviceDrawerInterface.DeviceDrawerInterface

set_deviceToDraw(self, theDeviceToDraw)[source]

Set the device to draw optimeed.InterfaceDevice.InterfaceDevice

static _get_specialButtonsMapping()[source]
initializeGL(self)[source]
paintGL(self)[source]
resizeGL(self, w, h)[source]
mousePressEvent(self, event)[source]
mouseMoveEvent(self, event)[source]
keyPressEvent(self, event)[source]
wheelEvent(self, QWheelEvent)[source]
class widget_text(theText, is_light=False, convertToHtml=False)[source]

Bases: PyQt5.QtWidgets.QLabel

Widget able to display a text

set_text(self, theText, convertToHtml=False)[source]

Set the text to display

class Widget_image(image_b64)[source]

Bases: PyQt5.QtWidgets.QLabel

eventFilter(self, source, event)[source]
set_image(self, image_b64)[source]

Set new image to widget

class on_graph_click_delete(theDataLink)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On Click: Delete the points from the graph, and save the modified collection

apply(self)[source]
reset(self)[source]
graph_clicked(self, theGraphVisual, index_graph, index_trace, indices_points)[source]
get_name(self)[source]
class on_graph_click_export(theDataLink)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On click: export the selected points

graph_clicked(self, theGraphVisual, index_graph, index_trace, indices_points)[source]
reset_graph(self)[source]
get_name(self)[source]
class on_click_extract_pareto(theDataLink, max_x=False, max_y=False)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On click: extract the pareto from the cloud of points

graph_clicked(self, the_graph_visual, index_graph, index_trace, _)[source]
get_name(self)[source]
class on_graph_click_showInfo(theLinkDataGraph, visuals=None)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On click: show informations about the points (loop through attributes)

class DataInformationVisuals[source]
delete_visual(self, theVisual)[source]
add_visual(self, theVisual, theTrace, indexPoint)[source]
get_new_index(self)[source]
curr_index(self)[source]
graph_clicked(self, theGraphVisual, index_graph, index_trace, indices_points)[source]

Action to perform when a point in the graph has been clicked: Creates new window displaying the device and its informations

get_name(self)[source]
class Repr_opengl(DeviceDrawer)[source]
get_widget(self, theNewDevice)[source]
class Repr_lines(attribute_lines)[source]
get_widget(self, theNewDevice)[source]
class Repr_brut_attributes(is_light=True, convertToHtml=True, recursion_level=5)[source]
get_widget(self, theNewDevice)[source]
class Repr_image(get_base_64_from_device)[source]
get_widget(self, theNewDevice)[source]
class on_graph_click_remove_trace(theDataLink)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

graph_clicked(self, theGraphVisual, index_graph, index_trace, _)[source]
get_name(self)[source]
class on_click_copy_something(theDataLink, functionStrFromDevice)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On Click: copy something

graph_clicked(self, the_graph_visual, index_graph, index_trace, indices_points)[source]
get_name(self)[source]
class on_click_change_symbol(theLinkDataGraph)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On Click: Change the symbol of the point that is clicked

graph_clicked(self, theGraphVisual, index_graph, index_trace, indices_points)[source]
get_name(self)[source]
class on_click_measure[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On Click: Measure distance. Click on two points to perform that action

graph_clicked(self, the_graph_visual, index_graph, index_trace, indices_points)[source]
reset_distance(self)[source]
display_distance(self)[source]
get_name(self)[source]
class on_graph_click_interface[source]

Interface class for the action to perform when a point is clicked

abstract graph_clicked(self, theGraphsVisual, index_graph, index_trace, indices_points)[source]

Action to perform when a graph is clicked

Parameters
  • theGraphsVisual – class widget_graphs_visual that has called the method

  • index_graph – Index of the graph that has been clicked

  • index_trace – Index of the trace that has been clicked

  • indices_points – graph Indices of the points that have been clicked

Returns

abstract get_name(self)[source]
class DataAnimationVisuals(id=0, window_title='Animation')[source]

Bases: PyQt5.QtWidgets.QMainWindow

Spawns a gui that includes button to create animations nicely when paired with widget_graphs_visual

SlIDER_MAXIMUM_VALUE = 500
SLIDER_MINIMUM_VALUE = 1
add_trace(self, trace_id, element_list, theTrace)[source]

Add a trace to the animation.

Parameters
  • trace_id – id of the trace

  • element_list – List of elements to save: [[OpenGL_item1, text_item1], [OpenGL_item2, text_item2], … [OpenGL_itemN, text_itemN]]

  • theTraceTraceVisual

Returns

static get_interesting_elements(element_list)[source]

Function called upon new trace creation. From a list, takes the interesting elements for animation :param element_list: :return: new_element_list

add_elementToTrace(self, trace_id, indexPoint)[source]
delete_point(self, trace_id, thePoint)[source]
reset_all(self)[source]
delete_all(self)[source]
pause_play(self)[source]
show_all(self)[source]
next_frame(self)[source]
slider_handler(self)[source]
frame_selector(self)[source]
set_refreshTime(self)[source]
is_empty(self)[source]
run(self)[source]
closeEvent(self, _)[source]
contains_trace(self, trace_id)[source]
export_picture(self)[source]
abstract export_widget(self, painter)[source]

Render scene with a painter

Parameters

painter – PyQt painter

abstract update_widget_w_animation(self, key, index, the_data_animation)[source]

What to do when a new element has to be animated. Example: self.theOpenGLWidget.set_deviceToDraw(the_data_animation.get_element_animations(0, index))

Parameters
  • key – key of the trace that has to be animated

  • index – index that has to be animated

  • the_data_animationDataAnimationTrace that has to be animated

abstract delete_key_widgets(self, key)[source]

What to do when a key has to be deleted

Parameters

key – key of the trace that has to be deleted

class widget_text(theText, is_light=False, convertToHtml=False)[source]

Bases: PyQt5.QtWidgets.QLabel

Widget able to display a text

set_text(self, theText, convertToHtml=False)[source]

Set the text to display

class widget_line_drawer(minWinHeight=300, minWinWidth=300, is_light=True)[source]

Bases: PyQt5.QtWidgets.QWidget

Widget allowing to display several lines easily

signal_must_update
on_update_signal(self, listOfLines)[source]
delete_lines(self, key_id)[source]

Dele the lines :param key_id: id to delete :return:

set_lines(self, listOfLines, key_id=0, pen=None)[source]

Set the lines to display :param listOfLines: list of [x1, y1, x2, y2] corresponding to lines :param key_id: id of the trace :param pen: pen used to draw the lines :return:

paintEvent(self, event, painter=None)[source]
get_extrema_lines(self)[source]
class DataAnimationOpenGL(theOpenGLWidget, theId=0, window_title='Animation')[source]

Bases: optimeed.visualize.gui.gui_data_animation.DataAnimationVisuals

Implements DataAnimationVisuals to show opengl drawing

update_widget_w_animation(self, key, index, the_data_animation)[source]
export_widget(self, painter)[source]
delete_key_widgets(self, key)[source]
class DataAnimationOpenGLwText(*args, is_light=True, **kwargs)[source]

Bases: optimeed.visualize.gui.widgets.graphsVisualWidget.examplesActionOnClick.on_click_anim.DataAnimationOpenGL

Implements DataAnimationVisuals to show opengl drawing and text

update_widget_w_animation(self, key, index, the_data_animation)[source]
get_interesting_elements(self, devices_list)[source]
class DataAnimationLines(get_lines_method, is_light=True, theId=0, window_title='Animation')[source]

Bases: optimeed.visualize.gui.gui_data_animation.DataAnimationVisuals

Implements DataAnimationVisuals to show drawing made out of lines (widget_line_drawer)

export_widget(self, painter)[source]
delete_key_widgets(self, key)[source]
update_widget_w_animation(self, key, index, the_data_animation)[source]
get_interesting_elements(self, devices_list)[source]
class DataAnimationVisualswText(*args, **kwargs)[source]

Bases: optimeed.visualize.gui.widgets.graphsVisualWidget.examplesActionOnClick.on_click_anim.DataAnimationLines

Same as DataAnimationLines but also with text

update_widget_w_animation(self, key, index, the_data_animation)[source]
class on_graph_click_showAnim(theLinkDataGraph, theAnimation)[source]

Bases: optimeed.visualize.gui.widgets.widget_graphs_visual.on_graph_click_interface

On click: add or remove an element to animate

graph_clicked(self, theGraphVisual, index_graph, index_trace, indices_points)[source]
get_name(self)[source]
class guiPyqtgraph(graphsVisual, **kwargs)[source]

Create a gui for pyqtgraph with trace selection options, export and action on clic choices

refreshTraceList(self)[source]

Refresh all the traces

class DeviceDrawerInterface[source]
abstract draw(self, theDevice)[source]
abstract get_init_camera(self, theDevice)[source]
keyboard_push_action(self, theKey)[source]
get_colour_scalebar(self)[source]
get_colour_background(self)[source]
get_opengl_options(self)[source]