GridCal 5.1.55__tar.gz → 5.1.56__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +2 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +35 -16
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +19 -5
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +206 -93
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +15 -22
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +32 -21
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +15 -17
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +16 -23
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +1 -4
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +121 -27
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +30 -65
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/models_dialogue.py +1 -1
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/MainWindow.py +19 -19
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +64 -46
- GridCal-5.1.56/GridCal/Gui/RosetaExplorer/icons_rc.py +9670 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/__version__.py +1 -1
- {GridCal-5.1.55 → GridCal-5.1.56}/PKG-INFO +1 -1
- GridCal-5.1.55/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -9708
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/MainWindow.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/io.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/console_widget.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/general_dialogues.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/gui_functions.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/results_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/wrappable_table_model.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/plugins.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/templates.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/GridCal/update.py +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/setup.cfg +0 -0
- {GridCal-5.1.55 → GridCal-5.1.56}/setup.py +0 -0
@@ -173,6 +173,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
173
173
|
Event handler for mouse press events.
|
174
174
|
"""
|
175
175
|
super().mousePressEvent(event)
|
176
|
+
self.parent.mousePressEvent(event)
|
176
177
|
self.editor.disableMove = True
|
177
178
|
self.update_position_at_the_diagram() # always update
|
178
179
|
|
@@ -184,6 +185,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
184
185
|
Event handler for mouse release events.
|
185
186
|
"""
|
186
187
|
super().mouseReleaseEvent(event)
|
188
|
+
self.parent.mouseReleaseEvent(event)
|
187
189
|
self.editor.disableMove = True
|
188
190
|
|
189
191
|
def hoverEnterEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
@@ -38,7 +38,6 @@ from GridCalEngine.Devices.Branches.line import Line
|
|
38
38
|
from GridCalEngine.Devices.Branches.dc_line import DcLine
|
39
39
|
from GridCalEngine.Devices.Branches.hvdc_line import HvdcLine
|
40
40
|
from GridCalEngine.Devices.Diagrams.map_diagram import MapDiagram
|
41
|
-
from GridCalEngine.Devices.types import BRANCH_TYPES
|
42
41
|
from GridCalEngine.Devices.Fluid import FluidNode, FluidPath
|
43
42
|
from GridCalEngine.basic_structures import Vec, CxVec, IntVec
|
44
43
|
from GridCalEngine.Devices.Substation.substation import Substation
|
@@ -983,9 +982,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
983
982
|
graphic_object.change_pen_width(pen_width)
|
984
983
|
|
985
984
|
def colour_results(self,
|
986
|
-
buses: List[Bus],
|
987
|
-
branches: List[BRANCH_TYPES],
|
988
|
-
hvdc_lines: List[HvdcLine],
|
989
985
|
Sbus: CxVec,
|
990
986
|
bus_active: IntVec,
|
991
987
|
Sf: CxVec,
|
@@ -1004,6 +1000,13 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1004
1000
|
ma: Vec = None,
|
1005
1001
|
theta: Vec = None,
|
1006
1002
|
Beq: Vec = None,
|
1003
|
+
fluid_node_p2x_flow: Vec = None,
|
1004
|
+
fluid_node_current_level: Vec = None,
|
1005
|
+
fluid_node_spillage: Vec = None,
|
1006
|
+
fluid_node_flow_in: Vec = None,
|
1007
|
+
fluid_node_flow_out: Vec = None,
|
1008
|
+
fluid_path_flow: Vec = None,
|
1009
|
+
fluid_injection_flow: Vec = None,
|
1007
1010
|
use_flow_based_width: bool = False,
|
1008
1011
|
min_branch_width: int = 5,
|
1009
1012
|
max_branch_width=5,
|
@@ -1012,9 +1015,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1012
1015
|
cmap: palettes.Colormaps = None):
|
1013
1016
|
"""
|
1014
1017
|
Color objects based on the results passed
|
1015
|
-
:param buses: list of matching bus objects
|
1016
|
-
:param branches: list of Branches without HVDC
|
1017
|
-
:param hvdc_lines: list of HVDC lines
|
1018
1018
|
:param Sbus: Buses power (MVA)
|
1019
1019
|
:param bus_active: Bus active status
|
1020
1020
|
:param Sf: Branches power from the "from" bus (MVA)
|
@@ -1033,6 +1033,13 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1033
1033
|
:param ma: branch phase shift angle (rad)
|
1034
1034
|
:param theta: branch tap module (p.u.)
|
1035
1035
|
:param Beq: Branch equivanet susceptance (p.u.)
|
1036
|
+
:param fluid_node_p2x_flow: P2X flow rate (m3)
|
1037
|
+
:param fluid_node_current_level: Current level (m3)
|
1038
|
+
:param fluid_node_spillage: Spillage (m3)
|
1039
|
+
:param fluid_node_flow_in: Flow rate (m3)
|
1040
|
+
:param fluid_node_flow_out: Flow rate (m3)
|
1041
|
+
:param fluid_injection_flow: Injection rate (m3)
|
1042
|
+
:param fluid_path_flow: fluid flow (m3)
|
1036
1043
|
:param use_flow_based_width: use branch width based on the actual flow?
|
1037
1044
|
:param min_branch_width: Minimum branch width [px]
|
1038
1045
|
:param max_branch_width: Maximum branch width [px]
|
@@ -1050,12 +1057,12 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1050
1057
|
# vabs = np.abs(voltages)
|
1051
1058
|
# vang = np.angle(voltages, deg=True)
|
1052
1059
|
# vnorm = (vabs - vmin) / vrng
|
1060
|
+
nbus = self.circuit.get_bus_number()
|
1053
1061
|
|
1054
|
-
|
1055
|
-
|
1056
|
-
latitudes = np.zeros(n)
|
1062
|
+
longitudes = np.zeros(nbus)
|
1063
|
+
latitudes = np.zeros(nbus)
|
1057
1064
|
nodes_dict = dict()
|
1058
|
-
for i, bus in enumerate(buses):
|
1065
|
+
for i, bus in enumerate(self.circuit.buses):
|
1059
1066
|
|
1060
1067
|
# try to find the diagram object of the DB object
|
1061
1068
|
graphic_object = self.graphics_manager.query(bus)
|
@@ -1099,13 +1106,13 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1099
1106
|
arrow_scale = self.get_arrow_scale()
|
1100
1107
|
|
1101
1108
|
# Try colouring the branches
|
1102
|
-
if
|
1109
|
+
if self.circuit.get_branch_number_wo_hvdc():
|
1103
1110
|
|
1104
1111
|
lnorm = np.abs(loadings)
|
1105
1112
|
lnorm[lnorm == np.inf] = 0
|
1106
1113
|
Sfabs = np.abs(Sf)
|
1107
1114
|
Sfnorm = Sfabs / np.max(Sfabs + 1e-20)
|
1108
|
-
for i, branch in enumerate(
|
1115
|
+
for i, branch in enumerate(self.circuit.get_branches_wo_hvdc_iter()):
|
1109
1116
|
|
1110
1117
|
# try to find the diagram object of the DB object
|
1111
1118
|
graphic_object: Union[MapAcLine, MapDcLine] = self.graphics_manager.query(branch)
|
@@ -1159,14 +1166,14 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1159
1166
|
pass
|
1160
1167
|
|
1161
1168
|
# try colouring the HVDC lines
|
1162
|
-
if
|
1169
|
+
if self.circuit.get_hvdc_number() > 0:
|
1163
1170
|
|
1164
1171
|
lnorm = np.abs(hvdc_loading)
|
1165
1172
|
lnorm[lnorm == np.inf] = 0
|
1166
1173
|
Sfabs = np.abs(hvdc_Pf)
|
1167
1174
|
Sfnorm = Sfabs / np.max(Sfabs + 1e-9)
|
1168
1175
|
|
1169
|
-
for i, branch in enumerate(hvdc_lines):
|
1176
|
+
for i, branch in enumerate(self.circuit.hvdc_lines):
|
1170
1177
|
|
1171
1178
|
# try to find the diagram object of the DB object
|
1172
1179
|
graphic_object: MapHvdcLine = self.graphics_manager.query(branch)
|
@@ -1203,7 +1210,8 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1203
1210
|
style = Qt.PenStyle.SolidLine
|
1204
1211
|
if use_flow_based_width:
|
1205
1212
|
weight = int(
|
1206
|
-
np.floor(min_branch_width + Sfnorm[i] * (max_branch_width - min_branch_width) * 0.1)
|
1213
|
+
np.floor(min_branch_width + Sfnorm[i] * (max_branch_width - min_branch_width) * 0.1)
|
1214
|
+
)
|
1207
1215
|
else:
|
1208
1216
|
weight = self.get_branch_width()
|
1209
1217
|
|
@@ -1223,6 +1231,17 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1223
1231
|
graphic_object.set_colour(color=color, style=style, tool_tip=tooltip)
|
1224
1232
|
graphic_object.set_width_scale(branch_scale=weight, arrow_scale=arrow_scale)
|
1225
1233
|
|
1234
|
+
if fluid_path_flow is not None:
|
1235
|
+
|
1236
|
+
if self.circuit.get_fluid_paths_number() == len(fluid_path_flow):
|
1237
|
+
for i, elm in enumerate(self.circuit.fluid_paths):
|
1238
|
+
|
1239
|
+
# try to find the diagram object of the DB object
|
1240
|
+
graphic_object = self.graphics_manager.query(elm)
|
1241
|
+
|
1242
|
+
if graphic_object:
|
1243
|
+
pass
|
1244
|
+
|
1226
1245
|
def get_image(self, transparent: bool = False) -> QImage:
|
1227
1246
|
"""
|
1228
1247
|
get the current picture
|
@@ -462,7 +462,9 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
462
462
|
width=5,
|
463
463
|
api_object: Union[Line, Transformer2W, VSC, UPFC, HvdcLine, DcLine, FluidPath, None] = None,
|
464
464
|
arrow_size=10,
|
465
|
-
draw_labels: bool = True
|
465
|
+
draw_labels: bool = True,
|
466
|
+
arrow_f_pos=0.2,
|
467
|
+
arrow_t_pos=0.8, ):
|
466
468
|
"""
|
467
469
|
|
468
470
|
:param from_port:
|
@@ -511,10 +513,10 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
511
513
|
|
512
514
|
# arrows
|
513
515
|
self.view_arrows = True
|
514
|
-
self.arrow_p_from = ArrowHead(parent=self, arrow_size=arrow_size, position=
|
515
|
-
self.arrow_q_from = ArrowHead(parent=self, arrow_size=arrow_size, position=
|
516
|
-
self.arrow_p_to = ArrowHead(parent=self, arrow_size=arrow_size, position=
|
517
|
-
self.arrow_q_to = ArrowHead(parent=self, arrow_size=arrow_size, position=
|
516
|
+
self.arrow_p_from = ArrowHead(parent=self, arrow_size=arrow_size, position=arrow_f_pos, under=False)
|
517
|
+
self.arrow_q_from = ArrowHead(parent=self, arrow_size=arrow_size, position=arrow_f_pos, under=True)
|
518
|
+
self.arrow_p_to = ArrowHead(parent=self, arrow_size=arrow_size, position=arrow_t_pos, under=False)
|
519
|
+
self.arrow_q_to = ArrowHead(parent=self, arrow_size=arrow_size, position=arrow_t_pos, under=True)
|
518
520
|
|
519
521
|
if from_port and to_port:
|
520
522
|
self.redraw()
|
@@ -843,6 +845,16 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
843
845
|
self.arrow_p_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
|
844
846
|
self.arrow_q_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
|
845
847
|
|
848
|
+
def set_arrows_with_fluid_flow(self, flow: float) -> None:
|
849
|
+
"""
|
850
|
+
Set the arrow directions
|
851
|
+
:param flow: branch_flow (m3/s)
|
852
|
+
"""
|
853
|
+
self.arrow_p_from.set_value(flow, True, flow < 0, name="flow", units="m3/s", draw_label=self.draw_labels)
|
854
|
+
self.arrow_q_from.set_value(flow, True, flow < 0, name="flow", units="m3/s", draw_label=False)
|
855
|
+
self.arrow_p_to.setVisible(False)
|
856
|
+
self.arrow_q_to.setVisible(False)
|
857
|
+
|
846
858
|
def change_bus(self):
|
847
859
|
"""
|
848
860
|
change the from or to bus of the nbranch with another selected bus
|
@@ -936,6 +948,7 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
936
948
|
"""
|
937
949
|
if self._from_port:
|
938
950
|
if 'Transformer3WGraphicItem' not in sys.modules:
|
951
|
+
# keep this here, we need an actual instance
|
939
952
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer3w_graphics import \
|
940
953
|
Transformer3WGraphicItem
|
941
954
|
return isinstance(self.get_terminal_from_parent(), Transformer3WGraphicItem)
|
@@ -949,6 +962,7 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
949
962
|
"""
|
950
963
|
if self._to_port:
|
951
964
|
if 'Transformer3WGraphicItem' not in sys.modules:
|
965
|
+
# keep this here, we need an actual instance
|
952
966
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer3w_graphics import \
|
953
967
|
Transformer3WGraphicItem
|
954
968
|
return isinstance(self.get_terminal_to_parent(), Transformer3WGraphicItem)
|
{GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py
RENAMED
@@ -18,9 +18,9 @@ from __future__ import annotations
|
|
18
18
|
import numpy as np
|
19
19
|
from typing import Union, TYPE_CHECKING, List, Dict
|
20
20
|
from PySide6 import QtWidgets
|
21
|
-
from PySide6.QtCore import Qt, QPoint
|
22
|
-
from PySide6.QtGui import QPen, QCursor, QIcon, QPixmap, QBrush,
|
23
|
-
from PySide6.QtWidgets import QMenu,
|
21
|
+
from PySide6.QtCore import Qt, QPoint, QPointF
|
22
|
+
from PySide6.QtGui import QPen, QCursor, QIcon, QPixmap, QBrush, QColor
|
23
|
+
from PySide6.QtWidgets import QMenu, QGraphicsSceneMouseEvent
|
24
24
|
|
25
25
|
from GridCalEngine.Devices.Fluid import FluidNode, FluidTurbine, FluidPump, FluidP2x
|
26
26
|
from GridCalEngine.Devices.Substation.bus import Bus
|
@@ -33,54 +33,13 @@ from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem,
|
|
33
33
|
from GridCal.Gui.Diagrams.SchematicWidget.Fluid.fluid_turbine_graphics import FluidTurbineGraphicItem
|
34
34
|
from GridCal.Gui.Diagrams.SchematicWidget.Fluid.fluid_pump_graphics import FluidPumpGraphicItem
|
35
35
|
from GridCal.Gui.Diagrams.SchematicWidget.Fluid.fluid_p2x_graphics import FluidP2xGraphicItem
|
36
|
-
from GridCal.Gui.messages import yes_no_question
|
36
|
+
from GridCal.Gui.messages import yes_no_question, error_msg
|
37
|
+
from GridCal.Gui.gui_functions import add_menu_entry
|
37
38
|
|
38
39
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
39
40
|
from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
|
40
41
|
|
41
42
|
|
42
|
-
class RoundedRect(QtWidgets.QGraphicsRectItem):
|
43
|
-
"""
|
44
|
-
Rounded rectangle
|
45
|
-
"""
|
46
|
-
def __init__(self, x, y, width, height, radius, parent):
|
47
|
-
super().__init__(x, y, width, height, parent=parent)
|
48
|
-
self.radius = radius
|
49
|
-
|
50
|
-
def paint(self, painter, option, widget):
|
51
|
-
path = QPainterPath()
|
52
|
-
path.addRoundedRect(self.rect(), self.radius, self.radius)
|
53
|
-
painter.setClipPath(path)
|
54
|
-
painter.setBrush(self.brush())
|
55
|
-
painter.setPen(self.pen())
|
56
|
-
painter.drawRoundedRect(self.rect(), self.radius, self.radius)
|
57
|
-
|
58
|
-
|
59
|
-
class VerticalWaterIndicator(QGraphicsRectItem):
|
60
|
-
def __init__(self, x, y, width, height, outer_radius, inner_radius, parent=None):
|
61
|
-
super().__init__(x, y, width, height, parent=parent)
|
62
|
-
self.outer_radius = outer_radius
|
63
|
-
self.inner_radius = inner_radius
|
64
|
-
self.setBrush(Qt.lightGray) # Set the outer rectangle color
|
65
|
-
|
66
|
-
self.inner_rect = QGraphicsRectItem(self.rect(), self)
|
67
|
-
self.inner_rect.setBrush(Qt.blue) # Set the inner rectangle color
|
68
|
-
|
69
|
-
self.label = QGraphicsTextItem('', self)
|
70
|
-
self.label.setDefaultTextColor(Qt.black)
|
71
|
-
self.label.setFont(QFont('Arial', 10))
|
72
|
-
|
73
|
-
def set_percentage(self, percentage):
|
74
|
-
# Update the inner rectangle size based on the percentage
|
75
|
-
inner_height = self.rect().height() * percentage / 100
|
76
|
-
self.inner_rect.setRect(self.rect().x(), self.rect().y() + self.rect().height() - inner_height,
|
77
|
-
self.rect().width(), inner_height)
|
78
|
-
self.inner_rect.setPos(self.rect().x(), self.rect().y())
|
79
|
-
|
80
|
-
# Update the label text
|
81
|
-
self.label.setPlainText(f'{percentage}%')
|
82
|
-
|
83
|
-
|
84
43
|
class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
85
44
|
"""
|
86
45
|
Represents a block in the diagram
|
@@ -96,7 +55,8 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
96
55
|
parent=None, index=0, h: int = 20, w: int = 80, x: float = 0, y: float = 0,
|
97
56
|
draw_labels: bool = True):
|
98
57
|
|
99
|
-
GenericDiagramWidget.__init__(self, parent=parent, api_object=fluid_node, editor=editor,
|
58
|
+
GenericDiagramWidget.__init__(self, parent=parent, api_object=fluid_node, editor=editor,
|
59
|
+
draw_labels=draw_labels)
|
100
60
|
QtWidgets.QGraphicsRectItem.__init__(self, parent)
|
101
61
|
|
102
62
|
self.min_w = 180.0
|
@@ -105,6 +65,8 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
105
65
|
self.h = h if h >= self.min_h else self.min_h
|
106
66
|
self.w = w if w >= self.min_w else self.min_w
|
107
67
|
|
68
|
+
self.api_object: FluidNode = fluid_node # reassign for type to be clear
|
69
|
+
|
108
70
|
# loads, shunts, generators, etc...
|
109
71
|
self.shunt_children = list()
|
110
72
|
|
@@ -116,7 +78,7 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
116
78
|
# index
|
117
79
|
self.index = index
|
118
80
|
|
119
|
-
self.color = ACTIVE['fluid']
|
81
|
+
self.color = QColor(fluid_node.color) if fluid_node is not None else ACTIVE['fluid']
|
120
82
|
self.style = ACTIVE['style']
|
121
83
|
|
122
84
|
# Label:
|
@@ -130,7 +92,8 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
130
92
|
|
131
93
|
# connection terminals the block
|
132
94
|
self._terminal = BarTerminalItem('s', parent=self, editor=self.editor) # , h=self.h))
|
133
|
-
self._terminal.setPen(QPen(Qt.transparent, self.pen_width, self.style,
|
95
|
+
self._terminal.setPen(QPen(Qt.GlobalColor.transparent, self.pen_width, self.style,
|
96
|
+
Qt.PenCapStyle.RoundCap, Qt.PenJoinStyle.RoundJoin))
|
134
97
|
|
135
98
|
# Create corner for resize:
|
136
99
|
self.sizer = HandleItem(self._terminal, callback=self.change_size)
|
@@ -141,16 +104,24 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
141
104
|
|
142
105
|
self.set_tile_color(self.color)
|
143
106
|
|
144
|
-
self.setPen(QPen(Qt.transparent, self.pen_width, self.style))
|
145
|
-
self.setBrush(Qt.transparent)
|
107
|
+
self.setPen(QPen(Qt.GlobalColor.transparent, self.pen_width, self.style))
|
108
|
+
self.setBrush(Qt.GlobalColor.transparent)
|
146
109
|
self.setFlags(self.GraphicsItemFlag.ItemIsSelectable | self.GraphicsItemFlag.ItemIsMovable)
|
147
|
-
self.setCursor(QCursor(Qt.PointingHandCursor))
|
110
|
+
self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
148
111
|
|
149
112
|
# Update size:
|
150
113
|
self.change_size(self.w, self.h)
|
151
114
|
|
152
115
|
self.set_position(x, y)
|
153
116
|
|
117
|
+
def set_api_object_color(self):
|
118
|
+
"""
|
119
|
+
Gether the color from the api object and apply
|
120
|
+
:return:
|
121
|
+
"""
|
122
|
+
self.color = QColor(self.api_object.color) if self.api_object is not None else ACTIVE['fluid']
|
123
|
+
self.set_tile_color(self.color)
|
124
|
+
|
154
125
|
def set_label(self, val: str):
|
155
126
|
"""
|
156
127
|
Set the label content
|
@@ -210,6 +181,14 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
210
181
|
if e is not None:
|
211
182
|
e.recolour_mode()
|
212
183
|
|
184
|
+
def get_nexus_point(self) -> QPointF:
|
185
|
+
"""
|
186
|
+
Get the connection point for the chldren nexus line
|
187
|
+
:return: QPointF
|
188
|
+
"""
|
189
|
+
return QPointF(self.x() + self.rect().width() / 2.0,
|
190
|
+
self.y() + self.rect().height() + self._terminal.h / 2.0)
|
191
|
+
|
213
192
|
def set_tile_color(self, brush):
|
214
193
|
"""
|
215
194
|
Set the color of the title
|
@@ -320,49 +299,47 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
320
299
|
menu = QMenu()
|
321
300
|
menu.addSection("Fluid node")
|
322
301
|
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
302
|
+
add_menu_entry(menu=menu,
|
303
|
+
text="Plot electrical profiles",
|
304
|
+
icon_path=":/Icons/icons/plot.svg",
|
305
|
+
function_ptr=self.plot_electrical_profiles)
|
306
|
+
|
307
|
+
add_menu_entry(menu=menu,
|
308
|
+
text="Plot fluid profiles",
|
309
|
+
icon_path=":/Icons/icons/plot.svg",
|
310
|
+
function_ptr=self.plot_fluid_profiles)
|
311
|
+
|
312
|
+
add_menu_entry(menu=menu,
|
313
|
+
text="Arrange",
|
314
|
+
icon_path=":/Icons/icons/automatic_layout.svg",
|
315
|
+
function_ptr=self.arrange_children)
|
316
|
+
|
317
|
+
add_menu_entry(menu=menu,
|
318
|
+
text="Delete all the connections",
|
319
|
+
icon_path=":/Icons/icons/delete_conn.svg",
|
320
|
+
function_ptr=self.delete_all_connections)
|
321
|
+
|
322
|
+
add_menu_entry(menu=menu,
|
323
|
+
text="Delete",
|
324
|
+
icon_path=":/Icons/icons/delete3.svg",
|
325
|
+
function_ptr=self.remove)
|
346
326
|
|
347
327
|
menu.addSection("Add")
|
348
328
|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
al.triggered.connect(self.add_turbine)
|
329
|
+
add_menu_entry(menu=menu,
|
330
|
+
text="Turbine",
|
331
|
+
icon_path=":/Icons/icons/add_gen.svg",
|
332
|
+
function_ptr=self.add_turbine)
|
354
333
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
ash.triggered.connect(self.add_pump)
|
334
|
+
add_menu_entry(menu=menu,
|
335
|
+
text="Pump",
|
336
|
+
icon_path=":/Icons/icons/add_gen.svg",
|
337
|
+
function_ptr=self.add_pump)
|
360
338
|
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
acg.triggered.connect(self.add_p2x)
|
339
|
+
add_menu_entry(menu=menu,
|
340
|
+
text="P2X",
|
341
|
+
icon_path=":/Icons/icons/add_gen.svg",
|
342
|
+
function_ptr=self.add_p2x)
|
366
343
|
|
367
344
|
menu.exec_(event.screenPos())
|
368
345
|
|
@@ -485,11 +462,147 @@ class FluidNodeGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
485
462
|
"""
|
486
463
|
self.set_tile_color(QBrush(ACTIVE['color']))
|
487
464
|
|
488
|
-
def
|
465
|
+
def plot_electrical_profiles(self):
|
489
466
|
"""
|
490
467
|
|
491
468
|
@return:
|
492
469
|
"""
|
493
470
|
# get the index of this object
|
494
|
-
|
495
|
-
|
471
|
+
if self.api_object is not None:
|
472
|
+
if self.api_object.bus is not None:
|
473
|
+
i = self.editor.circuit.fluid_nodes.index(self.api_object)
|
474
|
+
self.editor.plot_bus(i, self.api_object.bus)
|
475
|
+
else:
|
476
|
+
error_msg("No electrical bus attached :/")
|
477
|
+
else:
|
478
|
+
error_msg("No DB object attached :/")
|
479
|
+
|
480
|
+
def plot_fluid_profiles(self):
|
481
|
+
"""
|
482
|
+
|
483
|
+
@return:
|
484
|
+
"""
|
485
|
+
# get the index of this object
|
486
|
+
if self.api_object is not None:
|
487
|
+
i = self.editor.circuit.fluid_nodes.index(self.api_object)
|
488
|
+
self.editor.plot_fluid_node(i, self.api_object)
|
489
|
+
else:
|
490
|
+
error_msg("No DB object attached :/")
|
491
|
+
|
492
|
+
def set_values(self, i: int, Vm: float, Va: float, P: float, Q: float,
|
493
|
+
tpe: str, format_str="{:10.2f}"):
|
494
|
+
"""
|
495
|
+
|
496
|
+
:param i:
|
497
|
+
:param Vm:
|
498
|
+
:param Va:
|
499
|
+
:param P:
|
500
|
+
:param Q:
|
501
|
+
:param tpe:
|
502
|
+
:param format_str:
|
503
|
+
:return:
|
504
|
+
"""
|
505
|
+
if self.draw_labels:
|
506
|
+
vm = format_str.format(Vm)
|
507
|
+
|
508
|
+
if self.api_object is not None:
|
509
|
+
if self.api_object.bus is not None:
|
510
|
+
vm_kv = format_str.format(Vm * self.api_object.bus.Vnom)
|
511
|
+
else:
|
512
|
+
vm_kv = "No electrical bus"
|
513
|
+
else:
|
514
|
+
vm_kv = ""
|
515
|
+
va = format_str.format(Va)
|
516
|
+
msg = f"Bus {i}"
|
517
|
+
if tpe is not None:
|
518
|
+
msg += f" [{tpe}]"
|
519
|
+
msg += "<br>"
|
520
|
+
msg += f"v={vm}<{va}º pu<br>"
|
521
|
+
msg += f"V={vm_kv} KV<br>"
|
522
|
+
if P is not None:
|
523
|
+
p = format_str.format(P)
|
524
|
+
q = format_str.format(Q)
|
525
|
+
msg += f"P={p} MW<br>Q={q} MVAr"
|
526
|
+
else:
|
527
|
+
msg = ""
|
528
|
+
|
529
|
+
title = self.api_object.name if self.api_object is not None else ""
|
530
|
+
self.label.setHtml(f'<html><head/><body><p><span style=" font-size:10pt;">{title}<br/></span>'
|
531
|
+
f'<span style=" font-size:6pt;">{msg}</span></p></body></html>')
|
532
|
+
|
533
|
+
self.setToolTip(msg)
|
534
|
+
|
535
|
+
def set_fluid_values(self, i: int, Vm: float, Va: float, P: float, Q: float,
|
536
|
+
tpe: str,
|
537
|
+
fluid_node_p2x_flow: float,
|
538
|
+
fluid_node_current_level: float,
|
539
|
+
fluid_node_spillage: float,
|
540
|
+
fluid_node_flow_in: float,
|
541
|
+
fluid_node_flow_out: float,
|
542
|
+
format_str="{:10.2f}"):
|
543
|
+
"""
|
544
|
+
|
545
|
+
:param i:
|
546
|
+
:param Vm:
|
547
|
+
:param Va:
|
548
|
+
:param P:
|
549
|
+
:param Q:
|
550
|
+
:param tpe:
|
551
|
+
:param fluid_node_p2x_flow:
|
552
|
+
:param fluid_node_current_level:
|
553
|
+
:param fluid_node_spillage:
|
554
|
+
:param fluid_node_flow_in:
|
555
|
+
:param fluid_node_flow_out:
|
556
|
+
:param format_str:
|
557
|
+
:return:
|
558
|
+
"""
|
559
|
+
if self.draw_labels:
|
560
|
+
vm = format_str.format(Vm)
|
561
|
+
|
562
|
+
if self.api_object is not None:
|
563
|
+
if self.api_object.bus is not None:
|
564
|
+
vm_kv = format_str.format(Vm * self.api_object.bus.Vnom)
|
565
|
+
else:
|
566
|
+
vm_kv = "No electrical bus"
|
567
|
+
else:
|
568
|
+
vm_kv = ""
|
569
|
+
va = format_str.format(Va)
|
570
|
+
msg = f"Bus {i}"
|
571
|
+
if tpe is not None:
|
572
|
+
msg += f" [{tpe}]"
|
573
|
+
msg += "<br>"
|
574
|
+
msg += f"v={vm}<{va}º pu<br>"
|
575
|
+
msg += f"V={vm_kv} KV<br>"
|
576
|
+
if P is not None:
|
577
|
+
p = format_str.format(P)
|
578
|
+
q = format_str.format(Q)
|
579
|
+
msg += f"P={p} MW<br>Q={q} MVAr<br>"
|
580
|
+
|
581
|
+
if fluid_node_flow_in is not None:
|
582
|
+
f_in = format_str.format(fluid_node_flow_in)
|
583
|
+
msg += f"In={f_in} m3/s<br>"
|
584
|
+
|
585
|
+
if fluid_node_flow_out is not None:
|
586
|
+
f_out = format_str.format(fluid_node_flow_out)
|
587
|
+
msg += f"Out={f_out} m3/s<br>"
|
588
|
+
|
589
|
+
if fluid_node_spillage is not None:
|
590
|
+
f_spill = format_str.format(fluid_node_spillage)
|
591
|
+
msg += f"Spill={f_spill} m3/s<br>"
|
592
|
+
|
593
|
+
if fluid_node_current_level is not None:
|
594
|
+
f_lvl = format_str.format(fluid_node_current_level)
|
595
|
+
msg += f"Lvl={f_lvl} m3<br>"
|
596
|
+
|
597
|
+
if fluid_node_p2x_flow is not None:
|
598
|
+
f_p2x = format_str.format(fluid_node_p2x_flow)
|
599
|
+
msg += f"P2X={f_p2x} m3/s<br>"
|
600
|
+
|
601
|
+
else:
|
602
|
+
msg = ""
|
603
|
+
|
604
|
+
title = self.api_object.name if self.api_object is not None else ""
|
605
|
+
self.label.setHtml(f'<html><head/><body><p><span style=" font-size:10pt;">{title}<br/></span>'
|
606
|
+
f'<span style=" font-size:6pt;">{msg}</span></p></body></html>')
|
607
|
+
|
608
|
+
self.setToolTip(msg)
|
{GridCal-5.1.55 → GridCal-5.1.56}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py
RENAMED
@@ -16,11 +16,12 @@
|
|
16
16
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
17
|
from __future__ import annotations
|
18
18
|
from typing import TYPE_CHECKING
|
19
|
-
from PySide6.QtGui import QPen
|
19
|
+
from PySide6.QtGui import QPen
|
20
20
|
from PySide6.QtWidgets import (QMenu, QGraphicsTextItem)
|
21
21
|
from GridCalEngine.Devices.Fluid.fluid_p2x import FluidP2x
|
22
22
|
from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER, Circle
|
23
23
|
from GridCal.Gui.messages import yes_no_question
|
24
|
+
from GridCal.Gui.gui_functions import add_menu_entry
|
24
25
|
from GridCal.Gui.Diagrams.SchematicWidget.Injections.injections_template_graphics import InjectionTemplateGraphicItem
|
25
26
|
|
26
27
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
@@ -89,30 +90,22 @@ class FluidP2xGraphicItem(InjectionTemplateGraphicItem):
|
|
89
90
|
menu = QMenu()
|
90
91
|
menu.addSection("Power2X")
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
pa = menu.addAction('Plot profiles')
|
98
|
-
plot_icon = QIcon()
|
99
|
-
plot_icon.addPixmap(QPixmap(":/Icons/icons/plot.svg"))
|
100
|
-
pa.setIcon(plot_icon)
|
101
|
-
pa.triggered.connect(self.plot)
|
93
|
+
add_menu_entry(menu=menu,
|
94
|
+
text="Plot fluid profiles",
|
95
|
+
icon_path=":/Icons/icons/plot.svg",
|
96
|
+
function_ptr=self.plot)
|
102
97
|
|
103
98
|
menu.addSeparator()
|
104
99
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
rabf.setIcon(move_bus_icon)
|
115
|
-
rabf.triggered.connect(self.change_bus)
|
100
|
+
add_menu_entry(menu=menu,
|
101
|
+
text="Delete",
|
102
|
+
icon_path=":/Icons/icons/delete3.svg",
|
103
|
+
function_ptr=self.remove)
|
104
|
+
|
105
|
+
add_menu_entry(menu=menu,
|
106
|
+
text="Change bus",
|
107
|
+
icon_path=":/Icons/icons/move_bus.svg",
|
108
|
+
function_ptr=self.change_bus)
|
116
109
|
|
117
110
|
menu.exec_(event.screenPos())
|
118
111
|
|