GridCal 5.1.49__tar.gz → 5.1.51__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.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +45 -13
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +15 -15
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +45 -38
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +2 -2
- GridCal-5.1.51/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +211 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +48 -17
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +6 -4
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +32 -21
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -1
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/MainWindow.py +367 -268
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +1003 -399
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Model/objects.py +156 -19
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Results/results.py +6 -1
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +4 -4
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +4 -18
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/base_gui.py +1 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/io.py +33 -6
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/simulations.py +14 -24
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/icons_rc.py +11145 -4012
- GridCal-5.1.51/GridCal/Gui/SubstationDesigner/substation_designer.py +178 -0
- GridCal-5.1.51/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +122 -0
- GridCal-5.1.51/GridCal/Gui/SubstationDesigner/update_gui_file.py +9 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SystemScaler/system_scaler.py +6 -4
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/associations_model.py +7 -4
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/gui_functions.py +19 -11
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/object_model.py +38 -19
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/results_model.py +28 -5
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/table_view_header_wrap.py +19 -2
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/LICENSE.txt +1 -1
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Session/file_handler.py +7 -3
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Session/session.py +1 -1
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/__version__.py +1 -1
- GridCal-5.1.51/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/plugins.py +3 -16
- {GridCal-5.1.49 → GridCal-5.1.51}/PKG-INFO +1 -1
- {GridCal-5.1.49 → GridCal-5.1.51}/setup.py +0 -2
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/SyncDialogue → GridCal-5.1.51/GridCal/Gui/SubstationDesigner}/__init__.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/SystemScaler → GridCal-5.1.51/GridCal/Gui/SyncDialogue}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/TowerBuilder → GridCal-5.1.51/GridCal/Gui/SystemScaler}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/TreeModelViewer → GridCal-5.1.51/GridCal/Gui/TowerBuilder}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/Visualization → GridCal-5.1.51/GridCal/Gui/TreeModelViewer}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/Widgets → GridCal-5.1.51/GridCal/Gui/Visualization}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.49/GridCal/Gui/WindPowerWizard → GridCal-5.1.51/GridCal/Gui/Widgets}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.49/GridCal/Gui → GridCal-5.1.51/GridCal/Gui/WindPowerWizard}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.49/GridCal/Session → GridCal-5.1.51/GridCal/Gui}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/console_widget.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/general_dialogues.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/wrappable_table_model.py +0 -0
- {GridCal-5.1.49/GridCal/ThirdParty → GridCal-5.1.51/GridCal/Session}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.49/GridCal/ThirdParty/qdarktheme/_icon → GridCal-5.1.51/GridCal/ThirdParty}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.49/GridCal/ThirdParty/qdarktheme/_template → GridCal-5.1.51/GridCal/ThirdParty/qdarktheme/_icon}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.49/GridCal/data → GridCal-5.1.51/GridCal/ThirdParty/qdarktheme/_template}/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/__init__.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/templates.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/GridCal/update.py +0 -0
- {GridCal-5.1.49 → GridCal-5.1.51}/setup.cfg +0 -0
@@ -30,6 +30,7 @@ from PySide6.QtCore import (Qt, QSize, QRect, QMimeData, QIODevice, QByteArray,
|
|
30
30
|
from PySide6.QtGui import (QIcon, QPixmap, QImage, QPainter, QStandardItemModel, QStandardItem, QColor,
|
31
31
|
QDropEvent, QWheelEvent)
|
32
32
|
|
33
|
+
from GridCal.Gui.SubstationDesigner.substation_designer import SubstationDesigner
|
33
34
|
from GridCalEngine.Devices.Diagrams.map_location import MapLocation
|
34
35
|
from GridCalEngine.Devices.Substation import Bus
|
35
36
|
from GridCalEngine.Devices.Branches.line import Line
|
@@ -857,15 +858,46 @@ class GridMapWidget(BaseDiagramWidget):
|
|
857
858
|
y0 = point0.y()
|
858
859
|
lat, lon = self.to_lat_lon(x=x0, y=y0)
|
859
860
|
|
860
|
-
# print(f"Dropped at x:{x0}, y:{y0}, lat:{lat}, lon:{lon}")
|
861
|
-
|
862
861
|
if obj_type == self.library_model.get_substation_mime_data():
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
862
|
+
self.create_substation_with_dialogue(lat=lat, lon=lon)
|
863
|
+
|
864
|
+
def create_substation_with_dialogue(self, lat, lon):
|
865
|
+
"""
|
866
|
+
Create a substation using the dialogue
|
867
|
+
:param lat:
|
868
|
+
:param lon:
|
869
|
+
:return:
|
870
|
+
"""
|
871
|
+
kv = self.gui.get_default_voltage()
|
872
|
+
dlg = SubstationDesigner(grid=self.circuit, default_voltage=kv)
|
873
|
+
dlg.exec()
|
874
|
+
if dlg.was_ok():
|
875
|
+
|
876
|
+
# create the SE
|
877
|
+
se_object = Substation(name=dlg.get_name(), latitude=lat, longitude=lon)
|
878
|
+
|
879
|
+
self.circuit.add_substation(obj=se_object)
|
880
|
+
substation_graphics = self.add_api_substation(api_object=se_object, lat=lat, lon=lon)
|
881
|
+
|
882
|
+
for vl_template in dlg.get_voltage_levels():
|
883
|
+
|
884
|
+
# substation_graphics.add_voltage_level()
|
885
|
+
vl = VoltageLevel(name=f"{se_object.name} @{kv}KV VL",
|
886
|
+
Vnom=vl_template.voltage,
|
887
|
+
substation=se_object)
|
888
|
+
self.circuit.add_voltage_level(vl)
|
889
|
+
|
890
|
+
bus = Bus(name=f"{se_object.name} @{kv}KV bus",
|
891
|
+
Vnom=vl_template.voltage,
|
892
|
+
substation=se_object,
|
893
|
+
voltage_level=vl)
|
894
|
+
self.circuit.add_bus(obj=bus)
|
895
|
+
|
896
|
+
# add the vl graphics
|
897
|
+
self.add_api_voltage_level(substation_graphics=substation_graphics, api_object=vl)
|
898
|
+
|
899
|
+
# sort voltage levels
|
900
|
+
substation_graphics.sort_voltage_levels()
|
869
901
|
|
870
902
|
def wheelEvent(self, event: QWheelEvent):
|
871
903
|
"""
|
@@ -874,12 +906,12 @@ class GridMapWidget(BaseDiagramWidget):
|
|
874
906
|
:return:
|
875
907
|
"""
|
876
908
|
|
877
|
-
# SANTIAGO:
|
909
|
+
# SANTIAGO: DO NOT TOUCH, THIS IS THE DESIRED BEHAVIOUR
|
878
910
|
self.update_device_sizes()
|
879
911
|
|
880
|
-
def get_branch_width(self):
|
912
|
+
def get_branch_width(self) -> float:
|
881
913
|
"""
|
882
|
-
|
914
|
+
Get the desired branch width
|
883
915
|
:return:
|
884
916
|
"""
|
885
917
|
max_zoom = self.map.max_level
|
@@ -888,9 +920,9 @@ class GridMapWidget(BaseDiagramWidget):
|
|
888
920
|
scale = self.diagram.min_branch_width + (zoom - min_zoom) / (max_zoom - min_zoom)
|
889
921
|
return scale
|
890
922
|
|
891
|
-
def update_device_sizes(self):
|
923
|
+
def update_device_sizes(self) -> None:
|
892
924
|
"""
|
893
|
-
|
925
|
+
Updat ethe devices' sizes
|
894
926
|
:return:
|
895
927
|
"""
|
896
928
|
|
@@ -469,12 +469,12 @@ class MapWidget(QWidget):
|
|
469
469
|
self.view_tlat = 0
|
470
470
|
|
471
471
|
# some cursors
|
472
|
-
self.standard_cursor = QCursor(Qt.ArrowCursor)
|
473
|
-
self.box_select_cursor = QCursor(Qt.CrossCursor)
|
474
|
-
self.wait_cursor = QCursor(Qt.WaitCursor)
|
475
|
-
self.drag_cursor = QCursor(Qt.OpenHandCursor)
|
472
|
+
self.standard_cursor = QCursor(Qt.CursorShape.ArrowCursor)
|
473
|
+
self.box_select_cursor = QCursor(Qt.CursorShape.CrossCursor)
|
474
|
+
self.wait_cursor = QCursor(Qt.CursorShape.WaitCursor)
|
475
|
+
self.drag_cursor = QCursor(Qt.CursorShape.OpenHandCursor)
|
476
476
|
|
477
|
-
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
477
|
+
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
478
478
|
self.setMinimumSize(self.tile_width, self.tile_height)
|
479
479
|
|
480
480
|
self.setMouseTracking(True)
|
@@ -672,9 +672,9 @@ class MapWidget(QWidget):
|
|
672
672
|
self.setCursor(self.default_cursor)
|
673
673
|
|
674
674
|
b = event.button()
|
675
|
-
if b == Qt.NoButton:
|
675
|
+
if b == Qt.MouseButton.NoButton:
|
676
676
|
pass
|
677
|
-
elif b == Qt.LeftButton:
|
677
|
+
elif b == Qt.MouseButton.LeftButton:
|
678
678
|
self.left_mbutton_down = False
|
679
679
|
|
680
680
|
if self.start_drag_x is None:
|
@@ -688,10 +688,10 @@ class MapWidget(QWidget):
|
|
688
688
|
longitude, latitude = self.view_to_geo(x, y)
|
689
689
|
self.position_callback(latitude, longitude, x, y)
|
690
690
|
|
691
|
-
elif b == Qt.
|
691
|
+
elif b == Qt.MouseButton.MiddleButton:
|
692
692
|
self.mid_mbutton_down = False
|
693
693
|
|
694
|
-
elif b == Qt.RightButton:
|
694
|
+
elif b == Qt.MouseButton.RightButton:
|
695
695
|
self.right_mbutton_down = False
|
696
696
|
|
697
697
|
else:
|
@@ -705,13 +705,13 @@ class MapWidget(QWidget):
|
|
705
705
|
:return:
|
706
706
|
"""
|
707
707
|
b = event.button()
|
708
|
-
if b == Qt.NoButton:
|
708
|
+
if b == Qt.MouseButton.NoButton:
|
709
709
|
pass
|
710
|
-
elif b == Qt.LeftButton:
|
710
|
+
elif b == Qt.MouseButton.LeftButton:
|
711
711
|
pass
|
712
|
-
elif b == Qt.
|
712
|
+
elif b == Qt.MouseButton.MiddleButton:
|
713
713
|
pass
|
714
|
-
elif b == Qt.RightButton:
|
714
|
+
elif b == Qt.MouseButton.RightButton:
|
715
715
|
pass
|
716
716
|
else:
|
717
717
|
pass
|
@@ -781,7 +781,7 @@ class MapWidget(QWidget):
|
|
781
781
|
def keyPressEvent(self, event: QKeyEvent):
|
782
782
|
"""Capture a key press."""
|
783
783
|
|
784
|
-
if event.key() == Qt.Key_Shift:
|
784
|
+
if event.key() == Qt.Key.Key_Shift:
|
785
785
|
self.shift_down = True
|
786
786
|
self.default_cursor = self.box_select_cursor
|
787
787
|
self.setCursor(self.default_cursor)
|
@@ -792,7 +792,7 @@ class MapWidget(QWidget):
|
|
792
792
|
"""Capture a key release."""
|
793
793
|
|
794
794
|
key = event.key()
|
795
|
-
if event.key() == Qt.Key_Shift:
|
795
|
+
if event.key() == Qt.Key.Key_Shift:
|
796
796
|
self.shift_down = False
|
797
797
|
self.default_cursor = self.standard_cursor
|
798
798
|
self.setCursor(self.default_cursor)
|
{GridCal-5.1.49 → GridCal-5.1.51}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py
RENAMED
@@ -58,7 +58,7 @@ class LineEditor(QDialog):
|
|
58
58
|
|
59
59
|
self.setObjectName("self")
|
60
60
|
|
61
|
-
self.setContextMenuPolicy(Qt.NoContextMenu)
|
61
|
+
self.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu)
|
62
62
|
|
63
63
|
self.layout = QVBoxLayout(self)
|
64
64
|
|
@@ -84,10 +84,10 @@ class LineEditor(QDialog):
|
|
84
84
|
if length == 0:
|
85
85
|
length = 1.0
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
r_ohm = self.line.R * Zbase / length
|
88
|
+
x_ohm = self.line.X * Zbase / length
|
89
|
+
b_us = self.line.B * Ybase / length * 1e6
|
90
|
+
I_KA = np.round(self.line.rate / (Vf * 1.73205080757), 6) # current in KA
|
91
91
|
|
92
92
|
# ------------------------------------------------------------------------------------------
|
93
93
|
|
@@ -103,22 +103,22 @@ class LineEditor(QDialog):
|
|
103
103
|
self.catalogue_combo.setCurrentIndex(idx)
|
104
104
|
|
105
105
|
if isinstance(self.current_template, SequenceLineType):
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
106
|
+
I_KA = self.current_template.Imax
|
107
|
+
r_ohm = self.current_template.R
|
108
|
+
x_ohm = self.current_template.X
|
109
|
+
b_us = self.current_template.B
|
110
110
|
|
111
111
|
if isinstance(self.current_template, UndergroundLineType):
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
112
|
+
I_KA = self.current_template.Imax
|
113
|
+
r_ohm = self.current_template.R
|
114
|
+
x_ohm = self.current_template.X
|
115
|
+
b_us = self.current_template.B
|
116
116
|
|
117
117
|
elif isinstance(self.current_template, OverheadLineType):
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
118
|
+
I_KA = self.current_template.Imax
|
119
|
+
r_ohm = self.current_template.R1
|
120
|
+
x_ohm = self.current_template.X1
|
121
|
+
b_us = self.current_template.Bsh1
|
122
122
|
|
123
123
|
except:
|
124
124
|
pass
|
@@ -141,7 +141,7 @@ class LineEditor(QDialog):
|
|
141
141
|
self.i_spinner.setMinimum(0)
|
142
142
|
self.i_spinner.setMaximum(9999999)
|
143
143
|
self.i_spinner.setDecimals(2)
|
144
|
-
self.i_spinner.setValue(
|
144
|
+
self.i_spinner.setValue(I_KA)
|
145
145
|
self.i_spinner.setSuffix(' KA')
|
146
146
|
|
147
147
|
# R
|
@@ -149,7 +149,7 @@ class LineEditor(QDialog):
|
|
149
149
|
self.r_spinner.setMinimum(0)
|
150
150
|
self.r_spinner.setMaximum(9999999)
|
151
151
|
self.r_spinner.setDecimals(6)
|
152
|
-
self.r_spinner.setValue(
|
152
|
+
self.r_spinner.setValue(r_ohm)
|
153
153
|
self.r_spinner.setSuffix(' Ω/Km')
|
154
154
|
|
155
155
|
# X
|
@@ -157,7 +157,7 @@ class LineEditor(QDialog):
|
|
157
157
|
self.x_spinner.setMinimum(0)
|
158
158
|
self.x_spinner.setMaximum(9999999)
|
159
159
|
self.x_spinner.setDecimals(6)
|
160
|
-
self.x_spinner.setValue(
|
160
|
+
self.x_spinner.setValue(x_ohm)
|
161
161
|
self.x_spinner.setSuffix(' Ω/Km')
|
162
162
|
|
163
163
|
# B
|
@@ -165,7 +165,7 @@ class LineEditor(QDialog):
|
|
165
165
|
self.b_spinner.setMinimum(0)
|
166
166
|
self.b_spinner.setMaximum(9999999)
|
167
167
|
self.b_spinner.setDecimals(6)
|
168
|
-
self.b_spinner.setValue(
|
168
|
+
self.b_spinner.setValue(b_us)
|
169
169
|
self.b_spinner.setSuffix(" uS/Km")
|
170
170
|
|
171
171
|
# apply to profile
|
@@ -209,29 +209,36 @@ class LineEditor(QDialog):
|
|
209
209
|
|
210
210
|
self.setWindowTitle('Line editor')
|
211
211
|
|
212
|
-
def accept_click(self):
|
212
|
+
def accept_click(self) -> None:
|
213
213
|
"""
|
214
214
|
Set the values
|
215
215
|
:return:
|
216
216
|
"""
|
217
217
|
|
218
|
-
|
219
|
-
|
220
|
-
|
218
|
+
length = self.l_spinner.value()
|
219
|
+
|
220
|
+
if length != 0.0:
|
221
|
+
|
222
|
+
if self.selected_template is not None:
|
223
|
+
self.line.set_length(val=length, update_electrical_values=False)
|
224
|
+
self.line.apply_template(obj=self.selected_template, Sbase=self.Sbase)
|
225
|
+
|
226
|
+
else:
|
227
|
+
wf = 2 * np.pi * self.frequency
|
228
|
+
self.line.fill_design_properties(
|
229
|
+
r_ohm=self.r_spinner.value(), # ohm / km
|
230
|
+
x_ohm=self.x_spinner.value(), # ohm / km
|
231
|
+
c_nf=self.b_spinner.value() * 1e3 / wf, # nF / km
|
232
|
+
length=length, # km
|
233
|
+
Imax=self.i_spinner.value(), # KA
|
234
|
+
freq=self.frequency, # Hz
|
235
|
+
Sbase=self.Sbase, # MVA
|
236
|
+
apply_to_profile=self.apply_to_profile.isChecked()
|
237
|
+
)
|
238
|
+
|
239
|
+
self.accept()
|
221
240
|
else:
|
222
|
-
|
223
|
-
self.line.fill_design_properties(
|
224
|
-
r_ohm=self.r_spinner.value(), # ohm / km
|
225
|
-
x_ohm=self.x_spinner.value(), # ohm / km
|
226
|
-
c_nf=self.b_spinner.value() * 1e3 / wf, # nF / km
|
227
|
-
length=self.l_spinner.value(), # km
|
228
|
-
Imax=self.i_spinner.value(), # KA
|
229
|
-
freq=self.frequency, # Hz
|
230
|
-
Sbase=self.Sbase, # MVA
|
231
|
-
apply_to_profile=self.apply_to_profile.isChecked()
|
232
|
-
)
|
233
|
-
|
234
|
-
self.accept()
|
241
|
+
error_msg(text="The length cannot be 0!", title="Accept line design values")
|
235
242
|
|
236
243
|
def load_template(self, template: Union[SequenceLineType, OverheadLineType, UndergroundLineType]):
|
237
244
|
"""
|
@@ -181,7 +181,7 @@ class TransformerGraphicItem(LineGraphicTemplateItem):
|
|
181
181
|
modify_on_accept=True,
|
182
182
|
templates=templates,
|
183
183
|
current_template=current_template)
|
184
|
-
if dlg.
|
184
|
+
if dlg.exec():
|
185
185
|
pass
|
186
186
|
|
187
187
|
def edit_tap_changer(self):
|
@@ -191,7 +191,7 @@ class TransformerGraphicItem(LineGraphicTemplateItem):
|
|
191
191
|
"""
|
192
192
|
|
193
193
|
dlg = TransformerTapsEditor(api_object=self.api_object.tap_changer)
|
194
|
-
if dlg.
|
194
|
+
if dlg.exec():
|
195
195
|
pass
|
196
196
|
|
197
197
|
def show_transformer_editor(self):
|
@@ -0,0 +1,211 @@
|
|
1
|
+
# GridCal
|
2
|
+
# Copyright (C) 2015 - 2024 Santiago Peñate Vera
|
3
|
+
#
|
4
|
+
# This program is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public License
|
15
|
+
# along with this program; if not, write to the Free Software Foundation,
|
16
|
+
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
|
+
|
18
|
+
from PySide6.QtCore import Qt
|
19
|
+
from PySide6.QtWidgets import QPushButton, QVBoxLayout, QHBoxLayout, QDialog, QLabel, QFrame
|
20
|
+
from GridCal.Gui.gui_functions import create_spinbox
|
21
|
+
from GridCal.ThirdParty.qdarktheme.qtpy.QtWidgets import QApplication
|
22
|
+
from GridCalEngine.Devices.Branches.transformer3w import Transformer3W
|
23
|
+
from GridCalEngine.Devices.Substation.bus import Bus
|
24
|
+
|
25
|
+
|
26
|
+
class WindingWidget(QFrame):
|
27
|
+
"""
|
28
|
+
Widget to package the winding editor logic
|
29
|
+
"""
|
30
|
+
|
31
|
+
def __init__(self, i: int, V: float, Sn: float, Pcu: float, Vsc: float, bus_to: Bus, Sbase: float):
|
32
|
+
"""
|
33
|
+
|
34
|
+
:param i:
|
35
|
+
:param V:
|
36
|
+
:param Sn:
|
37
|
+
:param Pcu:
|
38
|
+
:param Vsc:
|
39
|
+
:param bus_to:
|
40
|
+
:param Sbase:
|
41
|
+
"""
|
42
|
+
QFrame.__init__(self)
|
43
|
+
|
44
|
+
self.i = i
|
45
|
+
|
46
|
+
self.Sbase = Sbase
|
47
|
+
|
48
|
+
self.layout = QVBoxLayout(self)
|
49
|
+
|
50
|
+
# Vn
|
51
|
+
self.vn_spinner = create_spinbox(value=V, minimum=0, maximum=999999, decimals=6)
|
52
|
+
|
53
|
+
# Sn
|
54
|
+
self.sn_spinner = create_spinbox(value=Sn, minimum=0, maximum=999999, decimals=6)
|
55
|
+
|
56
|
+
# Pcu
|
57
|
+
self.pcu_spinner = create_spinbox(value=Pcu, minimum=0, maximum=999999, decimals=6)
|
58
|
+
|
59
|
+
# Vsc
|
60
|
+
self.vsc_spinner = create_spinbox(value=Vsc, minimum=0, maximum=999999, decimals=6)
|
61
|
+
|
62
|
+
# add all to the GUI
|
63
|
+
self.layout.addWidget(QLabel(f"Winding {self.i}"))
|
64
|
+
|
65
|
+
v_str = f"{bus_to.Vnom} KV" if bus_to is not None else 'Not connected'
|
66
|
+
self.layout.addWidget(QLabel(f"Bus voltage: {v_str}"))
|
67
|
+
|
68
|
+
if i == 1:
|
69
|
+
wstr = "1-2"
|
70
|
+
elif i == 2:
|
71
|
+
wstr = "2-3"
|
72
|
+
elif i == 3:
|
73
|
+
wstr = "3-1"
|
74
|
+
else:
|
75
|
+
wstr = ""
|
76
|
+
|
77
|
+
# spacer
|
78
|
+
self.layout.addWidget(QLabel(""))
|
79
|
+
|
80
|
+
self.layout.addWidget(QLabel(f"V{i}: Nominal voltage [KV]"))
|
81
|
+
self.layout.addWidget(self.vn_spinner)
|
82
|
+
|
83
|
+
self.layout.addWidget(QLabel(f"Sn{i}: Nominal power [MVA]"))
|
84
|
+
self.layout.addWidget(self.sn_spinner)
|
85
|
+
|
86
|
+
self.layout.addWidget(QLabel(f"Pcu {wstr}: Copper losses [kW]"))
|
87
|
+
self.layout.addWidget(self.pcu_spinner)
|
88
|
+
|
89
|
+
self.layout.addWidget(QLabel(f"Vsc {wstr}: Short circuit voltage [%]"))
|
90
|
+
self.layout.addWidget(self.vsc_spinner)
|
91
|
+
|
92
|
+
|
93
|
+
class Transformer3WEditor(QDialog):
|
94
|
+
"""
|
95
|
+
TransformerEditor
|
96
|
+
"""
|
97
|
+
|
98
|
+
def __init__(self, tr3: Transformer3W, Sbase: float = 100.0, modify_on_accept=True):
|
99
|
+
"""
|
100
|
+
Transformer
|
101
|
+
:param tr3:
|
102
|
+
:param Sbase:
|
103
|
+
"""
|
104
|
+
super(Transformer3WEditor, self).__init__()
|
105
|
+
|
106
|
+
# keep pointer to the line object
|
107
|
+
self.transformer_obj = tr3
|
108
|
+
|
109
|
+
self.Sbase = Sbase
|
110
|
+
|
111
|
+
self.modify_on_accept = modify_on_accept
|
112
|
+
|
113
|
+
self.selected_template = None
|
114
|
+
|
115
|
+
self.setObjectName("self")
|
116
|
+
|
117
|
+
self.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu)
|
118
|
+
|
119
|
+
# main vertical layout
|
120
|
+
self.layout = QVBoxLayout(self)
|
121
|
+
|
122
|
+
# windings horizontal layout
|
123
|
+
self.h_layout = QHBoxLayout(self)
|
124
|
+
self.w_frame = QFrame(self)
|
125
|
+
self.w_frame.setLayout(self.h_layout)
|
126
|
+
|
127
|
+
# create the windings frames
|
128
|
+
self.w1 = WindingWidget(1, V=tr3.V1, Sn=tr3.rate1, Pcu=tr3.Pcu12, Vsc=tr3.Vsc12,
|
129
|
+
bus_to=tr3.bus1, Sbase=self.Sbase)
|
130
|
+
|
131
|
+
self.w2 = WindingWidget(2, V=tr3.V2, Sn=tr3.rate2, Pcu=tr3.Pcu23, Vsc=tr3.Vsc23,
|
132
|
+
bus_to=tr3.bus2, Sbase=self.Sbase)
|
133
|
+
|
134
|
+
self.w3 = WindingWidget(3, V=tr3.V3, Sn=tr3.rate3, Pcu=tr3.Pcu31, Vsc=tr3.Vsc31,
|
135
|
+
bus_to=tr3.bus3, Sbase=self.Sbase)
|
136
|
+
|
137
|
+
self.h_layout.addWidget(self.w1)
|
138
|
+
self.h_layout.addWidget(self.w2)
|
139
|
+
self.h_layout.addWidget(self.w3)
|
140
|
+
|
141
|
+
# Pfe
|
142
|
+
self.pfe_spinner = create_spinbox(value=0.0, minimum=0, maximum=999999, decimals=6)
|
143
|
+
|
144
|
+
# I0
|
145
|
+
self.I0_spinner = create_spinbox(value=0.0, minimum=0, maximum=999999, decimals=6)
|
146
|
+
|
147
|
+
# ------------------------------------------------------------------------------------------
|
148
|
+
# Set the object values
|
149
|
+
# ------------------------------------------------------------------------------------------
|
150
|
+
|
151
|
+
# accept button
|
152
|
+
self.accept_btn = QPushButton()
|
153
|
+
self.accept_btn.setText('Accept')
|
154
|
+
self.accept_btn.clicked.connect(self.accept_click)
|
155
|
+
|
156
|
+
self.layout.addWidget(QLabel(f"Name: {tr3.name}"))
|
157
|
+
self.layout.addWidget(QLabel(f""))
|
158
|
+
|
159
|
+
self.layout.addWidget(QLabel("Pfe: Iron losses [kW]"))
|
160
|
+
self.layout.addWidget(self.pfe_spinner)
|
161
|
+
|
162
|
+
self.layout.addWidget(QLabel("I0: No load current [%]"))
|
163
|
+
self.layout.addWidget(self.I0_spinner)
|
164
|
+
|
165
|
+
# compose main layout
|
166
|
+
self.layout.addWidget(self.w_frame)
|
167
|
+
|
168
|
+
self.layout.addWidget(self.accept_btn)
|
169
|
+
|
170
|
+
self.setLayout(self.layout)
|
171
|
+
|
172
|
+
self.setWindowTitle('Transformer editor')
|
173
|
+
|
174
|
+
def accept_click(self):
|
175
|
+
"""
|
176
|
+
Create transformer type and get the impedances
|
177
|
+
:return:
|
178
|
+
"""
|
179
|
+
|
180
|
+
if self.modify_on_accept:
|
181
|
+
self.transformer_obj.fill_from_design_values(V1=self.w1.vn_spinner.value(),
|
182
|
+
V2=self.w2.vn_spinner.value(),
|
183
|
+
V3=self.w3.vn_spinner.value(),
|
184
|
+
Sn1=self.w1.sn_spinner.value(),
|
185
|
+
Sn2=self.w2.sn_spinner.value(),
|
186
|
+
Sn3=self.w3.sn_spinner.value(),
|
187
|
+
Pcu12=self.w1.pcu_spinner.value(),
|
188
|
+
Pcu23=self.w2.pcu_spinner.value(),
|
189
|
+
Pcu31=self.w3.pcu_spinner.value(),
|
190
|
+
Vsc12=self.w1.vsc_spinner.value(),
|
191
|
+
Vsc23=self.w2.vsc_spinner.value(),
|
192
|
+
Vsc31=self.w3.vsc_spinner.value(),
|
193
|
+
Pfe=self.pfe_spinner.value(),
|
194
|
+
I0=self.I0_spinner.value(),
|
195
|
+
Sbase=self.Sbase)
|
196
|
+
|
197
|
+
self.accept()
|
198
|
+
|
199
|
+
|
200
|
+
if __name__ == '__main__':
|
201
|
+
import sys
|
202
|
+
from GridCalEngine.Devices.Substation.bus import Bus
|
203
|
+
|
204
|
+
app = QApplication(sys.argv)
|
205
|
+
|
206
|
+
b1 = Bus()
|
207
|
+
b2 = Bus()
|
208
|
+
b3 = Bus()
|
209
|
+
tr3 = Transformer3W(bus1=b1, bus2=b2, bus3=b3)
|
210
|
+
editor = Transformer3WEditor(tr3, 100.0)
|
211
|
+
editor.exec()
|
@@ -21,13 +21,17 @@ from PySide6.QtCore import Qt, QPoint
|
|
21
21
|
from PySide6.QtGui import QPen, QCursor, QColor, QIcon, QPixmap
|
22
22
|
from PySide6.QtWidgets import QGraphicsItem, QGraphicsEllipseItem, QGraphicsRectItem, QMenu, QGraphicsSceneMouseEvent
|
23
23
|
|
24
|
-
from
|
24
|
+
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer3w_editor import Transformer3WEditor
|
25
25
|
from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED
|
26
26
|
from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import RoundTerminalItem
|
27
27
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.winding_graphics import WindingGraphicItem
|
28
28
|
from GridCal.Gui.messages import yes_no_question
|
29
|
+
from GridCalEngine.Devices.Branches.transformer3w import Transformer3W
|
30
|
+
from GridCalEngine.enumerations import DeviceType
|
31
|
+
from GridCal.Gui.gui_functions import add_menu_entry
|
29
32
|
|
30
|
-
if TYPE_CHECKING:
|
33
|
+
if TYPE_CHECKING:
|
34
|
+
# Only imports the below statements during type checking
|
31
35
|
from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
|
32
36
|
|
33
37
|
|
@@ -84,11 +88,11 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
84
88
|
self.color = ACTIVE['color']
|
85
89
|
self.style = ACTIVE['style']
|
86
90
|
|
87
|
-
self.setPen(QPen(Qt.transparent, self.pen_width, self.style))
|
88
|
-
self.setBrush(Qt.transparent)
|
91
|
+
self.setPen(QPen(Qt.GlobalColor.transparent, self.pen_width, self.style))
|
92
|
+
self.setBrush(Qt.GlobalColor.transparent)
|
89
93
|
self.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsMovable)
|
90
94
|
self.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsSelectable)
|
91
|
-
self.setCursor(QCursor(Qt.PointingHandCursor))
|
95
|
+
self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
92
96
|
|
93
97
|
# index
|
94
98
|
self.index = index
|
@@ -159,9 +163,11 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
159
163
|
for i in range(self.n_windings):
|
160
164
|
self.winding_circles[i].setPen(pen)
|
161
165
|
self.terminals[i].setPen(pen)
|
162
|
-
self.connection_lines[i].recolour_mode()
|
163
166
|
|
164
|
-
|
167
|
+
if self.connection_lines[i] is not None:
|
168
|
+
self.connection_lines[i].recolour_mode()
|
169
|
+
|
170
|
+
def set_winding_tool_tips(self) -> None:
|
165
171
|
"""
|
166
172
|
Set
|
167
173
|
:return:
|
@@ -170,7 +176,6 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
170
176
|
self.winding_circles[0].setToolTip("Winding 1: {0} KV".format(self.api_object.V1))
|
171
177
|
self.winding_circles[1].setToolTip("Winding 2: {0} KV".format(self.api_object.V2))
|
172
178
|
self.winding_circles[2].setToolTip("Winding 3: {0} KV".format(self.api_object.V3))
|
173
|
-
pass
|
174
179
|
|
175
180
|
def set_label(self, val: str):
|
176
181
|
"""
|
@@ -208,6 +213,18 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
208
213
|
if self.api_object is not None:
|
209
214
|
self.editor.set_editor_model(api_object=self.api_object)
|
210
215
|
|
216
|
+
def mouseDoubleClickEvent(self, event):
|
217
|
+
"""
|
218
|
+
On double click, edit
|
219
|
+
:param event:
|
220
|
+
:return:
|
221
|
+
"""
|
222
|
+
|
223
|
+
if self.api_object is not None:
|
224
|
+
if self.api_object.device_type in [DeviceType.Transformer3WDevice]:
|
225
|
+
# trigger the editor
|
226
|
+
self.edit()
|
227
|
+
|
211
228
|
def contextMenuEvent(self, event):
|
212
229
|
"""
|
213
230
|
Show context menu
|
@@ -220,17 +237,21 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
220
237
|
|
221
238
|
# menu.addSeparator()
|
222
239
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
240
|
+
add_menu_entry(menu=menu,
|
241
|
+
text="Edit",
|
242
|
+
function_ptr=self.edit,
|
243
|
+
icon_path=":/Icons/icons/edit.svg")
|
244
|
+
|
245
|
+
add_menu_entry(menu=menu,
|
246
|
+
text="Delete",
|
247
|
+
function_ptr=self.remove,
|
248
|
+
icon_path=":/Icons/icons/delete3.svg")
|
228
249
|
|
229
250
|
menu.exec_(event.screenPos())
|
230
251
|
else:
|
231
252
|
pass
|
232
253
|
|
233
|
-
def add_big_marker(self, color=Qt.red, tool_tip_text=""):
|
254
|
+
def add_big_marker(self, color=Qt.GlobalColor.red, tool_tip_text=""):
|
234
255
|
"""
|
235
256
|
Add a big marker to the bus
|
236
257
|
:param color: Qt Color ot the marker
|
@@ -350,21 +371,21 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
350
371
|
self.api_object.bus1 = None
|
351
372
|
self.api_object.V1 = 0
|
352
373
|
self.connection_lines[0] = None
|
353
|
-
self.api_object.winding1 = None
|
374
|
+
self.api_object.winding1.bus_to = None
|
354
375
|
self.terminals[0].setZValue(-1)
|
355
376
|
|
356
377
|
elif i == 1:
|
357
378
|
self.api_object.bus2 = None
|
358
379
|
self.api_object.V2 = 0
|
359
380
|
self.connection_lines[1] = None
|
360
|
-
self.api_object.winding2 = None
|
381
|
+
self.api_object.winding2.bus_to = None
|
361
382
|
self.terminals[1].setZValue(-1)
|
362
383
|
|
363
384
|
elif i == 2:
|
364
385
|
self.api_object.bus3 = None
|
365
386
|
self.api_object.V3 = 0
|
366
387
|
self.connection_lines[2] = None
|
367
|
-
self.api_object.winding3 = None
|
388
|
+
self.api_object.winding3.bus_to = None
|
368
389
|
self.terminals[2].setZValue(-1)
|
369
390
|
else:
|
370
391
|
raise Exception('Unsupported winding index {}'.format(i))
|
@@ -417,3 +438,13 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
|
|
417
438
|
if ok:
|
418
439
|
self.delete_all_connections()
|
419
440
|
self.editor.remove_element(device=self.api_object, graphic_object=self)
|
441
|
+
|
442
|
+
def edit(self):
|
443
|
+
"""
|
444
|
+
Open the appropriate editor dialogue
|
445
|
+
:return:
|
446
|
+
"""
|
447
|
+
Sbase = self.editor.circuit.Sbase
|
448
|
+
dlg = Transformer3WEditor(self.api_object, Sbase, modify_on_accept=True)
|
449
|
+
if dlg.exec():
|
450
|
+
pass
|