GridCal 5.1.21__tar.gz → 5.1.23__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.21 → GridCal-5.1.23}/GridCal/ExecuteGridCal.py +12 -10
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +2 -2
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +19 -30
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +1 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +56 -50
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +20 -9
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +27 -1
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +29 -1
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +29 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GuiFunctions.py +27 -9
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/GridCalMain.py +5 -1
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/MainWindow.py +1482 -1214
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +25 -10
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +36 -22
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Model/objects.py +13 -6
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +3 -3
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +38 -4
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/base_gui.py +17 -11
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/io.py +65 -57
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/simulations.py +51 -86
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/icons_rc.py +660 -452
- GridCal-5.1.23/GridCal/Gui/plugins.py +221 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/server_driver.py +73 -14
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +1 -1
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/__version__.py +1 -1
- {GridCal-5.1.21 → GridCal-5.1.23}/PKG-INFO +2 -2
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ConsoleWidget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/new_line_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GeneralDialogues.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/results_model.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/templates.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/GridCal/update.py +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/setup.cfg +0 -0
- {GridCal-5.1.21 → GridCal-5.1.23}/setup.py +0 -0
@@ -1,17 +1,19 @@
|
|
1
|
-
#
|
1
|
+
# GridCal
|
2
|
+
# Copyright (C) 2015 - 2024 Santiago Peñate Vera
|
2
3
|
#
|
3
|
-
#
|
4
|
-
# it under the terms of the GNU General Public
|
5
|
-
# the Free Software Foundation
|
6
|
-
# (at your option) any later version.
|
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.
|
7
8
|
#
|
8
|
-
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
9
10
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
-
#
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
12
13
|
#
|
13
|
-
# You should have received a copy of the GNU General Public License
|
14
|
-
# along with
|
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.
|
15
17
|
import os
|
16
18
|
import sys
|
17
19
|
import ctypes
|
{GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py
RENAMED
@@ -59,12 +59,12 @@ class MapLineContainer(GenericDiagramWidget):
|
|
59
59
|
editor=editor,
|
60
60
|
draw_labels=draw_labels)
|
61
61
|
|
62
|
-
self.editor: GridMapWidget = editor #
|
62
|
+
self.editor: GridMapWidget = editor # reassign to make clear the editor type
|
63
63
|
|
64
64
|
self.nodes_list: List[NodeGraphicItem] = list()
|
65
65
|
self.segments_list: List[MapLineSegment] = list()
|
66
66
|
self.enabled = True
|
67
|
-
self.original = True
|
67
|
+
self.original = True # TODO: Que es esto?
|
68
68
|
|
69
69
|
def setWidthScale(self, val: float):
|
70
70
|
"""
|
@@ -18,8 +18,8 @@ from __future__ import annotations
|
|
18
18
|
from typing import List, TYPE_CHECKING, Tuple
|
19
19
|
from PySide6 import QtWidgets
|
20
20
|
from PySide6.QtWidgets import (QApplication, QMenu, QGraphicsSceneContextMenuEvent, QGraphicsSceneMouseEvent,
|
21
|
-
QGraphicsRectItem
|
22
|
-
from PySide6.QtCore import Qt, QPointF
|
21
|
+
QGraphicsRectItem)
|
22
|
+
from PySide6.QtCore import Qt, QPointF
|
23
23
|
from PySide6.QtGui import QBrush, QColor, QCursor
|
24
24
|
from GridCal.Gui.Diagrams.MapWidget.Substation.node_template import NodeTemplate
|
25
25
|
from GridCal.Gui.GuiFunctions import add_menu_entry
|
@@ -88,7 +88,9 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
88
88
|
# self.resize(r)
|
89
89
|
self.setAcceptHoverEvents(True) # Enable hover events for the item
|
90
90
|
# self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsMovable) # Allow moving the node
|
91
|
-
self.setFlag(
|
91
|
+
self.setFlag(
|
92
|
+
self.GraphicsItemFlag.ItemIsSelectable | QGraphicsRectItem.ItemIsMovable) # Allow selecting the node
|
93
|
+
|
92
94
|
self.setCursor(QCursor(Qt.PointingHandCursor))
|
93
95
|
|
94
96
|
# Create a pen with reduced line width
|
@@ -136,25 +138,15 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
136
138
|
for i, vl_graphics in enumerate(sorted_objects):
|
137
139
|
vl_graphics.setZValue(i)
|
138
140
|
|
139
|
-
def
|
140
|
-
"""
|
141
|
-
|
142
|
-
:return:
|
143
|
-
"""
|
144
|
-
real_position = self.pos()
|
145
|
-
center_point = self.getPos()
|
146
|
-
# self.x = center_point.x() + real_position.x()
|
147
|
-
# self.y = center_point.y() + real_position.y()
|
148
|
-
self.needsUpdate = True
|
149
|
-
|
150
|
-
def updateDiagram(self):
|
141
|
+
def update_diagram(self):
|
151
142
|
"""
|
152
|
-
|
143
|
+
Updates the element position in the diagram (to save)
|
153
144
|
:return:
|
154
145
|
"""
|
155
146
|
lat, long = self.editor.to_lat_lon(self.rect().x(), self.rect().y())
|
156
147
|
|
157
|
-
|
148
|
+
self.lat = lat
|
149
|
+
self.lon = long
|
158
150
|
|
159
151
|
self.editor.update_diagram_element(device=self.api_object,
|
160
152
|
latitude=lat,
|
@@ -163,8 +155,8 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
163
155
|
|
164
156
|
def get_center_pos(self) -> QPointF:
|
165
157
|
"""
|
166
|
-
|
167
|
-
:return:
|
158
|
+
Get the center position
|
159
|
+
:return: QPointF
|
168
160
|
"""
|
169
161
|
x = self.rect().x() + self.rect().width() / 2
|
170
162
|
y = self.rect().y() + self.rect().height() / 2
|
@@ -186,16 +178,16 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
186
178
|
for vl_graphics in self.voltage_level_graphics:
|
187
179
|
vl_graphics.center_on_substation()
|
188
180
|
|
189
|
-
self.
|
181
|
+
self.update_diagram() # always update
|
190
182
|
|
191
183
|
def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
|
192
184
|
"""
|
193
185
|
Event handler for mouse press events.
|
194
186
|
"""
|
195
187
|
super().mousePressEvent(event)
|
196
|
-
selected_items = self.editor.map.view.
|
197
|
-
if len(selected_items) < 2:
|
198
|
-
|
188
|
+
# selected_items = self.editor.map.view.selected_items()
|
189
|
+
# if len(selected_items) < 2:
|
190
|
+
self.setSelected(True)
|
199
191
|
|
200
192
|
event.setAccepted(True)
|
201
193
|
self.editor.map.view.disableMove = True
|
@@ -211,14 +203,13 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
211
203
|
DeviceType.ZoneDevice: self.editor.circuit.get_zones(),
|
212
204
|
})
|
213
205
|
|
214
|
-
|
215
206
|
def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent):
|
216
207
|
"""
|
217
208
|
Event handler for mouse release events.
|
218
209
|
"""
|
219
210
|
# super().mouseReleaseEvent(event)
|
220
211
|
self.editor.disableMove = True
|
221
|
-
self.
|
212
|
+
self.update_diagram() # always update
|
222
213
|
print("SE mouse release")
|
223
214
|
|
224
215
|
def hoverEnterEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
@@ -252,7 +243,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
252
243
|
function_ptr=self.add_voltage_level)
|
253
244
|
|
254
245
|
add_menu_entry(menu=menu,
|
255
|
-
text="Create line",
|
246
|
+
text="Create line from here",
|
256
247
|
icon_path="",
|
257
248
|
function_ptr=self.create_new_line)
|
258
249
|
|
@@ -276,15 +267,13 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
276
267
|
icon_path="",
|
277
268
|
function_ptr=self.new_substation_diagram)
|
278
269
|
|
279
|
-
|
280
|
-
|
281
270
|
menu.exec_(event.screenPos())
|
282
271
|
|
283
272
|
def create_new_line(self):
|
284
273
|
"""
|
285
274
|
Create a new line in the map wizard
|
286
275
|
"""
|
287
|
-
self.editor.
|
276
|
+
self.editor.create_new_line_wizard()
|
288
277
|
|
289
278
|
def add_function(self):
|
290
279
|
"""
|
@@ -319,7 +308,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
319
308
|
|
320
309
|
pass
|
321
310
|
|
322
|
-
def remove_function(self):
|
311
|
+
def remove_function(self) -> None:
|
323
312
|
"""
|
324
313
|
Function to be called when Action 1 is selected.
|
325
314
|
"""
|
@@ -23,6 +23,7 @@ from GridCal.Gui.Diagrams.MapWidget.Tiles.tile_worker import TileWorker
|
|
23
23
|
def log(val: str):
|
24
24
|
print(val)
|
25
25
|
|
26
|
+
|
26
27
|
# # set how old disk-cache tiles can be before we re-request them from the
|
27
28
|
# # server. this is the number of days old a tile is before we re-request.
|
28
29
|
# # if 'None', never re-request tiles after first satisfied request.
|
@@ -56,6 +56,7 @@ import GridCalEngine.Devices.Diagrams.palettes as palettes
|
|
56
56
|
from GridCal.Gui.Diagrams.graphics_manager import ALL_MAP_GRAPHICS
|
57
57
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
58
58
|
from GridCal.Gui.Diagrams.base_diagram_widget import BaseDiagramWidget
|
59
|
+
from GridCal.Gui.messages import error_msg
|
59
60
|
|
60
61
|
MAP_BRANCH_GRAPHIC_TYPES = Union[
|
61
62
|
MapAcLine, MapDcLine, MapHvdcLine, MapFluidPathLine
|
@@ -457,53 +458,60 @@ class GridMapWidget(BaseDiagramWidget):
|
|
457
458
|
if it1 == it2:
|
458
459
|
return 0
|
459
460
|
|
460
|
-
|
461
|
-
|
461
|
+
new_line = Line()
|
462
|
+
new_line.set_data_from(it1.line_container.api_object)
|
462
463
|
# ln1 = self.api_object.copy()
|
463
464
|
|
464
|
-
better_first, better_second,
|
465
|
+
better_first, better_second, bus_from, bus_to = compare_options(it1, it2)
|
465
466
|
|
466
467
|
first_list = better_first.line_container.api_object.locations.data
|
467
468
|
second_list = better_second.line_container.api_object.locations.data
|
468
469
|
|
469
|
-
|
470
|
+
new_line.locations.data = first_list + second_list
|
470
471
|
|
471
|
-
|
472
|
-
|
472
|
+
new_line.bus_from = bus_from
|
473
|
+
new_line.bus_to = bus_to
|
473
474
|
|
474
475
|
idx = 0
|
475
476
|
for nod in better_first.line_container.nodes_list:
|
476
|
-
|
477
|
-
|
477
|
+
new_line.locations.data[idx].lat = nod.lat
|
478
|
+
new_line.locations.data[idx].long = nod.lon
|
478
479
|
idx = idx + 1
|
479
480
|
|
480
481
|
for nod in better_second.line_container.nodes_list:
|
481
|
-
|
482
|
-
|
482
|
+
new_line.locations.data[idx].lat = nod.lat
|
483
|
+
new_line.locations.data[idx].long = nod.lon
|
483
484
|
idx = idx + 1
|
484
485
|
|
485
|
-
|
486
|
+
self.add_api_line(new_line, original=False)
|
487
|
+
self.circuit.add_line(new_line)
|
486
488
|
|
487
489
|
better_first.line_container.disable_line()
|
488
490
|
better_second.line_container.disable_line()
|
489
491
|
|
490
|
-
def
|
492
|
+
def get_selected_substations(self) -> List[SubstationGraphicItem]:
|
493
|
+
"""
|
494
|
+
Get the selected substations graphics
|
495
|
+
:return: List[SubstationGraphicItem]
|
496
|
+
"""
|
497
|
+
return [s for s in self.map.view.selected_items() if isinstance(s, SubstationGraphicItem)]
|
498
|
+
|
499
|
+
def create_new_line_wizard(self):
|
491
500
|
"""
|
492
501
|
Create a new line in the map with dialogues
|
493
502
|
"""
|
494
503
|
|
495
|
-
selected_items = self.
|
496
|
-
selectedItems = []
|
497
|
-
for item in selected_items:
|
498
|
-
selectedItems.append(item)
|
504
|
+
selected_items = self.get_selected_substations()
|
499
505
|
|
500
|
-
if len(
|
501
|
-
|
506
|
+
if len(selected_items) != 2:
|
507
|
+
error_msg(text="Please select two substations", title="Create new line")
|
508
|
+
return None
|
502
509
|
|
503
|
-
it1: SubstationGraphicItem =
|
504
|
-
it2: SubstationGraphicItem =
|
510
|
+
it1: SubstationGraphicItem = selected_items[0]
|
511
|
+
it2: SubstationGraphicItem = selected_items[1]
|
505
512
|
|
506
513
|
if it1 == it2:
|
514
|
+
error_msg(text="Somehow the two substations are the same :(", title="Create new line")
|
507
515
|
return None
|
508
516
|
|
509
517
|
dialog = NewMapLineDialogue(grid=self.circuit, se_from=it1.api_object, se_to=it2.api_object)
|
@@ -512,8 +520,12 @@ class GridMapWidget(BaseDiagramWidget):
|
|
512
520
|
bus1 = dialog.bus_from()
|
513
521
|
bus2 = dialog.bus_to()
|
514
522
|
if bus1 is not None and bus2 is not None:
|
515
|
-
|
516
|
-
self.add_api_line(
|
523
|
+
new_line = Line(bus_from=bus1, bus_to=bus2)
|
524
|
+
self.add_api_line(new_line, original=True)
|
525
|
+
self.circuit.add_line(new_line)
|
526
|
+
else:
|
527
|
+
error_msg(text="Some of the buses was None :(", title="Create new line")
|
528
|
+
return None
|
517
529
|
|
518
530
|
def removeNode(self, node: NodeGraphicItem):
|
519
531
|
"""
|
@@ -570,8 +582,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
570
582
|
# create the nodes
|
571
583
|
line_container.draw_all()
|
572
584
|
|
573
|
-
# there is
|
574
|
-
|
585
|
+
# there is nt need to add to the scene
|
575
586
|
return line_container
|
576
587
|
|
577
588
|
def add_api_dc_line(self, api_object: DcLine, original: bool = True) -> MapDcLine:
|
@@ -752,24 +763,16 @@ class GridMapWidget(BaseDiagramWidget):
|
|
752
763
|
for idtag, graphic_object in dev_dict.items():
|
753
764
|
graphic_object.sort_voltage_levels()
|
754
765
|
|
755
|
-
def add_object_to_the_schematic(
|
756
|
-
self,
|
757
|
-
elm: ALL_DEV_TYPES,
|
758
|
-
injections_by_bus: Union[None, Dict[Bus, Dict[DeviceType, List[INJECTION_DEVICE_TYPES]]]] = None,
|
759
|
-
injections_by_fluid_node: Union[None, Dict[FluidNode, Dict[DeviceType, List[FLUID_TYPES]]]] = None,
|
760
|
-
injections_by_cn: Union[None, Dict[Bus, Dict[DeviceType, List[INJECTION_DEVICE_TYPES]]]] = None,
|
761
|
-
logger: Logger = Logger()):
|
766
|
+
def add_object_to_the_schematic(self, elm: ALL_DEV_TYPES, logger: Logger = Logger()):
|
762
767
|
"""
|
763
768
|
|
764
769
|
:param elm:
|
765
|
-
:param injections_by_bus:
|
766
|
-
:param injections_by_fluid_node:
|
767
|
-
:param injections_by_cn:
|
768
770
|
:param logger:
|
769
771
|
:return:
|
770
772
|
"""
|
773
|
+
graphic_obj = self.graphics_manager.query(elm=elm)
|
771
774
|
|
772
|
-
if
|
775
|
+
if graphic_obj is None:
|
773
776
|
|
774
777
|
if isinstance(elm, Substation):
|
775
778
|
self.add_api_substation(api_object=elm,
|
@@ -797,31 +800,35 @@ class GridMapWidget(BaseDiagramWidget):
|
|
797
800
|
lon=substation_graphics.lon,
|
798
801
|
lat=substation_graphics.lat)
|
799
802
|
|
800
|
-
elif isinstance(elm, FluidNode):
|
801
|
-
|
802
|
-
if injections_by_fluid_node is None:
|
803
|
-
injections_by_fluid_node = self.circuit.get_injection_devices_grouped_by_fluid_node()
|
804
|
-
|
805
|
-
# TODO: maybe new thing?
|
806
|
-
self.add_api_fluid_node(node=elm,
|
807
|
-
injections_by_tpe=injections_by_fluid_node.get(elm, dict()))
|
808
|
-
|
809
803
|
elif isinstance(elm, Line):
|
810
|
-
self.add_api_line(elm)
|
804
|
+
line_container = self.add_api_line(elm)
|
805
|
+
for segment in line_container.segments_list:
|
806
|
+
self.add_to_scene(graphic_object=segment)
|
811
807
|
|
812
808
|
elif isinstance(elm, DcLine):
|
813
|
-
self.add_api_dc_line(elm)
|
809
|
+
line_container = self.add_api_dc_line(elm)
|
810
|
+
for segment in line_container.segments_list:
|
811
|
+
self.add_to_scene(graphic_object=segment)
|
814
812
|
|
815
813
|
elif isinstance(elm, HvdcLine):
|
816
|
-
self.add_api_hvdc_line(elm)
|
814
|
+
line_container = self.add_api_hvdc_line(elm)
|
815
|
+
for segment in line_container.segments_list:
|
816
|
+
self.add_to_scene(graphic_object=segment)
|
817
817
|
|
818
818
|
elif isinstance(elm, FluidPath):
|
819
|
-
self.add_api_fluid_path(elm)
|
819
|
+
line_container = self.add_api_fluid_path(elm)
|
820
|
+
for segment in line_container.segments_list:
|
821
|
+
self.add_to_scene(graphic_object=segment)
|
820
822
|
|
821
823
|
else:
|
822
|
-
|
824
|
+
logger.add_warning("Unsupported device class",
|
825
|
+
device_class=elm.device_type.value,
|
826
|
+
device=elm.name)
|
823
827
|
|
824
828
|
else:
|
829
|
+
|
830
|
+
self.add_to_scene(graphic_obj)
|
831
|
+
|
825
832
|
logger.add_warning("Device already added", device_class=elm.device_type.value, device=elm.name)
|
826
833
|
|
827
834
|
def dropEvent(self, event: QDropEvent):
|
@@ -842,7 +849,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
842
849
|
# print(f"Dropped at x:{x0}, y:{y0}, lat:{lat}, lon:{lon}")
|
843
850
|
|
844
851
|
if obj_type == self.library_model.get_substation_mime_data():
|
845
|
-
|
846
852
|
api_object = Substation(name=f"Substation {self.circuit.get_substation_number()}",
|
847
853
|
latitude=lat,
|
848
854
|
longitude=lon)
|
@@ -30,12 +30,12 @@ ygeo: latitude
|
|
30
30
|
from __future__ import annotations
|
31
31
|
from typing import List, Union, Tuple, Callable, TYPE_CHECKING
|
32
32
|
from enum import Enum
|
33
|
-
from PySide6.QtCore import Qt, QTimer, QEvent, QPointF
|
33
|
+
from PySide6.QtCore import Qt, QTimer, QEvent, QPointF
|
34
34
|
from PySide6.QtGui import (QPainter, QColor, QPixmap, QCursor,
|
35
35
|
QMouseEvent, QKeyEvent, QWheelEvent,
|
36
36
|
QResizeEvent, QEnterEvent, QPaintEvent, QDragEnterEvent, QDragMoveEvent, QDropEvent)
|
37
37
|
from PySide6.QtWidgets import (QSizePolicy, QWidget, QGraphicsScene, QGraphicsView, QVBoxLayout,
|
38
|
-
QGraphicsSceneMouseEvent)
|
38
|
+
QGraphicsSceneMouseEvent, QGraphicsItem)
|
39
39
|
|
40
40
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
41
41
|
|
@@ -83,7 +83,7 @@ class MapScene(QGraphicsScene):
|
|
83
83
|
:param event:
|
84
84
|
:return:
|
85
85
|
"""
|
86
|
-
print(f"Scene released at {event.scenePos()}")
|
86
|
+
# print(f"Scene released at {event.scenePos()}")
|
87
87
|
super().mouseReleaseEvent(event)
|
88
88
|
|
89
89
|
def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent) -> None:
|
@@ -134,6 +134,13 @@ class MapView(QGraphicsView):
|
|
134
134
|
|
135
135
|
self.scale(initial_zoom_factor, initial_zoom_factor)
|
136
136
|
|
137
|
+
def selected_items(self) -> List[QGraphicsItem]:
|
138
|
+
"""
|
139
|
+
Get the selected items
|
140
|
+
:return:
|
141
|
+
"""
|
142
|
+
return self._scene.selectedItems()
|
143
|
+
|
137
144
|
def mousePressEvent(self, event: QMouseEvent):
|
138
145
|
"""
|
139
146
|
|
@@ -489,7 +496,7 @@ class MapWidget(QWidget):
|
|
489
496
|
while abs(self.view.schema_zoom - 0.015625) > 0.00001:
|
490
497
|
self.view.schema_zoom = self.view.schema_zoom / self.view.map_widget.zoom_factor
|
491
498
|
self.view.scale(1.0 / self.view.map_widget.zoom_factor, 1.0 / self.view.map_widget.zoom_factor)
|
492
|
-
self.GotoLevelAndPosition(level=0, longitude=
|
499
|
+
self.GotoLevelAndPosition(level=0, longitude=0, latitude=0)
|
493
500
|
|
494
501
|
@property
|
495
502
|
def max_level(self):
|
@@ -606,6 +613,7 @@ class MapWidget(QWidget):
|
|
606
613
|
|
607
614
|
elif b == Qt.MouseButton.LeftButton:
|
608
615
|
self.left_mbutton_down = True
|
616
|
+
self.editor.object_editor_table.setModel(None)
|
609
617
|
|
610
618
|
elif b == Qt.MouseButton.MiddleButton:
|
611
619
|
self.mid_mbutton_down = True
|
@@ -614,7 +622,8 @@ class MapWidget(QWidget):
|
|
614
622
|
self.right_mbutton_down = True
|
615
623
|
|
616
624
|
else:
|
617
|
-
|
625
|
+
pass
|
626
|
+
# print('mousePressEvent: unknown button')
|
618
627
|
|
619
628
|
def mouseReleaseEvent(self, event: QMouseEvent) -> None:
|
620
629
|
"""
|
@@ -657,7 +666,8 @@ class MapWidget(QWidget):
|
|
657
666
|
self.right_mbutton_down = False
|
658
667
|
|
659
668
|
else:
|
660
|
-
|
669
|
+
pass
|
670
|
+
# print('mouseReleaseEvent: unknown button')
|
661
671
|
|
662
672
|
def mouseDoubleClickEvent(self, event: QMouseEvent):
|
663
673
|
"""
|
@@ -675,7 +685,8 @@ class MapWidget(QWidget):
|
|
675
685
|
elif b == Qt.RightButton:
|
676
686
|
pass
|
677
687
|
else:
|
678
|
-
|
688
|
+
pass
|
689
|
+
# print('mouseDoubleClickEvent: unknown button')
|
679
690
|
|
680
691
|
def mouseMoveEvent(self, event: QMouseEvent):
|
681
692
|
"""
|
@@ -1816,11 +1827,11 @@ class MapWidget(QWidget):
|
|
1816
1827
|
exist in the new tileset.
|
1817
1828
|
"""
|
1818
1829
|
|
1819
|
-
print('ChangeTileSet: tile_src=%s' % str(tile_src))
|
1830
|
+
# print('ChangeTileSet: tile_src=%s' % str(tile_src))
|
1820
1831
|
|
1821
1832
|
# get level and geo position of view centre
|
1822
1833
|
level, longitude, latitude = self.get_level_and_position()
|
1823
|
-
print('level=%s, geo=(%s, %s)' % (str(level), str(longitude), str(latitude)))
|
1834
|
+
# print('level=%s, geo=(%s, %s)' % (str(level), str(longitude), str(latitude)))
|
1824
1835
|
|
1825
1836
|
# remember old tileset
|
1826
1837
|
old_tileset = self.tile_src
|
@@ -24,7 +24,7 @@ from GridCal.Gui.messages import yes_no_question
|
|
24
24
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer_editor import TransformerEditor
|
25
25
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer_taps_editor import TransformerTapsEditor
|
26
26
|
from GridCalEngine.Devices.Branches.transformer import Transformer2W, TransformerType
|
27
|
-
from GridCalEngine.enumerations import DeviceType
|
27
|
+
from GridCalEngine.enumerations import DeviceType, TapModuleControl
|
28
28
|
|
29
29
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
30
30
|
from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
|
@@ -107,6 +107,16 @@ class TransformerGraphicItem(LineGraphicTemplateItem):
|
|
107
107
|
function_ptr=self.tap_down,
|
108
108
|
icon_path=":/Icons/icons/down.svg")
|
109
109
|
|
110
|
+
add_menu_entry(menu=menu,
|
111
|
+
text="Control V from",
|
112
|
+
function_ptr=self.control_v_from,
|
113
|
+
icon_path=":/Icons/icons/edit.svg")
|
114
|
+
|
115
|
+
add_menu_entry(menu=menu,
|
116
|
+
text="Control V to",
|
117
|
+
function_ptr=self.control_v_to,
|
118
|
+
icon_path=":/Icons/icons/edit.svg")
|
119
|
+
|
110
120
|
menu.addSeparator()
|
111
121
|
|
112
122
|
add_menu_entry(menu=menu,
|
@@ -240,3 +250,19 @@ class TransformerGraphicItem(LineGraphicTemplateItem):
|
|
240
250
|
Set one tap down
|
241
251
|
"""
|
242
252
|
self.api_object.tap_down()
|
253
|
+
|
254
|
+
def control_v_from(self):
|
255
|
+
"""
|
256
|
+
|
257
|
+
:return:
|
258
|
+
"""
|
259
|
+
self.api_object.regulation_bus = self.api_object.bus_from
|
260
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
261
|
+
|
262
|
+
def control_v_to(self):
|
263
|
+
"""
|
264
|
+
|
265
|
+
:return:
|
266
|
+
"""
|
267
|
+
self.api_object.regulation_bus = self.api_object.bus_to
|
268
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
{GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py
RENAMED
@@ -21,6 +21,7 @@ from PySide6.QtWidgets import QMenu
|
|
21
21
|
from GridCal.Gui.GuiFunctions import add_menu_entry
|
22
22
|
from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem
|
23
23
|
from GridCalEngine.Devices.Branches.upfc import UPFC
|
24
|
+
from GridCalEngine.enumerations import TapModuleControl
|
24
25
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_graphics_template import LineGraphicTemplateItem
|
25
26
|
|
26
27
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
@@ -90,6 +91,18 @@ class UpfcGraphicItem(LineGraphicTemplateItem):
|
|
90
91
|
|
91
92
|
menu.addSeparator()
|
92
93
|
|
94
|
+
add_menu_entry(menu=menu,
|
95
|
+
text="Control V from",
|
96
|
+
function_ptr=self.control_v_from,
|
97
|
+
icon_path=":/Icons/icons/edit.svg")
|
98
|
+
|
99
|
+
add_menu_entry(menu=menu,
|
100
|
+
text="Control V to",
|
101
|
+
function_ptr=self.control_v_to,
|
102
|
+
icon_path=":/Icons/icons/edit.svg")
|
103
|
+
|
104
|
+
menu.addSeparator()
|
105
|
+
|
93
106
|
ra6 = menu.addAction('Plot profiles')
|
94
107
|
plot_icon = QIcon()
|
95
108
|
plot_icon.addPixmap(QPixmap(":/Icons/icons/plot.svg"))
|
@@ -108,7 +121,22 @@ class UpfcGraphicItem(LineGraphicTemplateItem):
|
|
108
121
|
ra5.setIcon(ra5_icon)
|
109
122
|
ra5.triggered.connect(self.assign_status_to_profile)
|
110
123
|
|
111
|
-
|
112
124
|
menu.exec_(event.screenPos())
|
113
125
|
else:
|
114
126
|
pass
|
127
|
+
|
128
|
+
def control_v_from(self):
|
129
|
+
"""
|
130
|
+
|
131
|
+
:return:
|
132
|
+
"""
|
133
|
+
self.api_object.regulation_bus = self.api_object.bus_from
|
134
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
135
|
+
|
136
|
+
def control_v_to(self):
|
137
|
+
"""
|
138
|
+
|
139
|
+
:return:
|
140
|
+
"""
|
141
|
+
self.api_object.regulation_bus = self.api_object.bus_to
|
142
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
{GridCal-5.1.21 → GridCal-5.1.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py
RENAMED
@@ -21,6 +21,7 @@ from PySide6.QtWidgets import QMenu
|
|
21
21
|
from GridCal.Gui.GuiFunctions import add_menu_entry
|
22
22
|
from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
|
23
23
|
from GridCalEngine.Devices.Branches.vsc import VSC
|
24
|
+
from GridCalEngine.enumerations import TapModuleControl
|
24
25
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_graphics_template import LineGraphicTemplateItem
|
25
26
|
|
26
27
|
if TYPE_CHECKING: # Only imports the below statements during type checking
|
@@ -95,6 +96,18 @@ class VscGraphicItem(LineGraphicTemplateItem):
|
|
95
96
|
|
96
97
|
menu.addSeparator()
|
97
98
|
|
99
|
+
add_menu_entry(menu=menu,
|
100
|
+
text="Control V from",
|
101
|
+
function_ptr=self.control_v_from,
|
102
|
+
icon_path=":/Icons/icons/edit.svg")
|
103
|
+
|
104
|
+
add_menu_entry(menu=menu,
|
105
|
+
text="Control V to",
|
106
|
+
function_ptr=self.control_v_to,
|
107
|
+
icon_path=":/Icons/icons/edit.svg")
|
108
|
+
|
109
|
+
menu.addSeparator()
|
110
|
+
|
98
111
|
ra6 = menu.addAction('Plot profiles')
|
99
112
|
plot_icon = QIcon()
|
100
113
|
plot_icon.addPixmap(QPixmap(":/Icons/icons/plot.svg"))
|
@@ -125,3 +138,19 @@ class VscGraphicItem(LineGraphicTemplateItem):
|
|
125
138
|
"""
|
126
139
|
|
127
140
|
pass
|
141
|
+
|
142
|
+
def control_v_from(self):
|
143
|
+
"""
|
144
|
+
|
145
|
+
:return:
|
146
|
+
"""
|
147
|
+
self.api_object.regulation_bus = self.api_object.bus_from
|
148
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
149
|
+
|
150
|
+
def control_v_to(self):
|
151
|
+
"""
|
152
|
+
|
153
|
+
:return:
|
154
|
+
"""
|
155
|
+
self.api_object.regulation_bus = self.api_object.bus_to
|
156
|
+
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|