GridCal 5.3.35__tar.gz → 5.3.37__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.35 → gridcal-5.3.37}/GridCal/Gui/CascadingSteps/gui.py +1 -1
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/controllable_shunt_editor.py +1 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/generator_editor.py +1 -1
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Branches → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/line_editor.py +58 -14
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Branches → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/transformer3w_editor.py +20 -16
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +24 -39
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +4 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +4 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +3 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +4 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +48 -30
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +67 -52
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +22 -5
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +56 -26
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +19 -23
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +554 -197
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +6 -27
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +37 -23
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +7 -3
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +34 -33
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +5 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +16 -11
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +53 -26
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +84 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +9 -5
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +85 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +11 -81
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +36 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +94 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +40 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +39 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +14 -126
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +288 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +47 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +35 -0
- gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +38 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +125 -110
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +65 -55
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +72 -55
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +119 -157
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +26 -6
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/base_diagram_widget.py +168 -5
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/generic_graphics.py +193 -92
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/graphics_manager.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/demo_code.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/MainWindow.py +337 -337
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +71 -52
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Model/objects.py +10 -10
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Model/time_events.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Results/results.py +10 -12
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +2 -2
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +2 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/base_gui.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/io.py +2 -2
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/simulations.py +5 -5
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/profile_dialogue.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/MainWindow.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SyncDialogue/gui.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SyncDialogue/sync_dialogue.py +2 -2
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +2 -2
- gridcal-5.3.37/GridCal/Gui/Widgets/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/general_dialogues.py +93 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/object_model.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/profiles_model.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/server_driver.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/session.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/__init__.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +2 -2
- gridcal-5.3.37/GridCal/ThirdParty/qdarktheme/_resources/svg.py +26 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/__version__.py +1 -1
- {gridcal-5.3.35 → gridcal-5.3.37}/PKG-INFO +1 -1
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -154
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -160
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -149
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -180
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -160
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -160
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -171
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -142
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -163
- gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -158
- gridcal-5.3.35/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -26
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ExecuteGridCal.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Fluid → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/__init__.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/MapWidget/Branches → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/new_line_dialogue.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Branches → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/transformer_editor.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Branches → gridcal-5.3.37/GridCal/Gui/Diagrams/Editors}/transformer_taps_editor.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Injections → gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Fluid}/__init__.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Diagrams/SchematicWidget/Substation → gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Injections}/__init__.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/GridMerge → gridcal-5.3.37/GridCal/Gui/Diagrams/SchematicWidget/Substation}/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/ProfilesInput → gridcal-5.3.37/GridCal/Gui/GridMerge}/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/demo_code2.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/demo_code3.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/object_select_window.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/SolarPowerWizard → gridcal-5.3.37/GridCal/Gui/ProfilesInput}/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {gridcal-5.3.35/GridCal/Gui/Widgets → gridcal-5.3.37/GridCal/Gui/SolarPowerWizard}/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Visualization/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Visualization/visualization.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/associations_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/gui_functions.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/messages.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/pandas_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/plot_config.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/python_console.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/python_highlighter.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/results_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/themes.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/toast_widget.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/update_gui_all.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/update_gui_common.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/wrappable_table_model.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/LICENSE.txt +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/export_results_driver.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/file_handler.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Session/synchronization_driver.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/GridCal.ico +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/GridCal.svg +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/__init__.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/cables.csv +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/sequence_lines.csv +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/transformers.csv +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/data/wires.csv +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/plugins.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/templates.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/GridCal/update.py +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/setup.cfg +0 -0
- {gridcal-5.3.35 → gridcal-5.3.37}/setup.py +0 -0
@@ -71,7 +71,7 @@ class Ui_Dialog(object):
|
|
71
71
|
self.clear_cascade_pushButton = QPushButton(self.frame_11)
|
72
72
|
self.clear_cascade_pushButton.setObjectName(u"clear_cascade_pushButton")
|
73
73
|
icon3 = QIcon()
|
74
|
-
icon3.addFile(u":/Icons/icons/
|
74
|
+
icon3.addFile(u":/Icons/icons/delete_with_dialogue.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
75
75
|
self.clear_cascade_pushButton.setIcon(icon3)
|
76
76
|
|
77
77
|
self.horizontalLayout_3.addWidget(self.clear_cascade_pushButton)
|
@@ -249,7 +249,7 @@ class GeneratorQCurveEditor(QDialog):
|
|
249
249
|
row = selected_indexes[0].row()
|
250
250
|
self.table_model.delRow(row)
|
251
251
|
else:
|
252
|
-
# if no selection,
|
252
|
+
# if no selection, delete_with_dialogue the last row
|
253
253
|
self.table_model.delLastRow()
|
254
254
|
|
255
255
|
def sort(self):
|
@@ -7,11 +7,10 @@ from __future__ import annotations
|
|
7
7
|
import numpy as np
|
8
8
|
|
9
9
|
from typing import Union, List
|
10
|
-
from GridCal.Gui.messages import warning_msg
|
11
10
|
from PySide6.QtCore import Qt
|
12
11
|
from PySide6.QtWidgets import QPushButton, QVBoxLayout, QDialog, QLabel, QDoubleSpinBox, QComboBox, QCheckBox
|
13
12
|
from GridCal.Gui.gui_functions import get_list_model
|
14
|
-
from GridCal.Gui.messages import error_msg
|
13
|
+
from GridCal.Gui.messages import error_msg, warning_msg, yes_no_question
|
15
14
|
from GridCalEngine.Devices.Branches.line import Line, SequenceLineType, OverheadLineType, UndergroundLineType
|
16
15
|
|
17
16
|
|
@@ -169,6 +168,17 @@ class LineEditor(QDialog):
|
|
169
168
|
self.b_spinner.setValue(b_us)
|
170
169
|
self.b_spinner.setSuffix(" uS/Km")
|
171
170
|
|
171
|
+
# Circuit Index
|
172
|
+
max_circuits = 0
|
173
|
+
if isinstance(self.current_template, OverheadLineType):
|
174
|
+
max_circuits = self.current_template.n_circuits
|
175
|
+
self.circuit_idx = QDoubleSpinBox()
|
176
|
+
self.circuit_idx.setMinimum(1)
|
177
|
+
self.circuit_idx.setMaximum(max_circuits)
|
178
|
+
self.circuit_idx.setDecimals(0)
|
179
|
+
self.circuit_idx.setValue(float(self.line.circuit_idx))
|
180
|
+
self.circuit_idx.setSuffix("")
|
181
|
+
|
172
182
|
# apply to profile
|
173
183
|
self.apply_to_profile = QCheckBox()
|
174
184
|
self.apply_to_profile.setToolTip("Apply the newly computed values like the rating to the profile")
|
@@ -184,6 +194,9 @@ class LineEditor(QDialog):
|
|
184
194
|
if templates is not None:
|
185
195
|
self.layout.addWidget(QLabel("Available templates"))
|
186
196
|
self.layout.addWidget(self.catalogue_combo)
|
197
|
+
self.catalogue_combo.currentIndexChanged.connect(self.update_max_circuits)
|
198
|
+
self.layout.addWidget((QLabel("Circuit index:")))
|
199
|
+
self.layout.addWidget(self.circuit_idx)
|
187
200
|
self.layout.addWidget(self.load_template_btn)
|
188
201
|
self.layout.addWidget(QLabel(""))
|
189
202
|
|
@@ -223,22 +236,35 @@ class LineEditor(QDialog):
|
|
223
236
|
if self.selected_template is not None:
|
224
237
|
self.line.disable_auto_updates()
|
225
238
|
self.line.set_length(val=length)
|
239
|
+
self.line.set_circuit_idx(val=int(self.circuit_idx.value()), obj=self.selected_template)
|
226
240
|
self.line.apply_template(obj=self.selected_template, Sbase=self.Sbase, freq=self.frequency)
|
227
241
|
self.line.enable_auto_updates()
|
242
|
+
self.accept()
|
228
243
|
else:
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
Imax=self.i_spinner.value(), # KA
|
236
|
-
freq=self.frequency, # Hz
|
237
|
-
Sbase=self.Sbase, # MVA
|
238
|
-
apply_to_profile=self.apply_to_profile.isChecked()
|
244
|
+
response = yes_no_question(
|
245
|
+
text="Warning: You did not load template values. The circuit index will not be updated. "
|
246
|
+
"Line parameters will be based on the provided values for Length, Max Current, Resistance, "
|
247
|
+
"Reactance, and Susceptance.\n\n"
|
248
|
+
"Do you want to continue without a template?",
|
249
|
+
title="No Template Selected"
|
239
250
|
)
|
240
251
|
|
241
|
-
|
252
|
+
if response: # User selected Yes
|
253
|
+
wf = 2 * np.pi * self.frequency
|
254
|
+
self.line.fill_design_properties(
|
255
|
+
r_ohm=self.r_spinner.value(), # ohm / km
|
256
|
+
x_ohm=self.x_spinner.value(), # ohm / km
|
257
|
+
c_nf=self.b_spinner.value() * 1e3 / wf, # nF / km
|
258
|
+
length=length, # km
|
259
|
+
Imax=self.i_spinner.value(), # KA
|
260
|
+
freq=self.frequency, # Hz
|
261
|
+
Sbase=self.Sbase, # MVA
|
262
|
+
apply_to_profile=self.apply_to_profile.isChecked()
|
263
|
+
)
|
264
|
+
self.accept()
|
265
|
+
else:
|
266
|
+
# User canceled, do nothing
|
267
|
+
return
|
242
268
|
else:
|
243
269
|
error_msg(text="The length cannot be 0!", title="Accept line design values")
|
244
270
|
|
@@ -268,13 +294,14 @@ class LineEditor(QDialog):
|
|
268
294
|
elif isinstance(template, OverheadLineType):
|
269
295
|
if self.current_template.check():
|
270
296
|
R1, X1, Bsh1, I_kA = self.current_template.get_sequence_values(
|
271
|
-
circuit_idx=self.
|
297
|
+
circuit_idx=int(self.circuit_idx.value()),
|
272
298
|
seq=1
|
273
299
|
)
|
274
300
|
self.i_spinner.setValue(I_kA)
|
275
301
|
self.r_spinner.setValue(R1)
|
276
302
|
self.x_spinner.setValue(X1)
|
277
303
|
self.b_spinner.setValue(Bsh1)
|
304
|
+
self.circuit_idx.setMaximum(self.current_template.n_circuits)
|
278
305
|
else:
|
279
306
|
warning_msg(text=f"The template {self.current_template.name} contains errors",
|
280
307
|
title="Load template")
|
@@ -291,3 +318,20 @@ class LineEditor(QDialog):
|
|
291
318
|
|
292
319
|
if idx > -1:
|
293
320
|
self.load_template(template=self.templates[idx])
|
321
|
+
|
322
|
+
def update_max_circuits(self):
|
323
|
+
"""
|
324
|
+
Update the maximum number of circuits
|
325
|
+
:return:
|
326
|
+
"""
|
327
|
+
|
328
|
+
if self.templates is not None:
|
329
|
+
idx = self.catalogue_combo.currentIndex()
|
330
|
+
|
331
|
+
if idx > -1:
|
332
|
+
template = self.templates[idx]
|
333
|
+
|
334
|
+
if isinstance(template, OverheadLineType):
|
335
|
+
self.circuit_idx.setMaximum(template.n_circuits)
|
336
|
+
else:
|
337
|
+
self.circuit_idx.setMaximum(1)
|
@@ -92,7 +92,7 @@ class Transformer3WEditor(QDialog):
|
|
92
92
|
super(Transformer3WEditor, self).__init__()
|
93
93
|
|
94
94
|
# keep pointer to the line object
|
95
|
-
self.
|
95
|
+
self._api_object = tr3
|
96
96
|
|
97
97
|
self.Sbase = Sbase
|
98
98
|
|
@@ -159,6 +159,10 @@ class Transformer3WEditor(QDialog):
|
|
159
159
|
|
160
160
|
self.setWindowTitle('Transformer editor')
|
161
161
|
|
162
|
+
@property
|
163
|
+
def api_object(self) -> Transformer3W:
|
164
|
+
return self._api_object
|
165
|
+
|
162
166
|
def accept_click(self):
|
163
167
|
"""
|
164
168
|
Create transformer type and get the impedances
|
@@ -166,21 +170,21 @@ class Transformer3WEditor(QDialog):
|
|
166
170
|
"""
|
167
171
|
|
168
172
|
if self.modify_on_accept:
|
169
|
-
self.
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
173
|
+
self._api_object.fill_from_design_values(V1=self.w1.vn_spinner.value(),
|
174
|
+
V2=self.w2.vn_spinner.value(),
|
175
|
+
V3=self.w3.vn_spinner.value(),
|
176
|
+
Sn1=self.w1.sn_spinner.value(),
|
177
|
+
Sn2=self.w2.sn_spinner.value(),
|
178
|
+
Sn3=self.w3.sn_spinner.value(),
|
179
|
+
Pcu12=self.w1.pcu_spinner.value(),
|
180
|
+
Pcu23=self.w2.pcu_spinner.value(),
|
181
|
+
Pcu31=self.w3.pcu_spinner.value(),
|
182
|
+
Vsc12=self.w1.vsc_spinner.value(),
|
183
|
+
Vsc23=self.w2.vsc_spinner.value(),
|
184
|
+
Vsc31=self.w3.vsc_spinner.value(),
|
185
|
+
Pfe=self.pfe_spinner.value(),
|
186
|
+
I0=self.I0_spinner.value(),
|
187
|
+
Sbase=self.Sbase)
|
184
188
|
|
185
189
|
self.accept()
|
186
190
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
4
4
|
# SPDX-License-Identifier: MPL-2.0
|
5
5
|
from __future__ import annotations
|
6
|
-
from typing import Tuple, TYPE_CHECKING
|
6
|
+
from typing import Tuple, List, TYPE_CHECKING
|
7
7
|
from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent
|
8
8
|
from GridCal.Gui.gui_functions import add_menu_entry
|
9
9
|
from PySide6 import QtWidgets
|
@@ -87,6 +87,21 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
87
87
|
# Assign color to the node
|
88
88
|
self.set_default_color()
|
89
89
|
|
90
|
+
@property
|
91
|
+
def api_object(self) -> LineLocation:
|
92
|
+
return self._api_object
|
93
|
+
|
94
|
+
@property
|
95
|
+
def editor(self) -> GridMapWidget:
|
96
|
+
return self._editor
|
97
|
+
|
98
|
+
def get_associated_widgets(self) -> List[MapLineContainer]:
|
99
|
+
"""
|
100
|
+
This forwards to the map line container for the appropriate deletion of everything
|
101
|
+
:return:
|
102
|
+
"""
|
103
|
+
return [self.line_container]
|
104
|
+
|
90
105
|
def get_center_pos(self) -> QPointF:
|
91
106
|
"""
|
92
107
|
|
@@ -114,7 +129,6 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
114
129
|
|
115
130
|
if self.enabled:
|
116
131
|
self.update_real_pos()
|
117
|
-
self.needs_update = True
|
118
132
|
self.line_container.update_connectors()
|
119
133
|
|
120
134
|
def update_position_at_the_diagram(self) -> None:
|
@@ -125,16 +139,14 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
125
139
|
center_point = self.get_pos()
|
126
140
|
|
127
141
|
self.lat, self.lon = self.editor.to_lat_lon(x=center_point.x() + real_position.x(),
|
128
|
-
|
142
|
+
y=center_point.y() + real_position.y())
|
129
143
|
|
130
144
|
# print(f'Updating node position id:{self.api_object.idtag}, lat:{self.lat}, lon:{self.lon}')
|
131
145
|
|
132
146
|
self.editor.update_diagram_element(device=self.api_object,
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
print()
|
147
|
+
latitude=self.lat,
|
148
|
+
longitude=self.lon,
|
149
|
+
graphic_object=self)
|
138
150
|
|
139
151
|
def update_database_position(self) -> None:
|
140
152
|
"""
|
@@ -144,7 +156,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
144
156
|
center_point = self.get_pos()
|
145
157
|
|
146
158
|
self.lat, self.lon = self.editor.to_lat_lon(x=center_point.x() + real_position.x(),
|
147
|
-
|
159
|
+
y=center_point.y() + real_position.y())
|
148
160
|
|
149
161
|
# print(f'Updating node position id:{self.api_object.idtag}, lat:{self.lat}, lon:{self.lon}')
|
150
162
|
|
@@ -241,48 +253,19 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
241
253
|
"""
|
242
254
|
menu = QMenu()
|
243
255
|
|
244
|
-
# add_menu_entry(menu=menu,
|
245
|
-
# text="Merge",
|
246
|
-
# icon_path="",
|
247
|
-
# function_ptr=self.MergeFunction)
|
248
|
-
#
|
249
|
-
# add_menu_entry(menu=menu,
|
250
|
-
# text="Split",
|
251
|
-
# icon_path=":/Icons/icons/divide.svg",
|
252
|
-
# function_ptr=self.SplitFunction)
|
253
|
-
|
254
256
|
add_menu_entry(menu=menu,
|
255
257
|
text="Delete",
|
256
|
-
icon_path=":/Icons/icons/
|
258
|
+
icon_path=":/Icons/icons/delete_schematic.svg",
|
257
259
|
function_ptr=self.remove)
|
258
260
|
|
259
261
|
menu.exec_(event.screenPos())
|
260
262
|
|
261
|
-
def AddFunction(self):
|
262
|
-
"""
|
263
|
-
|
264
|
-
:return:
|
265
|
-
"""
|
266
|
-
self.line_container.insert_new_node_at_position(index=self.index)
|
267
|
-
# Implement the functionality for Action 1 here
|
268
|
-
pass
|
269
|
-
|
270
|
-
def SplitFunction(self):
|
271
|
-
"""
|
272
|
-
|
273
|
-
:return:
|
274
|
-
"""
|
275
|
-
self.line_container.split_Line(index=self.index)
|
276
|
-
# Implement the functionality for Action 1 here
|
277
|
-
pass
|
278
|
-
|
279
263
|
def remove(self):
|
280
264
|
"""
|
281
265
|
Remove
|
282
266
|
"""
|
283
267
|
self.line_container.removeNode(node=self)
|
284
268
|
|
285
|
-
|
286
269
|
def setNodeColor(self, inner_color: QColor, border_color: QColor = None) -> None:
|
287
270
|
"""
|
288
271
|
|
@@ -344,3 +327,5 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
344
327
|
pen = self.pen()
|
345
328
|
pen.setWidth(width)
|
346
329
|
self.setPen(pen)
|
330
|
+
|
331
|
+
|
{gridcal-5.3.35 → gridcal-5.3.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py
RENAMED
@@ -44,12 +44,18 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
44
44
|
draw_labels=draw_labels)
|
45
45
|
QGraphicsItemGroup.__init__(self)
|
46
46
|
|
47
|
-
self.editor: GridMapWidget = editor # reassign to make clear the editor type
|
48
|
-
|
49
47
|
self.nodes_list: List[LineLocationGraphicItem] = list()
|
50
48
|
self.segments_list: List[MapLineSegment] = list()
|
51
49
|
self.enabled = True
|
52
50
|
|
51
|
+
@property
|
52
|
+
def api_object(self) -> Union[BRANCH_TYPES, FluidPath]:
|
53
|
+
return self._api_object
|
54
|
+
|
55
|
+
@property
|
56
|
+
def editor(self) -> GridMapWidget:
|
57
|
+
return self._editor
|
58
|
+
|
53
59
|
def set_width_scale(self, width: float, arrow_width: float):
|
54
60
|
"""
|
55
61
|
Set the width scale of the line
|
@@ -68,7 +74,7 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
68
74
|
Remove all segments from the scene
|
69
75
|
"""
|
70
76
|
for segment in self.segments_list:
|
71
|
-
self.editor.
|
77
|
+
self.editor._remove_from_scene(segment)
|
72
78
|
|
73
79
|
self.segments_list = list()
|
74
80
|
|
@@ -77,7 +83,7 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
77
83
|
Remove all the nodes from the scene
|
78
84
|
"""
|
79
85
|
for node in self.nodes_list:
|
80
|
-
self.editor.
|
86
|
+
self.editor._remove_from_scene(node)
|
81
87
|
|
82
88
|
self.nodes_list = list()
|
83
89
|
|
@@ -127,8 +133,8 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
127
133
|
|
128
134
|
:return:
|
129
135
|
"""
|
130
|
-
for
|
131
|
-
|
136
|
+
for connector in self.segments_list:
|
137
|
+
connector.update_endings()
|
132
138
|
|
133
139
|
def end_update(self) -> None:
|
134
140
|
"""
|
@@ -158,10 +164,10 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
158
164
|
loc_data = None
|
159
165
|
|
160
166
|
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
167
|
+
api_object=elm,
|
168
|
+
lat=elm.lat if loc_data is None else loc_data.latitude,
|
169
|
+
lon=elm.long if loc_data is None else loc_data.longitude,
|
170
|
+
index=self.number_of_nodes()) # 2.7 ...
|
165
171
|
|
166
172
|
self.register_new_node(node=graphic_obj)
|
167
173
|
|
@@ -215,8 +221,8 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
215
221
|
connection_elements.append(substation_to_graphics)
|
216
222
|
substation_to_graphics.line_container = self
|
217
223
|
|
218
|
-
br_scale = self.editor.get_branch_width()
|
219
|
-
arrow_scale = self.editor.get_arrow_scale()
|
224
|
+
# br_scale = self.editor.get_branch_width()
|
225
|
+
# arrow_scale = self.editor.get_arrow_scale()
|
220
226
|
|
221
227
|
# second pass: create the segments
|
222
228
|
for i in range(1, len(connection_elements)):
|
@@ -231,9 +237,6 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
231
237
|
elm2.needsUpdate = True
|
232
238
|
segment_graphic_object.needsUpdate = True
|
233
239
|
|
234
|
-
# segment_graphic_object.set_width(br_scale * segment_graphic_object.width) # Assign the pen to the line item
|
235
|
-
# segment_graphic_object.set_arrow_sizes(arrow_scale)
|
236
|
-
|
237
240
|
# register the segment in the line
|
238
241
|
self.add_segment(segment=segment_graphic_object)
|
239
242
|
|
@@ -242,8 +245,6 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
242
245
|
|
243
246
|
self.update_connectors()
|
244
247
|
|
245
|
-
# self.editor.update_device_sizes()
|
246
|
-
|
247
248
|
def substation_to(self):
|
248
249
|
"""
|
249
250
|
|
@@ -290,10 +291,10 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
290
291
|
# Create a new graphical node item
|
291
292
|
|
292
293
|
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
294
|
+
api_object=new_api_object,
|
295
|
+
lat=new_api_object.lat,
|
296
|
+
lon=new_api_object.long,
|
297
|
+
index=index)
|
297
298
|
|
298
299
|
idx = 0
|
299
300
|
|
@@ -339,10 +340,10 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
339
340
|
# Create a new graphical node item
|
340
341
|
|
341
342
|
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
343
|
+
api_object=new_api_object,
|
344
|
+
lat=new_api_object.lat,
|
345
|
+
lon=new_api_object.long,
|
346
|
+
index=0)
|
346
347
|
|
347
348
|
# Add the node to the nodes list
|
348
349
|
self.nodes_list.insert(0, graphic_obj)
|
@@ -385,10 +386,10 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
385
386
|
# Create a new graphical node item
|
386
387
|
|
387
388
|
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
389
|
+
api_object=new_api_object,
|
390
|
+
lat=new_api_object.lat,
|
391
|
+
lon=new_api_object.long,
|
392
|
+
index=index)
|
392
393
|
|
393
394
|
idx = 0
|
394
395
|
|
@@ -532,5 +533,22 @@ class MapLineContainer(GenericDiagramWidget, QGraphicsItemGroup):
|
|
532
533
|
# Update the line's length property
|
533
534
|
if total_length > 0.0:
|
534
535
|
self.api_object.length = total_length
|
535
|
-
|
536
|
+
|
536
537
|
return total_length
|
538
|
+
|
539
|
+
def get_extra_graphics(self):
|
540
|
+
"""
|
541
|
+
This function gets the graphic objects associated to a MapLineContainer
|
542
|
+
return: The list of the associated graphic objects, which are the nodes and segments of the line.
|
543
|
+
"""
|
544
|
+
return self.segments_list + self.nodes_list
|
545
|
+
|
546
|
+
def delete(self):
|
547
|
+
"""
|
548
|
+
Delete this object and all the other objects
|
549
|
+
"""
|
550
|
+
for segment in self.segments_list:
|
551
|
+
segment.delete_from_associations()
|
552
|
+
|
553
|
+
self.editor.delete_with_dialogue(selected=[self], delete_from_db=False)
|
554
|
+
|