GridCal 5.3.52__tar.gz → 5.4.0__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.3.52 → gridcal-5.4.0}/GridCal/ExecuteGridCal.py +1 -1
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +37 -21
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +73 -51
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +38 -107
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +31 -83
- gridcal-5.4.0/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics_3term.py +475 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +2 -2
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +2 -14
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +1 -3
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +240 -120
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +821 -641
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +103 -73
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/base_diagram_widget.py +57 -3
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/diagrams_model.py +6 -5
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/graphics_manager.py +1 -20
- gridcal-5.4.0/GridCal/Gui/GridReduce/grid_reduce.py +118 -0
- gridcal-5.4.0/GridCal/Gui/GridReduce/grid_reduce_gui.py +81 -0
- gridcal-5.4.0/GridCal/Gui/GridReduce/update_gui_file.py +13 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/GridCalMain.py +3 -1
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/MainWindow.py +311 -265
- gridcal-5.3.52/GridCal/Gui/Main/SubClasses/Model/objects.py → gridcal-5.4.0/GridCal/Gui/Main/SubClasses/Model/data_base.py +215 -241
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +343 -176
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Model/time_events.py +10 -16
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Results/results.py +6 -5
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/base_gui.py +4 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/io.py +4 -74
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/simulations.py +143 -56
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/icons_rc.py +1279 -1106
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/object_select_window.py +33 -0
- gridcal-5.4.0/GridCal/Gui/RmsModelEditor/block_editor.py +445 -0
- gridcal-5.4.0/GridCal/Gui/RmsModelEditor/icons_rc.py +260 -0
- gridcal-5.4.0/GridCal/Gui/RmsModelEditor/rms_model_editor.py +114 -0
- gridcal-5.4.0/GridCal/Gui/RmsModelEditor/rms_model_editor_dialogue.py +61 -0
- gridcal-5.4.0/GridCal/Gui/RmsModelEditor/update_gui_file.py +13 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SubstationDesigner/substation_designer.py +18 -23
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +65 -39
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +21 -10
- gridcal-5.4.0/GridCal/Gui/Widgets/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/gui_functions.py +28 -4
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/object_model.py +0 -1
- gridcal-5.4.0/GridCal/Gui/object_proxy_model.py +166 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/profiles_model.py +8 -1
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/table_view_header_wrap.py +9 -3
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Session/session.py +10 -0
- gridcal-5.4.0/GridCal/__init__.py +4 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/__version__.py +1 -1
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/plugins.py +3 -1
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/update.py +0 -21
- {gridcal-5.3.52 → gridcal-5.4.0}/PKG-INFO +2 -3
- {gridcal-5.3.52 → gridcal-5.4.0}/setup.py +1 -2
- gridcal-5.3.52/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -126
- gridcal-5.3.52/GridCal/Gui/CascadingSteps/gui.py +0 -127
- gridcal-5.3.52/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -9
- gridcal-5.3.52/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -5
- gridcal-5.3.52/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -819
- gridcal-5.3.52/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -613
- gridcal-5.3.52/GridCal/Gui/GridMerge/demo_code.py +0 -136
- gridcal-5.3.52/GridCal/Gui/GridMerge/demo_code2.py +0 -40
- gridcal-5.3.52/GridCal/Gui/GridMerge/demo_code3.py +0 -42
- gridcal-5.3.52/GridCal/Gui/GridMerge/demo_code4.py +0 -32
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/CascadingSteps → gridcal-5.4.0/GridCal/Gui/ContingencyPlanner}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/ContingencyPlanner → gridcal-5.4.0/GridCal/Gui/CoordinatesInput}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/controllable_shunt_editor.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/generator_editor.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/line_editor.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/new_line_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/transformer3w_editor.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/transformer_editor.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/Editors/transformer_taps_editor.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/CoordinatesInput → gridcal-5.4.0/GridCal/Gui/Diagrams/MapWidget/Branches}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/Diagrams/MapWidget/Branches → gridcal-5.4.0/GridCal/Gui/Diagrams/MapWidget/Substation}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/ProfilesInput → gridcal-5.4.0/GridCal/Gui/GridReduce}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/SolarPowerWizard → gridcal-5.4.0/GridCal/Gui/ProfilesInput}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/RosetaExplorer → gridcal-5.4.0/GridCal/Gui/RmsModelEditor}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/SigmaAnalysis → gridcal-5.4.0/GridCal/Gui/RosetaExplorer}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/SubstationDesigner → gridcal-5.4.0/GridCal/Gui/SigmaAnalysis}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/Widgets → gridcal-5.4.0/GridCal/Gui/SolarPowerWizard}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/SyncDialogue → gridcal-5.4.0/GridCal/Gui/SubstationDesigner}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/SystemScaler → gridcal-5.4.0/GridCal/Gui/SyncDialogue}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/TowerBuilder → gridcal-5.4.0/GridCal/Gui/SystemScaler}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/TreeModelViewer → gridcal-5.4.0/GridCal/Gui/TowerBuilder}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/Visualization → gridcal-5.4.0/GridCal/Gui/TreeModelViewer}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {gridcal-5.3.52/GridCal/Gui/WindPowerWizard → gridcal-5.4.0/GridCal/Gui/Visualization}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Visualization/visualization.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {gridcal-5.3.52/GridCal/Gui → gridcal-5.4.0/GridCal/Gui/WindPowerWizard}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {gridcal-5.3.52/GridCal/Session → gridcal-5.4.0/GridCal/Gui}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/associations_model.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/general_dialogues.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/messages.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/pandas_model.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/plot_config.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/python_console.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/python_highlighter.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/results_model.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/themes.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/toast_widget.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/update_gui_all.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/update_gui_common.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Gui/wrappable_table_model.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/LICENSE.txt +0 -0
- {gridcal-5.3.52/GridCal → gridcal-5.4.0/GridCal/Session}/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Session/export_results_driver.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Session/file_handler.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Session/server_driver.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/Session/synchronization_driver.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/darkdetect/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/darkdetect/_dummy.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/darkdetect/_linux_detect.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/darkdetect/_mac_detect.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/darkdetect/_windows_detect.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/GridCal.ico +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/GridCal.svg +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/__init__.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/cables.csv +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/sequence_lines.csv +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/transformers.csv +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/data/wires.csv +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/GridCal/templates.py +0 -0
- {gridcal-5.3.52 → gridcal-5.4.0}/setup.cfg +0 -0
@@ -73,14 +73,9 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
73
73
|
self.line_container = None
|
74
74
|
self.editor: GridMapWidget = editor # reassign for the types to be clear
|
75
75
|
|
76
|
-
r2 = size / 2
|
76
|
+
r2 = size / 2.0
|
77
77
|
x, y = editor.to_x_y(lat=lat, lon=lon) # upper left corner
|
78
|
-
self.setRect(
|
79
|
-
x - r2,
|
80
|
-
y - r2,
|
81
|
-
self.size,
|
82
|
-
self.size
|
83
|
-
)
|
78
|
+
self.setRect(x - r2, y - r2, self.size, self.size)
|
84
79
|
|
85
80
|
# Enable hover events for the item
|
86
81
|
self.setAcceptHoverEvents(True)
|
@@ -94,17 +89,41 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
94
89
|
self.change_pen_width(0.05 * size)
|
95
90
|
|
96
91
|
# Create a pen with reduced line width
|
97
|
-
self.
|
98
|
-
self.
|
99
|
-
self.
|
100
|
-
self.
|
101
|
-
self.
|
92
|
+
self._color = QColor(self.api_object.color)
|
93
|
+
self._color.setAlpha(128)
|
94
|
+
self._hoover_color = QColor(self.api_object.color)
|
95
|
+
self._hoover_color.setAlpha(180)
|
96
|
+
self._border_color = QColor(self.api_object.color) # No Alpha
|
102
97
|
|
103
98
|
self.set_default_color()
|
104
99
|
|
105
100
|
# list of voltage levels graphics
|
106
101
|
self.voltage_level_graphics: List[VoltageLevelGraphicItem] = list()
|
107
102
|
|
103
|
+
@property
|
104
|
+
def color(self) -> QColor:
|
105
|
+
return self._color
|
106
|
+
|
107
|
+
@color.setter
|
108
|
+
def color(self, val: QColor):
|
109
|
+
self._color = val
|
110
|
+
|
111
|
+
@property
|
112
|
+
def hover_color(self) -> QColor:
|
113
|
+
return self._hoover_color
|
114
|
+
|
115
|
+
@hover_color.setter
|
116
|
+
def hover_color(self, val: QColor):
|
117
|
+
self._hoover_color = val
|
118
|
+
|
119
|
+
@property
|
120
|
+
def border_color(self) -> QColor:
|
121
|
+
return self._border_color
|
122
|
+
|
123
|
+
@border_color.setter
|
124
|
+
def border_color(self, val: QColor):
|
125
|
+
self._border_color = val
|
126
|
+
|
108
127
|
@property
|
109
128
|
def api_object(self) -> Substation:
|
110
129
|
return self._api_object
|
@@ -182,8 +201,8 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
182
201
|
self.color = QColor(self.api_object.color)
|
183
202
|
self.color.setAlpha(128)
|
184
203
|
|
185
|
-
self.
|
186
|
-
self.
|
204
|
+
self.hover_color = QColor(self.api_object.color)
|
205
|
+
self.hover_color.setAlpha(180)
|
187
206
|
|
188
207
|
self.border_color = QColor(self.api_object.color) # No Alpha
|
189
208
|
|
@@ -315,17 +334,15 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
315
334
|
Event handler for when the mouse enters the item.
|
316
335
|
"""
|
317
336
|
# self.editor.map.view.in_item = True
|
318
|
-
self.
|
337
|
+
self.color_widget(self.color, self.hover_color)
|
319
338
|
self.hovered = True
|
320
339
|
|
321
340
|
def hoverLeaveEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
322
341
|
"""
|
323
342
|
Event handler for when the mouse leaves the item.
|
324
343
|
"""
|
325
|
-
# self.editor.map.view.in_item = False
|
326
344
|
self.hovered = False
|
327
|
-
self.
|
328
|
-
# QApplication.instance().restoreOverrideCursor()
|
345
|
+
self.color_widget(self.color, self.border_color)
|
329
346
|
|
330
347
|
def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
|
331
348
|
"""
|
@@ -756,7 +773,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
756
773
|
pen.setWidthF(width)
|
757
774
|
self.setPen(pen)
|
758
775
|
|
759
|
-
def
|
776
|
+
def color_widget(self, inner_color: QColor = None, border_color: QColor = None) -> None:
|
760
777
|
"""
|
761
778
|
|
762
779
|
:param inner_color:
|
@@ -778,7 +795,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
778
795
|
:return:
|
779
796
|
"""
|
780
797
|
# Example: color assignment
|
781
|
-
self.
|
798
|
+
self.color_widget(self.color, self.border_color)
|
782
799
|
|
783
800
|
def open_street_view(self):
|
784
801
|
"""
|
@@ -810,7 +827,6 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
810
827
|
|
811
828
|
return self.voltage_level_graphics + associated_lines_graphics
|
812
829
|
|
813
|
-
|
814
830
|
def get_associated_devices(self) -> List[ALL_DEV_TYPES]:
|
815
831
|
"""
|
816
832
|
This function returns all the api_object devices associated with the selected graphic object.
|
@@ -11,7 +11,6 @@ import json
|
|
11
11
|
import numpy as np
|
12
12
|
import math
|
13
13
|
import pandas as pd
|
14
|
-
from GridCalEngine.Devices.Branches.overhead_line_type import OverheadLineType
|
15
14
|
from matplotlib import pyplot as plt
|
16
15
|
|
17
16
|
from PySide6.QtWidgets import QGraphicsItem, QMessageBox, QDialog, QVBoxLayout, QLabel, QPushButton
|
@@ -35,12 +34,14 @@ from GridCalEngine.Devices.Substation.substation import Substation
|
|
35
34
|
from GridCalEngine.Devices.Substation.voltage_level import VoltageLevel
|
36
35
|
from GridCalEngine.Devices.Branches.line_locations import LineLocation
|
37
36
|
from GridCalEngine.Devices.multi_circuit import MultiCircuit
|
38
|
-
from GridCalEngine.enumerations import DeviceType, ResultTypes
|
37
|
+
from GridCalEngine.enumerations import DeviceType, ResultTypes, SubstationTypes
|
39
38
|
from GridCalEngine.Devices.types import ALL_DEV_TYPES
|
40
39
|
from GridCalEngine.basic_structures import Logger
|
41
40
|
from GridCalEngine.Simulations.OPF.opf_ts_results import OptimalPowerFlowTimeSeriesResults
|
42
41
|
from GridCalEngine.Simulations.PowerFlow.power_flow_ts_results import PowerFlowTimeSeriesResults
|
43
42
|
from GridCalEngine.enumerations import Colormaps
|
43
|
+
from GridCalEngine.Topology import substation_wizards as substation_wizards
|
44
|
+
import GridCalEngine.Devices.Diagrams.palettes as palettes
|
44
45
|
|
45
46
|
from GridCal.Gui.Diagrams.MapWidget.Branches.map_ac_line import MapAcLine
|
46
47
|
from GridCal.Gui.Diagrams.MapWidget.Branches.map_dc_line import MapDcLine
|
@@ -52,7 +53,6 @@ from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import
|
|
52
53
|
from GridCal.Gui.Diagrams.MapWidget.map_widget import MapWidget, MapDiagramScene
|
53
54
|
from GridCal.Gui.Diagrams.Editors.new_line_dialogue import NewMapLineDialogue
|
54
55
|
import GridCal.Gui.Visualization.visualization as viz
|
55
|
-
import GridCalEngine.Devices.Diagrams.palettes as palettes
|
56
56
|
from GridCal.Gui.Diagrams.graphics_manager import ALL_MAP_GRAPHICS
|
57
57
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
58
58
|
from GridCal.Gui.Diagrams.base_diagram_widget import BaseDiagramWidget
|
@@ -101,7 +101,7 @@ class MapLibraryModel(QStandardItemModel):
|
|
101
101
|
|
102
102
|
self.substation_name = "Substation"
|
103
103
|
|
104
|
-
self.add(name=self.substation_name, icon_name="
|
104
|
+
self.add(name=self.substation_name, icon_name="substation")
|
105
105
|
|
106
106
|
def add(self, name: str, icon_name: str):
|
107
107
|
"""
|
@@ -522,6 +522,21 @@ class GridMapWidget(BaseDiagramWidget):
|
|
522
522
|
"""
|
523
523
|
return [s for s in self.map.view.selected_items() if isinstance(s, SubstationGraphicItem)]
|
524
524
|
|
525
|
+
def get_substations(self) -> List[Tuple[int, Substation, SubstationGraphicItem]]:
|
526
|
+
"""
|
527
|
+
Get all the substations
|
528
|
+
:return: tuple(substation index, substation_api_object, substation_graphic_object)
|
529
|
+
"""
|
530
|
+
lst: List[Tuple[int, Substation, Union[SubstationGraphicItem, None]]] = list()
|
531
|
+
substation_graphics_dict = self.graphics_manager.get_device_type_dict(DeviceType.SubstationDevice)
|
532
|
+
substations_dict: Dict[str: Tuple[int, Bus]] = {b.idtag: (i, b) for i, b in enumerate(self.circuit.substations)}
|
533
|
+
|
534
|
+
for bus_idtag, graphic_object in substation_graphics_dict.items():
|
535
|
+
idx, substation = substations_dict[bus_idtag]
|
536
|
+
lst.append((idx, substation, graphic_object))
|
537
|
+
|
538
|
+
return lst
|
539
|
+
|
525
540
|
def create_new_line_wizard(self):
|
526
541
|
"""
|
527
542
|
Create a new line in the map with dialogues
|
@@ -611,6 +626,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
611
626
|
|
612
627
|
# Delete the substation itself
|
613
628
|
self.circuit.delete_substation(obj=api_object)
|
629
|
+
|
614
630
|
#
|
615
631
|
# def show_devices_to_disconnect_dialog(self,
|
616
632
|
# devices: List[ALL_DEV_TYPES],
|
@@ -945,38 +961,36 @@ class GridMapWidget(BaseDiagramWidget):
|
|
945
961
|
:return:
|
946
962
|
"""
|
947
963
|
kv = self.gui.get_default_voltage()
|
948
|
-
dlg = SubstationDesigner(grid=self.circuit, default_voltage=kv)
|
964
|
+
dlg = SubstationDesigner(grid=self.circuit, default_voltage=kv, lat=lat, lon=lon)
|
949
965
|
dlg.exec()
|
950
966
|
if dlg.was_ok():
|
951
967
|
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
968
|
+
se_object, voltage_levels = substation_wizards.create_substation(
|
969
|
+
grid=self.circuit,
|
970
|
+
se_name=dlg.get_name(),
|
971
|
+
se_code=dlg.get_code(),
|
972
|
+
lat=dlg.get_latitude(),
|
973
|
+
lon=dlg.get_longitude(),
|
974
|
+
vl_templates=dlg.get_voltage_levels()
|
975
|
+
)
|
957
976
|
|
958
|
-
|
977
|
+
# create SE graphic
|
959
978
|
substation_graphics = self.add_api_substation(api_object=se_object, lat=lat, lon=lon)
|
960
979
|
|
961
|
-
|
962
|
-
|
963
|
-
vl = VoltageLevel(name=f"{se_object.name} @{vl_template.voltage} kV VL",
|
964
|
-
Vnom=vl_template.voltage,
|
965
|
-
substation=se_object)
|
966
|
-
self.circuit.add_voltage_level(vl)
|
967
|
-
|
968
|
-
bus = Bus(name=f"{se_object.name} @{vl_template.voltage} kV bus",
|
969
|
-
Vnom=vl_template.voltage,
|
970
|
-
substation=se_object,
|
971
|
-
voltage_level=vl)
|
972
|
-
self.circuit.add_bus(obj=bus)
|
973
|
-
|
974
|
-
# add the vl graphics
|
980
|
+
# add voltage level graphics
|
981
|
+
for vl in voltage_levels:
|
975
982
|
self.add_api_voltage_level(substation_graphics=substation_graphics, api_object=vl)
|
976
983
|
|
977
984
|
# sort voltage levels
|
978
985
|
substation_graphics.sort_voltage_levels()
|
979
986
|
|
987
|
+
# ask to create a se diagram
|
988
|
+
ok = yes_no_question(title="create substation diagram",
|
989
|
+
text="Do you want to finalize the editing of the substation in the schematic?")
|
990
|
+
|
991
|
+
if ok:
|
992
|
+
self.new_substation_diagram(substation=se_object)
|
993
|
+
|
980
994
|
def get_branch_width(self) -> float:
|
981
995
|
"""
|
982
996
|
Get the desired branch width
|
@@ -1060,7 +1074,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1060
1074
|
# rescale substations (this is super-fast)
|
1061
1075
|
data: Dict[str, SubstationGraphicItem] = self.graphics_manager.get_device_type_dict(DeviceType.SubstationDevice)
|
1062
1076
|
for se_key, elm_graphics in data.items():
|
1063
|
-
elm_graphics.set_api_object_color()
|
1077
|
+
# elm_graphics.set_api_object_color()
|
1064
1078
|
elm_graphics.set_size(r=se_width)
|
1065
1079
|
|
1066
1080
|
self.diagram_scene.blockSignals(False)
|
@@ -1106,7 +1120,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1106
1120
|
vsc_loading: Vec = None,
|
1107
1121
|
vsc_active: IntVec = None,
|
1108
1122
|
ma: Vec = None,
|
1109
|
-
|
1123
|
+
tau: Vec = None,
|
1110
1124
|
fluid_node_p2x_flow: Vec = None,
|
1111
1125
|
fluid_node_current_level: Vec = None,
|
1112
1126
|
fluid_node_spillage: Vec = None,
|
@@ -1119,7 +1133,8 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1119
1133
|
max_branch_width=5,
|
1120
1134
|
min_bus_width=20,
|
1121
1135
|
max_bus_width=20,
|
1122
|
-
cmap: palettes.Colormaps = None
|
1136
|
+
cmap: palettes.Colormaps = None,
|
1137
|
+
is_three_phase: bool = False):
|
1123
1138
|
"""
|
1124
1139
|
Color objects based on the results passed
|
1125
1140
|
:param Sbus: Buses power (MVA)
|
@@ -1142,9 +1157,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1142
1157
|
:param vsc_losses: VSC branch losses [MW]
|
1143
1158
|
:param vsc_loading: VSC Branch loading [%]
|
1144
1159
|
:param vsc_active: VSC Branch status
|
1145
|
-
:param loading_label: String
|
1160
|
+
:param loading_label: String saying whatever the loading label means
|
1146
1161
|
:param ma: branch phase shift angle (rad)
|
1147
|
-
:param
|
1162
|
+
:param tau: branch tap module (p.u.)
|
1148
1163
|
:param fluid_node_p2x_flow: P2X flow rate (m3)
|
1149
1164
|
:param fluid_node_current_level: Current level (m3)
|
1150
1165
|
:param fluid_node_spillage: Spillage (m3)
|
@@ -1158,6 +1173,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1158
1173
|
:param min_bus_width: Minimum bus width [px]
|
1159
1174
|
:param max_bus_width: Maximum bus width [px]
|
1160
1175
|
:param cmap: Color map [palettes.Colormaps]
|
1176
|
+
:param is_three_phase: the results are three-phase
|
1161
1177
|
"""
|
1162
1178
|
|
1163
1179
|
# voltage_cmap = viz.get_voltage_color_map()
|
@@ -1517,7 +1533,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1517
1533
|
|
1518
1534
|
selected_lineloc = self.get_selected_linelocations_tup()
|
1519
1535
|
|
1520
|
-
|
1521
1536
|
if len(selected_lineloc) != 1:
|
1522
1537
|
self.gui.show_error_toast('More than one waypoint selected. Could not determine where '
|
1523
1538
|
'the substation should be created.')
|
@@ -1657,12 +1672,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1657
1672
|
line2 = Line(name=line.name, code=line.code, bus_from=added_bus, bus_to=line.bus_to,
|
1658
1673
|
circuit_idx=line.circuit_idx, length=length2)
|
1659
1674
|
|
1660
|
-
|
1661
|
-
|
1662
|
-
template.
|
1663
|
-
line1.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
1664
|
-
|
1665
|
-
line2.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
1675
|
+
if line.template is not None:
|
1676
|
+
line1.apply_template(line.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
1677
|
+
line2.apply_template(line.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
1666
1678
|
|
1667
1679
|
line1.color = line.color
|
1668
1680
|
line2.color = line.color
|
@@ -1738,14 +1750,19 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1738
1750
|
|
1739
1751
|
if inpt.is_accepted:
|
1740
1752
|
circ_idx = inpt.value
|
1741
|
-
if
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1753
|
+
if line1.template is not None:
|
1754
|
+
|
1755
|
+
if circ_idx > line1.template.n_circuits:
|
1756
|
+
self.gui.show_error_toast(f'The circuit id introduced is greater than the maximum id that this '
|
1757
|
+
f'template can use. The template has {line1.template.n_circuits}, the '
|
1758
|
+
f'maximum possible value for the circuit_idx is '
|
1759
|
+
f'{line1.template.n_circuits}, try again.')
|
1760
|
+
return
|
1761
|
+
else:
|
1762
|
+
pass
|
1747
1763
|
else:
|
1748
1764
|
pass
|
1765
|
+
|
1749
1766
|
else:
|
1750
1767
|
self.gui.show_error_toast(f'Dialogue not accepted. Operation not performed.')
|
1751
1768
|
return
|
@@ -1808,7 +1825,8 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1808
1825
|
length=line1.length + line2.length, circuit_idx=circ_idx)
|
1809
1826
|
new_line.color = line1.color
|
1810
1827
|
|
1811
|
-
|
1828
|
+
if line1.template is not None:
|
1829
|
+
new_line.apply_template(obj=line1.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
1812
1830
|
|
1813
1831
|
previous_coordinates = [0, 0]
|
1814
1832
|
|
@@ -2057,8 +2075,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
2057
2075
|
protection_rating_factor=line_api.protection_rating_factor,
|
2058
2076
|
circuit_idx=line_api.circuit_idx)
|
2059
2077
|
|
2060
|
-
|
2061
|
-
|
2078
|
+
if line_api.template is not None:
|
2079
|
+
line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
2080
|
+
line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
2062
2081
|
|
2063
2082
|
# Copy other properties from the original line
|
2064
2083
|
if hasattr(line_api, 'color'):
|
@@ -2483,8 +2502,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
2483
2502
|
protection_rating_factor=line_api.protection_rating_factor,
|
2484
2503
|
circuit_idx=line_api.circuit_idx)
|
2485
2504
|
|
2486
|
-
|
2487
|
-
|
2505
|
+
if line_api.template is not None:
|
2506
|
+
line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
2507
|
+
line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
2488
2508
|
|
2489
2509
|
# Copy other properties from the original line
|
2490
2510
|
if hasattr(line_api, 'color'):
|
@@ -2525,7 +2545,8 @@ class GridMapWidget(BaseDiagramWidget):
|
|
2525
2545
|
protection_rating_factor=line_api.protection_rating_factor,
|
2526
2546
|
circuit_idx=line_api.circuit_idx)
|
2527
2547
|
|
2528
|
-
|
2548
|
+
if line_api.template is not None:
|
2549
|
+
connection_line.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
|
2529
2550
|
|
2530
2551
|
# Copy other properties from the original line
|
2531
2552
|
if hasattr(line_api, 'color'):
|
@@ -2657,8 +2678,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
2657
2678
|
line = self.add_api_line(api_object=line_api)
|
2658
2679
|
line.calculate_total_length()
|
2659
2680
|
|
2660
|
-
self.gui.show_info_toast(
|
2661
|
-
|
2681
|
+
self.gui.show_info_toast(
|
2682
|
+
f"Line {line_api.name} had its connection to substation {removed_substation} changed to substation "
|
2683
|
+
f"{added_substation}.")
|
2662
2684
|
|
2663
2685
|
|
2664
2686
|
def generate_map_diagram(
|
@@ -13,13 +13,10 @@ from PySide6.QtWidgets import (QGraphicsLineItem, QGraphicsRectItem, QGraphicsPo
|
|
13
13
|
from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER, GenericDiagramWidget, TRANSPARENT, WHITE
|
14
14
|
from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
|
15
15
|
from GridCal.Gui.Diagrams.SchematicWidget.Substation.bus_graphics import BusGraphicItem
|
16
|
-
from GridCal.Gui.Diagrams.SchematicWidget.Substation.cn_graphics import CnGraphicItem
|
17
|
-
from GridCal.Gui.Diagrams.SchematicWidget.Substation.busbar_graphics import BusBarGraphicItem
|
18
16
|
from GridCal.Gui.Diagrams.SchematicWidget.Fluid.fluid_node_graphics import FluidNodeGraphicItem
|
19
17
|
from GridCal.Gui.messages import yes_no_question
|
20
18
|
|
21
19
|
from GridCalEngine.Devices.Substation.bus import Bus
|
22
|
-
from GridCalEngine.Devices.Substation.connectivity_node import ConnectivityNode
|
23
20
|
from GridCalEngine.Devices.Substation.busbar import BusBar
|
24
21
|
from GridCalEngine.Devices.Branches.line import Line
|
25
22
|
from GridCalEngine.Devices.Branches.transformer import Transformer2W
|
@@ -33,12 +30,14 @@ from GridCalEngine.Devices.Branches.hvdc_line import HvdcLine
|
|
33
30
|
from GridCalEngine.Devices.Fluid.fluid_node import FluidNode
|
34
31
|
from GridCalEngine.Devices.Fluid.fluid_path import FluidPath
|
35
32
|
from GridCalEngine.Devices.types import BRANCH_TYPES
|
33
|
+
from GridCalEngine.enumerations import SwitchGraphicType
|
36
34
|
|
37
35
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
38
36
|
from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
|
39
37
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer3w_graphics import Transformer3WGraphicItem
|
38
|
+
from GridCal.Gui.Diagrams.SchematicWidget.Branches.vsc_graphics_3term import VscGraphicItem3Term
|
40
39
|
|
41
|
-
NODE_GRAPHIC = BusGraphicItem |
|
40
|
+
NODE_GRAPHIC = BusGraphicItem | FluidNodeGraphicItem
|
42
41
|
|
43
42
|
|
44
43
|
class TransformerSymbol(QGraphicsRectItem):
|
@@ -224,7 +223,7 @@ class SeriesReactanceSymbol(VscSymbol):
|
|
224
223
|
|
225
224
|
class SwitchSymbol(VscSymbol):
|
226
225
|
"""
|
227
|
-
|
226
|
+
SwitchSymbol
|
228
227
|
"""
|
229
228
|
|
230
229
|
def __init__(self, parent, pen_width, h=30, w=30):
|
@@ -232,6 +231,16 @@ class SwitchSymbol(VscSymbol):
|
|
232
231
|
icon_route=":/Icons/icons/switch.svg")
|
233
232
|
|
234
233
|
|
234
|
+
class DisconnectorSymbol(VscSymbol):
|
235
|
+
"""
|
236
|
+
DisconnectorSymbol
|
237
|
+
"""
|
238
|
+
|
239
|
+
def __init__(self, parent, pen_width, h=30, w=30):
|
240
|
+
VscSymbol.__init__(self, parent=parent, pen_width=pen_width, h=h, w=w,
|
241
|
+
icon_route=":/Icons/icons/disconnector.svg")
|
242
|
+
|
243
|
+
|
235
244
|
class HvdcSymbol(QGraphicsRectItem):
|
236
245
|
"""
|
237
246
|
HvdcSymbol
|
@@ -483,7 +492,12 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
483
492
|
elif isinstance(api_object, SeriesReactance):
|
484
493
|
self.symbol = SeriesReactanceSymbol(parent=self, pen_width=width, h=30, w=30)
|
485
494
|
elif isinstance(api_object, Switch):
|
486
|
-
|
495
|
+
if api_object.graphic_type == SwitchGraphicType.CircuitBreaker:
|
496
|
+
self.symbol = SwitchSymbol(parent=self, pen_width=width, h=30, w=30)
|
497
|
+
elif api_object.graphic_type == SwitchGraphicType.Disconnector:
|
498
|
+
self.symbol = DisconnectorSymbol(parent=self, pen_width=width, h=30, w=30)
|
499
|
+
else:
|
500
|
+
self.symbol = DisconnectorSymbol(parent=self, pen_width=width, h=30, w=30)
|
487
501
|
else:
|
488
502
|
self.symbol = None
|
489
503
|
|
@@ -554,14 +568,16 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
554
568
|
"""
|
555
569
|
return self._to_port
|
556
570
|
|
557
|
-
def get_terminal_from_parent(self) -> Union[None, BusGraphicItem, Transformer3WGraphicItem,
|
571
|
+
def get_terminal_from_parent(self) -> Union[None, BusGraphicItem, Transformer3WGraphicItem,
|
572
|
+
FluidNodeGraphicItem, VscGraphicItem3Term]:
|
558
573
|
"""
|
559
574
|
Get the terminal from parent object
|
560
575
|
:return: TerminalItem
|
561
576
|
"""
|
562
577
|
return self._from_port.get_parent()
|
563
578
|
|
564
|
-
def get_terminal_to_parent(self) -> Union[None, BusGraphicItem, Transformer3WGraphicItem,
|
579
|
+
def get_terminal_to_parent(self) -> Union[None, BusGraphicItem, Transformer3WGraphicItem,
|
580
|
+
FluidNodeGraphicItem, VscGraphicItem3Term]:
|
565
581
|
"""
|
566
582
|
Get the terminal to parent object
|
567
583
|
:return: TerminalItem
|
@@ -685,6 +701,11 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
685
701
|
# Set pen for everyone
|
686
702
|
self.set_pen(QPen(self.color, self.width, self.style))
|
687
703
|
|
704
|
+
self.arrow_p_from.setVisible(val)
|
705
|
+
self.arrow_q_from.setVisible(val)
|
706
|
+
self.arrow_p_to.setVisible(val)
|
707
|
+
self.arrow_q_to.setVisible(val)
|
708
|
+
|
688
709
|
def plot_profiles(self):
|
689
710
|
"""
|
690
711
|
Plot the time series profiles
|
@@ -816,7 +837,7 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
816
837
|
"""
|
817
838
|
self._editor.set_active_status_to_profile(self.api_object)
|
818
839
|
|
819
|
-
def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
|
840
|
+
def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
|
820
841
|
"""
|
821
842
|
Set the arrow directions
|
822
843
|
:param Sf: Complex power from
|
@@ -835,6 +856,12 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
835
856
|
self.arrow_q_from.set_value(Qf, True, Qf < 0, name="Qf", units="MVAr", draw_label=self.draw_labels)
|
836
857
|
self.arrow_p_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
|
837
858
|
self.arrow_q_to.set_value(Qt_, True, Qt_ > 0, name="Qt", units="MVAr", draw_label=self.draw_labels)
|
859
|
+
else:
|
860
|
+
if St is None:
|
861
|
+
self.arrow_p_from.setVisible(False)
|
862
|
+
self.arrow_q_from.setVisible(False)
|
863
|
+
self.arrow_p_to.setVisible(False)
|
864
|
+
self.arrow_q_to.setVisible(False)
|
838
865
|
|
839
866
|
def set_arrows_with_hvdc_power(self, Pf: float, Pt: float) -> None:
|
840
867
|
"""
|
@@ -903,46 +930,6 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
903
930
|
else:
|
904
931
|
return False
|
905
932
|
|
906
|
-
def is_from_port_a_cn(self) -> bool:
|
907
|
-
"""
|
908
|
-
|
909
|
-
:return:
|
910
|
-
"""
|
911
|
-
if self._from_port:
|
912
|
-
return isinstance(self.get_terminal_from_parent(), CnGraphicItem)
|
913
|
-
else:
|
914
|
-
return False
|
915
|
-
|
916
|
-
def is_to_port_a_cn(self) -> bool:
|
917
|
-
"""
|
918
|
-
|
919
|
-
:return:
|
920
|
-
"""
|
921
|
-
if self._to_port:
|
922
|
-
return isinstance(self.get_terminal_to_parent(), CnGraphicItem)
|
923
|
-
else:
|
924
|
-
return False
|
925
|
-
|
926
|
-
def is_from_port_a_busbar(self) -> bool:
|
927
|
-
"""
|
928
|
-
|
929
|
-
:return:
|
930
|
-
"""
|
931
|
-
if self._from_port:
|
932
|
-
return isinstance(self.get_terminal_from_parent(), BusBarGraphicItem)
|
933
|
-
else:
|
934
|
-
return False
|
935
|
-
|
936
|
-
def is_to_port_a_busbar(self) -> bool:
|
937
|
-
"""
|
938
|
-
|
939
|
-
:return:
|
940
|
-
"""
|
941
|
-
if self._to_port:
|
942
|
-
return isinstance(self.get_terminal_to_parent(), BusBarGraphicItem)
|
943
|
-
else:
|
944
|
-
return False
|
945
|
-
|
946
933
|
def is_from_port_a_tr3(self) -> bool:
|
947
934
|
"""
|
948
935
|
|
@@ -1005,14 +992,14 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
1005
992
|
"""
|
1006
993
|
return self.get_to_graphic_object().api_object
|
1007
994
|
|
1008
|
-
def get_cn_from(self) ->
|
995
|
+
def get_cn_from(self) -> Bus:
|
1009
996
|
"""
|
1010
997
|
|
1011
998
|
:return:
|
1012
999
|
"""
|
1013
1000
|
return self.get_from_graphic_object().api_object
|
1014
1001
|
|
1015
|
-
def get_cn_to(self) ->
|
1002
|
+
def get_cn_to(self) -> Bus:
|
1016
1003
|
"""
|
1017
1004
|
|
1018
1005
|
:return:
|
@@ -1103,62 +1090,6 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
|
|
1103
1090
|
"""
|
1104
1091
|
return self.is_from_port_a_bus() and self.is_to_port_a_fluid_node()
|
1105
1092
|
|
1106
|
-
def connected_between_cn_and_bus(self):
|
1107
|
-
"""
|
1108
|
-
|
1109
|
-
:return:
|
1110
|
-
"""
|
1111
|
-
return self.is_from_port_a_cn() and self.is_to_port_a_bus()
|
1112
|
-
|
1113
|
-
def connected_between_bus_and_cn(self):
|
1114
|
-
"""
|
1115
|
-
|
1116
|
-
:return:
|
1117
|
-
"""
|
1118
|
-
return self.is_from_port_a_bus() and self.is_to_port_a_cn()
|
1119
|
-
|
1120
|
-
def connected_between_cn(self):
|
1121
|
-
"""
|
1122
|
-
|
1123
|
-
:return:
|
1124
|
-
"""
|
1125
|
-
return self.is_from_port_a_cn() and self.is_to_port_a_cn()
|
1126
|
-
|
1127
|
-
def connected_between_busbar_and_bus(self):
|
1128
|
-
"""
|
1129
|
-
|
1130
|
-
:return:
|
1131
|
-
"""
|
1132
|
-
return self.is_from_port_a_busbar() and self.is_to_port_a_bus()
|
1133
|
-
|
1134
|
-
def connected_between_bus_and_busbar(self):
|
1135
|
-
"""
|
1136
|
-
|
1137
|
-
:return:
|
1138
|
-
"""
|
1139
|
-
return self.is_from_port_a_bus() and self.is_to_port_a_busbar()
|
1140
|
-
|
1141
|
-
def connected_between_busbar(self):
|
1142
|
-
"""
|
1143
|
-
|
1144
|
-
:return:
|
1145
|
-
"""
|
1146
|
-
return self.is_from_port_a_busbar() and self.is_to_port_a_busbar()
|
1147
|
-
|
1148
|
-
def connected_between_busbar_and_cn(self):
|
1149
|
-
"""
|
1150
|
-
|
1151
|
-
:return:
|
1152
|
-
"""
|
1153
|
-
return self.is_from_port_a_busbar() and self.is_to_port_a_cn()
|
1154
|
-
|
1155
|
-
def connected_between_cn_and_busbar(self):
|
1156
|
-
"""
|
1157
|
-
|
1158
|
-
:return:
|
1159
|
-
"""
|
1160
|
-
return self.is_from_port_a_cn() and self.is_to_port_a_busbar()
|
1161
|
-
|
1162
1093
|
def should_be_a_converter(self) -> bool:
|
1163
1094
|
"""
|
1164
1095
|
|