GridCal 5.1.18__tar.gz → 5.1.20__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.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +16 -57
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +11 -1
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +43 -19
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +16 -7
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +16 -15
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +5 -2
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +59 -32
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +38 -35
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +15 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +3 -5
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +9 -1
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +9 -1
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +10 -1
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +1 -13
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/base_diagram_widget.py +30 -5
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/MainWindow.py +903 -967
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +136 -22
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/objects.py +3 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +7 -11
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/io.py +2 -2
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/simulations.py +1 -2
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +2 -3
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/__version__.py +1 -1
- {GridCal-5.1.18 → GridCal-5.1.20}/PKG-INFO +1 -1
- GridCal-5.1.18/GridCal/Gui/Visualization/palettes.py +0 -464
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ConsoleWidget.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/logger.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GeneralDialogues.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/GuiFunctions.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/results_model.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/templates.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/GridCal/update.py +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/setup.cfg +0 -0
- {GridCal-5.1.18 → GridCal-5.1.20}/setup.py +0 -0
{GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py
RENAMED
@@ -78,7 +78,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
78
78
|
Remove all segments from the scene
|
79
79
|
"""
|
80
80
|
for segment in self.segments_list:
|
81
|
-
self.editor.
|
81
|
+
self.editor.remove_only_graphic_element(segment)
|
82
82
|
|
83
83
|
self.segments_list = list()
|
84
84
|
|
@@ -257,48 +257,16 @@ class MapLineContainer(GenericDiagramWidget):
|
|
257
257
|
# draw the segment in the scene
|
258
258
|
self.editor.add_to_scene(graphic_object=segment_graphic_object)
|
259
259
|
|
260
|
-
# diagram_locations: PointsGroup = self.editor.diagram.data.get(DeviceType.LineLocation.value, None)
|
261
|
-
#
|
262
|
-
# for idx, elm in enumerate(self.api_object.locations.data):
|
263
|
-
#
|
264
|
-
# if diagram_locations is None:
|
265
|
-
# # no locations found, use the data from the api object
|
266
|
-
# # lat = elm.lat
|
267
|
-
# # lon = elm.long
|
268
|
-
# pass
|
269
|
-
# else:
|
270
|
-
#
|
271
|
-
# # try to get location from the diagram
|
272
|
-
# diagram_location = diagram_locations.locations.get(elm.idtag, None)
|
273
|
-
#
|
274
|
-
# if diagram_location is None:
|
275
|
-
# # no particular location found, use the data from the api object
|
276
|
-
# # lat = elm.lat
|
277
|
-
# # lon = elm.long
|
278
|
-
# pass
|
279
|
-
# else:
|
280
|
-
# # Draw only what's on the diagram
|
281
|
-
# # diagram data found, use it
|
282
|
-
#
|
283
|
-
# if idx > 0:
|
284
|
-
# i1 = idx
|
285
|
-
# i2 = idx - 1
|
286
|
-
# # Assuming Connector takes (scene, node1, node2) as arguments
|
287
|
-
# segment_graphic_object = Segment(first=self.nodes_list[i1],
|
288
|
-
# second=self.nodes_list[i2])
|
289
|
-
#
|
290
|
-
# self.nodes_list[i1].needsUpdateFirst = True
|
291
|
-
# self.nodes_list[i2].needsUpdateSecond = True
|
292
|
-
# segment_graphic_object.needsUpdate = True
|
293
|
-
#
|
294
|
-
# # register the segment in the line
|
295
|
-
# self.add_segment(segment=segment_graphic_object)
|
296
|
-
#
|
297
|
-
# # draw the segment in the scene
|
298
|
-
# self.editor.add_to_scene(graphic_object=segment_graphic_object)
|
299
|
-
|
300
260
|
self.update_connectors()
|
301
261
|
|
262
|
+
self.editor.Update_widths()
|
263
|
+
|
264
|
+
def substation_to(self):
|
265
|
+
return self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
|
266
|
+
|
267
|
+
def substation_from(self):
|
268
|
+
return self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
269
|
+
|
302
270
|
def insert_new_node_at_position(self, index: int):
|
303
271
|
"""
|
304
272
|
Creates a new node in the list at the given position
|
@@ -307,7 +275,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
307
275
|
"""
|
308
276
|
|
309
277
|
# Check if the index is valid
|
310
|
-
if 1 <= index < len(self.api_object.locations.data):
|
278
|
+
if 1 <= index < len(self.api_object.locations.data) and len(self.api_object.locations.data) > 1:
|
311
279
|
|
312
280
|
nd1 = self.nodes_list[index]
|
313
281
|
nd2 = self.nodes_list[index - 1]
|
@@ -356,7 +324,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
356
324
|
# Return the newly created node
|
357
325
|
return graphic_obj
|
358
326
|
|
359
|
-
elif
|
327
|
+
elif len(self.api_object.locations.data) == 0:
|
360
328
|
|
361
329
|
substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
362
330
|
substation_to_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
|
@@ -375,7 +343,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
375
343
|
idtag="",
|
376
344
|
code="")
|
377
345
|
|
378
|
-
self.api_object.locations.data.insert(
|
346
|
+
self.api_object.locations.data.insert(0, new_api_object)
|
379
347
|
|
380
348
|
# Create a new graphical node item
|
381
349
|
|
@@ -383,19 +351,10 @@ class MapLineContainer(GenericDiagramWidget):
|
|
383
351
|
api_object=new_api_object,
|
384
352
|
lat=new_api_object.lat,
|
385
353
|
lon=new_api_object.long,
|
386
|
-
index=
|
387
|
-
|
388
|
-
idx = 0
|
389
|
-
|
390
|
-
for nod in self.nodes_list:
|
391
|
-
|
392
|
-
if idx >= index:
|
393
|
-
nod.index = nod.index + 1
|
394
|
-
|
395
|
-
idx = idx + 1
|
354
|
+
index=0)
|
396
355
|
|
397
356
|
# Add the node to the nodes list
|
398
|
-
self.nodes_list.insert(
|
357
|
+
self.nodes_list.insert(0, graphic_obj)
|
399
358
|
|
400
359
|
graphic_obj.updatePosition()
|
401
360
|
|
@@ -405,7 +364,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
405
364
|
# Return the newly created node
|
406
365
|
return graphic_obj
|
407
366
|
|
408
|
-
elif 0 == index or index
|
367
|
+
elif (0 == index or index >= len(self.api_object.locations.data) - 1):
|
409
368
|
|
410
369
|
substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
411
370
|
substation_to_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
|
@@ -417,7 +376,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
417
376
|
nd2 = self.nodes_list[0]
|
418
377
|
|
419
378
|
if index >= len(self.nodes_list):
|
420
|
-
|
379
|
+
nd1 = self.nodes_list[len(self.nodes_list) - 1]
|
421
380
|
|
422
381
|
new_lat = ((nd2.lat + nd1.lat) / 2)
|
423
382
|
new_long = ((nd2.lon + nd1.lon) / 2)
|
{GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py
RENAMED
@@ -324,8 +324,18 @@ class MapLineSegment(QGraphicsLineItem):
|
|
324
324
|
|
325
325
|
if len(self.container.nodes_list) == 0:
|
326
326
|
self.container.insert_new_node_at_position(0)
|
327
|
+
elif len(self.container.nodes_list) == 1:
|
328
|
+
if self.second == self.container.substation_to() or self.first == self.container.substation_to():
|
329
|
+
self.container.insert_new_node_at_position(1)
|
330
|
+
else:
|
331
|
+
self.container.insert_new_node_at_position(0)
|
327
332
|
else:
|
328
|
-
self.container.
|
333
|
+
if self.second == self.container.substation_to() or self.first == self.container.substation_to():
|
334
|
+
self.container.insert_new_node_at_position(len(self.container.nodes_list))
|
335
|
+
elif self.second == self.container.substation_from() or self.first == self.container.substation_from():
|
336
|
+
self.container.insert_new_node_at_position(0)
|
337
|
+
else:
|
338
|
+
self.container.insert_new_node_at_position(self.first.index)
|
329
339
|
|
330
340
|
# TODO implement
|
331
341
|
# self.editor.split_line(line_graphics=self)
|
@@ -50,7 +50,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
50
50
|
api_object: Substation,
|
51
51
|
lat: float,
|
52
52
|
lon: float,
|
53
|
-
r: float = 0.
|
53
|
+
r: float = 0.8,
|
54
54
|
draw_labels: bool = True):
|
55
55
|
"""
|
56
56
|
|
@@ -101,16 +101,21 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
101
101
|
# self.setZValue(1)
|
102
102
|
self.voltage_level_graphics: List[VoltageLevelGraphicItem] = list()
|
103
103
|
|
104
|
-
def move_to(self, lat: float, lon: float):
|
104
|
+
def move_to(self, lat: float, lon: float) -> Tuple[float, float]:
|
105
105
|
"""
|
106
106
|
|
107
107
|
:param lat:
|
108
108
|
:param lon:
|
109
|
-
:return:
|
109
|
+
:return: x, y
|
110
110
|
"""
|
111
111
|
x, y = self.editor.to_x_y(lat=lat, lon=lon)
|
112
112
|
self.setRect(x, y, self.rect().width(), self.rect().height())
|
113
113
|
|
114
|
+
for vl in self.voltage_level_graphics:
|
115
|
+
vl.center_on_substation()
|
116
|
+
|
117
|
+
return x, y
|
118
|
+
|
114
119
|
def register_voltage_level(self, vl: VoltageLevelGraphicItem):
|
115
120
|
"""
|
116
121
|
|
@@ -147,13 +152,22 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
147
152
|
"""
|
148
153
|
lat, long = self.editor.to_lat_lon(self.rect().x(), self.rect().y())
|
149
154
|
|
150
|
-
print(f'Updating SE position id:{self.api_object.idtag}, lat:{lat}, lon:{long}')
|
155
|
+
# print(f'Updating SE position id:{self.api_object.idtag}, lat:{lat}, lon:{long}')
|
151
156
|
|
152
157
|
self.editor.update_diagram_element(device=self.api_object,
|
153
158
|
latitude=lat,
|
154
159
|
longitude=long,
|
155
160
|
graphic_object=self)
|
156
161
|
|
162
|
+
def get_center_pos(self) -> QPointF:
|
163
|
+
"""
|
164
|
+
|
165
|
+
:return:
|
166
|
+
"""
|
167
|
+
x = self.rect().x() + self.rect().width() / 2
|
168
|
+
y = self.rect().y() + self.rect().height() / 2
|
169
|
+
return QPointF(x, y)
|
170
|
+
|
157
171
|
def mouseMoveEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
|
158
172
|
"""
|
159
173
|
Event handler for mouse move events.
|
@@ -170,23 +184,17 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
170
184
|
for vl_graphics in self.voltage_level_graphics:
|
171
185
|
vl_graphics.center_on_substation()
|
172
186
|
|
173
|
-
self.
|
174
|
-
|
175
|
-
def get_center_pos(self) -> QPointF:
|
176
|
-
"""
|
177
|
-
|
178
|
-
:return:
|
179
|
-
"""
|
180
|
-
x = self.rect().x() + self.rect().width() / 2
|
181
|
-
y = self.rect().y() + self.rect().height() / 2
|
182
|
-
return QPointF(x, y)
|
187
|
+
self.updateDiagram() # always update
|
183
188
|
|
184
189
|
def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
|
185
190
|
"""
|
186
191
|
Event handler for mouse press events.
|
187
192
|
"""
|
193
|
+
super().mousePressEvent(event)
|
194
|
+
event.setAccepted(True)
|
188
195
|
self.editor.map.view.disableMove = True
|
189
196
|
|
197
|
+
print("SE mouse press")
|
190
198
|
if self.api_object is not None:
|
191
199
|
self.editor.set_editor_model(api_object=self.api_object,
|
192
200
|
dictionary_of_lists={
|
@@ -202,8 +210,10 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
202
210
|
"""
|
203
211
|
Event handler for mouse release events.
|
204
212
|
"""
|
213
|
+
# super().mouseReleaseEvent(event)
|
205
214
|
self.editor.disableMove = True
|
206
215
|
self.updateDiagram() # always update
|
216
|
+
print("SE mouse release")
|
207
217
|
|
208
218
|
def hoverEnterEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
209
219
|
"""
|
@@ -245,9 +255,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
245
255
|
|
246
256
|
add_menu_entry(menu=menu,
|
247
257
|
text="ADD node",
|
248
|
-
icon_path="",
|
258
|
+
icon_path=":/Icons/icons/divide.svg",
|
249
259
|
function_ptr=self.add_function)
|
250
260
|
|
261
|
+
add_menu_entry(menu=menu,
|
262
|
+
text="Show diagram",
|
263
|
+
icon_path="",
|
264
|
+
function_ptr=self.new_substation_diagram)
|
265
|
+
|
251
266
|
menu.exec_(event.screenPos())
|
252
267
|
|
253
268
|
def add_function(self):
|
@@ -265,8 +280,10 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
265
280
|
lines_info = []
|
266
281
|
|
267
282
|
for idtag, graphic_object in dev_dict.items():
|
268
|
-
substation_from_graphics = self.editor.graphics_manager.query(
|
269
|
-
|
283
|
+
substation_from_graphics = self.editor.graphics_manager.query(
|
284
|
+
elm=graphic_object.api_object.get_substation_from())
|
285
|
+
substation_to_graphics = self.editor.graphics_manager.query(
|
286
|
+
elm=graphic_object.api_object.get_substation_to())
|
270
287
|
lines_info.append((idtag, graphic_object, substation_from_graphics, substation_to_graphics))
|
271
288
|
|
272
289
|
# Now, iterate over the collected information
|
@@ -298,8 +315,15 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
298
315
|
"Move substation graphics")
|
299
316
|
|
300
317
|
if ok:
|
301
|
-
self.move_to(lat=self.api_object.latitude, lon=self.api_object.longitude)
|
302
|
-
self.
|
318
|
+
x, y = self.move_to(lat=self.api_object.latitude, lon=self.api_object.longitude) # this moves the vl too
|
319
|
+
self.set_callabacks(x, y)
|
320
|
+
|
321
|
+
def new_substation_diagram(self):
|
322
|
+
"""
|
323
|
+
Function to create a new substation
|
324
|
+
:return:
|
325
|
+
"""
|
326
|
+
self.editor.new_substation_diagram(substation=self.api_object)
|
303
327
|
|
304
328
|
def add_voltage_level(self) -> None:
|
305
329
|
"""
|
@@ -61,19 +61,19 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
61
61
|
api_object=api_object,
|
62
62
|
editor=editor,
|
63
63
|
draw_labels=draw_labels)
|
64
|
-
QGraphicsEllipseItem.__init__(self, parent_center.x(), parent_center.y(), r, r, parent)
|
64
|
+
QGraphicsEllipseItem.__init__(self, parent_center.x(), parent_center.y(), r * api_object.Vnom, r * api_object.Vnom, parent)
|
65
65
|
|
66
66
|
parent.register_voltage_level(vl=self)
|
67
67
|
|
68
68
|
self.editor: GridMapWidget = editor # to reinforce the type
|
69
69
|
self.api_object: VoltageLevel = api_object # to reinforce the type
|
70
70
|
|
71
|
-
self.radius = r
|
71
|
+
self.radius = r * api_object.Vnom
|
72
72
|
print(f"VL created at x:{parent_center.x()}, y:{parent_center.y()}")
|
73
73
|
|
74
74
|
self.setAcceptHoverEvents(True) # Enable hover events for the item
|
75
75
|
# self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsMovable) # Allow moving the node
|
76
|
-
self.setFlag(
|
76
|
+
self.setFlag(self.GraphicsItemFlag.ItemIsSelectable | self.GraphicsItemFlag.ItemIsMovable) # Allow selecting the node
|
77
77
|
|
78
78
|
# Create a pen with reduced line width
|
79
79
|
self.change_pen_width(0.5)
|
@@ -90,7 +90,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
90
90
|
self.needsUpdate = False
|
91
91
|
self.setZValue(0)
|
92
92
|
|
93
|
-
def center_on_substation(self):
|
93
|
+
def center_on_substation(self) -> None:
|
94
94
|
"""
|
95
95
|
Centers the graphic item on the substation
|
96
96
|
"""
|
@@ -99,6 +99,16 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
99
99
|
yc = parent_center.y() - self.rect().height() / 2
|
100
100
|
self.setRect(xc, yc, self.rect().width(), self.rect().height())
|
101
101
|
|
102
|
+
def move_to_xy(self, x: float, y: float):
|
103
|
+
"""
|
104
|
+
|
105
|
+
:param x:
|
106
|
+
:param y:
|
107
|
+
:return:
|
108
|
+
"""
|
109
|
+
self.setRect(x, y, self.rect().width(), self.rect().height())
|
110
|
+
return x, y
|
111
|
+
|
102
112
|
def updateDiagram(self) -> None:
|
103
113
|
"""
|
104
114
|
|
@@ -120,10 +130,9 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
120
130
|
"""
|
121
131
|
Event handler for mouse move events.
|
122
132
|
"""
|
123
|
-
super().mouseMoveEvent(event)
|
133
|
+
# super().mouseMoveEvent(event)
|
124
134
|
if self.hovered:
|
125
|
-
|
126
|
-
self.editor.update_connectors()
|
135
|
+
self.parent.mouseMoveEvent(event)
|
127
136
|
|
128
137
|
def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
|
129
138
|
"""
|
{GridCal-5.1.18 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py
RENAMED
@@ -4,15 +4,15 @@ A tile source that serves BlueMarble tiles from the internet.
|
|
4
4
|
|
5
5
|
import math
|
6
6
|
from typing import Tuple
|
7
|
-
|
7
|
+
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
8
8
|
|
9
9
|
|
10
|
-
class BlueMarbleTiles(
|
10
|
+
class BlueMarbleTiles(Tiles):
|
11
11
|
"""
|
12
12
|
An object to source internet tiles for pySlip.
|
13
13
|
"""
|
14
14
|
|
15
|
-
def __init__(self, tiles_dir='blue_marble_tiles', http_proxy=None):
|
15
|
+
def __init__(self, tiles_dir='blue_marble_tiles', http_proxy=None, name: str = 'Blue Marble'):
|
16
16
|
"""
|
17
17
|
Override the base class for these tiles.
|
18
18
|
|
@@ -22,18 +22,19 @@ class BlueMarbleTiles(tiles_net.Tiles):
|
|
22
22
|
:param http_proxy:
|
23
23
|
"""
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
Tiles.__init__(self,
|
26
|
+
TilesetName=name,
|
27
|
+
TilesetShortName='BM Tiles',
|
28
|
+
TilesetVersion='1.0',
|
29
|
+
levels=list(range(10)),
|
30
|
+
tile_width=256,
|
31
|
+
tile_height=256,
|
32
|
+
tiles_dir=tiles_dir,
|
33
|
+
max_lru=10000,
|
34
|
+
servers=['https://s3.amazonaws.com', ],
|
35
|
+
url_path='/com.modestmaps.bluemarble/{Z}-r{Y}-c{X}.jpg',
|
36
|
+
max_server_requests=2,
|
37
|
+
http_proxy=http_proxy)
|
37
38
|
|
38
39
|
def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
|
39
40
|
"""Convert geo to tile fractional coordinates for level in use.
|
@@ -10,7 +10,10 @@ from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
|
10
10
|
class CartoDbTiles(Tiles):
|
11
11
|
"""An object to source server tiles for pySlipQt."""
|
12
12
|
|
13
|
-
def __init__(self, tiles_dir='open_street_map_tiles',
|
13
|
+
def __init__(self, tiles_dir='open_street_map_tiles',
|
14
|
+
http_proxy=None,
|
15
|
+
tile_servers=None,
|
16
|
+
name: str = 'Carto positron'):
|
14
17
|
"""
|
15
18
|
Override the base class for these tiles.
|
16
19
|
|
@@ -21,7 +24,7 @@ class CartoDbTiles(Tiles):
|
|
21
24
|
:param tile_servers:
|
22
25
|
"""
|
23
26
|
|
24
|
-
super().__init__(TilesetName=
|
27
|
+
super().__init__(TilesetName=name,
|
25
28
|
TilesetShortName='CartoDb Dark Matter',
|
26
29
|
TilesetVersion='1.0',
|
27
30
|
levels=list(range(17)),
|
@@ -51,7 +51,7 @@ from GridCal.Gui.Diagrams.MapWidget.Substation.substation_graphic_item import Su
|
|
51
51
|
from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
|
52
52
|
from GridCal.Gui.Diagrams.MapWidget.map_widget import MapWidget
|
53
53
|
import GridCal.Gui.Visualization.visualization as viz
|
54
|
-
import
|
54
|
+
import GridCalEngine.Devices.Diagrams.palettes as palettes
|
55
55
|
from GridCal.Gui.Diagrams.graphics_manager import ALL_MAP_GRAPHICS
|
56
56
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
57
57
|
from GridCal.Gui.Diagrams.base_diagram_widget import BaseDiagramWidget
|
@@ -207,7 +207,8 @@ class GridMapWidget(BaseDiagramWidget):
|
|
207
207
|
name: str,
|
208
208
|
circuit: MultiCircuit,
|
209
209
|
diagram: Union[None, MapDiagram] = None,
|
210
|
-
call_delete_db_element_func: Callable[["GridMapWidget", ALL_DEV_TYPES], None] = None
|
210
|
+
call_delete_db_element_func: Callable[["GridMapWidget", ALL_DEV_TYPES], None] = None,
|
211
|
+
call_new_substation_diagram_func: Callable[[Substation], None] = None, ):
|
211
212
|
"""
|
212
213
|
|
213
214
|
:param tile_src:
|
@@ -241,11 +242,14 @@ class GridMapWidget(BaseDiagramWidget):
|
|
241
242
|
position_callback=self.position_callback)
|
242
243
|
|
243
244
|
# Any representation on the map must be done after this Goto Function
|
244
|
-
self.map.GotoLevelAndPosition(level=
|
245
|
+
self.map.GotoLevelAndPosition(level=6, longitude=0, latitude=40)
|
245
246
|
|
246
|
-
self.map.startLev =
|
247
|
-
self.map.startLat =
|
248
|
-
self.map.startLon =
|
247
|
+
self.map.startLev = 6
|
248
|
+
self.map.startLat = 0
|
249
|
+
self.map.startLon = 40
|
250
|
+
|
251
|
+
# function pointer to call for a new substation diagram
|
252
|
+
self.call_new_substation_diagram_func = call_new_substation_diagram_func
|
249
253
|
|
250
254
|
self.startHe = self.map.view.height()
|
251
255
|
self.startWi = self.map.view.width()
|
@@ -301,6 +305,13 @@ class GridMapWidget(BaseDiagramWidget):
|
|
301
305
|
|
302
306
|
self.map.diagram_scene.addItem(graphic_object)
|
303
307
|
|
308
|
+
def remove_only_graphic_element(self, graphic_object: ALL_MAP_GRAPHICS = None) -> None:
|
309
|
+
"""
|
310
|
+
Removes only the graphic elements, not the api_object
|
311
|
+
:param graphic_object: Graphic object associated
|
312
|
+
"""
|
313
|
+
self.map.diagram_scene.removeItem(graphic_object)
|
314
|
+
|
304
315
|
def remove_from_scene(self, graphic_object: ALL_MAP_GRAPHICS = None) -> None:
|
305
316
|
"""
|
306
317
|
Add item to the diagram and the diagram scene
|
@@ -590,18 +601,19 @@ class GridMapWidget(BaseDiagramWidget):
|
|
590
601
|
|
591
602
|
:return:
|
592
603
|
"""
|
593
|
-
for dev_tpe in [DeviceType.LineDevice,
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
604
|
+
# for dev_tpe in [DeviceType.LineDevice,
|
605
|
+
# DeviceType.DCLineDevice,
|
606
|
+
# DeviceType.HVDCLineDevice,
|
607
|
+
# DeviceType.FluidPathDevice]:
|
608
|
+
#
|
609
|
+
# dev_dict = self.graphics_manager.get_device_type_dict(device_type=dev_tpe)
|
610
|
+
#
|
611
|
+
# for idtag, graphic_object in dev_dict.items():
|
612
|
+
# graphic_object.update_connectors()
|
613
|
+
#
|
614
|
+
# for idtag, graphic_object in dev_dict.items():
|
615
|
+
# graphic_object.end_update()
|
616
|
+
pass
|
605
617
|
|
606
618
|
def add_api_substation(self,
|
607
619
|
api_object: Substation,
|
@@ -806,21 +818,25 @@ class GridMapWidget(BaseDiagramWidget):
|
|
806
818
|
:return:
|
807
819
|
"""
|
808
820
|
|
809
|
-
|
821
|
+
# SANTIAGO: NO TOCAR ESTO ES EL COMPORTAMIENTO DESEADO
|
810
822
|
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
#
|
821
|
-
|
822
|
-
|
823
|
-
|
823
|
+
self.Update_widths()
|
824
|
+
|
825
|
+
def Update_widths(self):
|
826
|
+
|
827
|
+
max_zoom = self.map.max_level
|
828
|
+
min_zoom = self.map.min_level
|
829
|
+
zoom = self.map.zoom_factor
|
830
|
+
scale = self.diagram.min_branch_width + (zoom - min_zoom) / (max_zoom - min_zoom)
|
831
|
+
|
832
|
+
# rescale lines
|
833
|
+
for dev_tpe in [DeviceType.LineDevice,
|
834
|
+
DeviceType.DCLineDevice,
|
835
|
+
DeviceType.HVDCLineDevice,
|
836
|
+
DeviceType.FluidPathDevice]:
|
837
|
+
graphics_dict = self.graphics_manager.get_device_type_dict(device_type=dev_tpe)
|
838
|
+
for key, lne in graphics_dict.items():
|
839
|
+
lne.setWidthScale(scale)
|
824
840
|
|
825
841
|
def change_size_and_pen_width_all(self, new_radius, pen_width):
|
826
842
|
"""
|
@@ -1096,6 +1112,17 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1096
1112
|
else:
|
1097
1113
|
raise Exception('Extension ' + str(extension) + ' not supported :(')
|
1098
1114
|
|
1115
|
+
def new_substation_diagram(self, substation: Substation):
|
1116
|
+
"""
|
1117
|
+
|
1118
|
+
:param substation:
|
1119
|
+
:return:
|
1120
|
+
"""
|
1121
|
+
if self.call_new_substation_diagram_func is not None:
|
1122
|
+
self.call_new_substation_diagram_func(substation)
|
1123
|
+
else:
|
1124
|
+
print("call_new_substation_diagram_func is None :( ")
|
1125
|
+
|
1099
1126
|
|
1100
1127
|
def generate_map_diagram(substations: List[Substation],
|
1101
1128
|
voltage_levels: List[VoltageLevel],
|