GridCal 5.1.19__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.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +16 -57
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +11 -1
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +10 -6
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +16 -7
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +16 -15
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +5 -2
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +30 -28
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +36 -33
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +15 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +3 -5
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +9 -1
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +9 -1
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +10 -1
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +1 -23
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/base_diagram_widget.py +13 -27
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/MainWindow.py +885 -959
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +84 -57
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +7 -11
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/io.py +2 -2
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/simulations.py +1 -2
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +2 -3
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/__version__.py +1 -1
- {GridCal-5.1.19 → GridCal-5.1.20}/PKG-INFO +1 -1
- GridCal-5.1.19/GridCal/Gui/Visualization/palettes.py +0 -464
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ConsoleWidget.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/logger.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GeneralDialogues.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/GuiFunctions.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/results_model.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/templates.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/GridCal/update.py +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/setup.cfg +0 -0
- {GridCal-5.1.19 → GridCal-5.1.20}/setup.py +0 -0
{GridCal-5.1.19 → 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.19 → 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)
|
@@ -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
|
|
@@ -179,7 +184,6 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
179
184
|
for vl_graphics in self.voltage_level_graphics:
|
180
185
|
vl_graphics.center_on_substation()
|
181
186
|
|
182
|
-
self.editor.update_connectors()
|
183
187
|
self.updateDiagram() # always update
|
184
188
|
|
185
189
|
def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
|
@@ -251,7 +255,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
251
255
|
|
252
256
|
add_menu_entry(menu=menu,
|
253
257
|
text="ADD node",
|
254
|
-
icon_path="",
|
258
|
+
icon_path=":/Icons/icons/divide.svg",
|
255
259
|
function_ptr=self.add_function)
|
256
260
|
|
257
261
|
add_menu_entry(menu=menu,
|
@@ -311,8 +315,8 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
311
315
|
"Move substation graphics")
|
312
316
|
|
313
317
|
if ok:
|
314
|
-
self.move_to(lat=self.api_object.latitude, lon=self.api_object.longitude)
|
315
|
-
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)
|
316
320
|
|
317
321
|
def new_substation_diagram(self):
|
318
322
|
"""
|
@@ -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.19 → 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,11 +207,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
207
207
|
name: str,
|
208
208
|
circuit: MultiCircuit,
|
209
209
|
diagram: Union[None, MapDiagram] = None,
|
210
|
-
use_flow_based_width: bool = False,
|
211
|
-
min_branch_width: int = 5,
|
212
|
-
max_branch_width=5,
|
213
|
-
min_bus_width=20,
|
214
|
-
max_bus_width=20,
|
215
210
|
call_delete_db_element_func: Callable[["GridMapWidget", ALL_DEV_TYPES], None] = None,
|
216
211
|
call_new_substation_diagram_func: Callable[[Substation], None] = None, ):
|
217
212
|
"""
|
@@ -234,11 +229,6 @@ class GridMapWidget(BaseDiagramWidget):
|
|
234
229
|
latitude=latitude) if diagram is None else diagram,
|
235
230
|
library_model=MapLibraryModel(),
|
236
231
|
time_index=None,
|
237
|
-
use_flow_based_width=use_flow_based_width,
|
238
|
-
min_branch_width=min_branch_width,
|
239
|
-
max_branch_width=max_branch_width,
|
240
|
-
min_bus_width=min_bus_width,
|
241
|
-
max_bus_width=max_bus_width,
|
242
232
|
call_delete_db_element_func=call_delete_db_element_func)
|
243
233
|
|
244
234
|
# declare the map
|
@@ -252,11 +242,11 @@ class GridMapWidget(BaseDiagramWidget):
|
|
252
242
|
position_callback=self.position_callback)
|
253
243
|
|
254
244
|
# Any representation on the map must be done after this Goto Function
|
255
|
-
self.map.GotoLevelAndPosition(level=
|
245
|
+
self.map.GotoLevelAndPosition(level=6, longitude=0, latitude=40)
|
256
246
|
|
257
|
-
self.map.startLev =
|
258
|
-
self.map.startLat =
|
259
|
-
self.map.startLon =
|
247
|
+
self.map.startLev = 6
|
248
|
+
self.map.startLat = 0
|
249
|
+
self.map.startLon = 40
|
260
250
|
|
261
251
|
# function pointer to call for a new substation diagram
|
262
252
|
self.call_new_substation_diagram_func = call_new_substation_diagram_func
|
@@ -315,6 +305,13 @@ class GridMapWidget(BaseDiagramWidget):
|
|
315
305
|
|
316
306
|
self.map.diagram_scene.addItem(graphic_object)
|
317
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
|
+
|
318
315
|
def remove_from_scene(self, graphic_object: ALL_MAP_GRAPHICS = None) -> None:
|
319
316
|
"""
|
320
317
|
Add item to the diagram and the diagram scene
|
@@ -604,18 +601,19 @@ class GridMapWidget(BaseDiagramWidget):
|
|
604
601
|
|
605
602
|
:return:
|
606
603
|
"""
|
607
|
-
for dev_tpe in [DeviceType.LineDevice,
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
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
|
619
617
|
|
620
618
|
def add_api_substation(self,
|
621
619
|
api_object: Substation,
|
@@ -822,10 +820,14 @@ class GridMapWidget(BaseDiagramWidget):
|
|
822
820
|
|
823
821
|
# SANTIAGO: NO TOCAR ESTO ES EL COMPORTAMIENTO DESEADO
|
824
822
|
|
823
|
+
self.Update_widths()
|
824
|
+
|
825
|
+
def Update_widths(self):
|
826
|
+
|
825
827
|
max_zoom = self.map.max_level
|
826
828
|
min_zoom = self.map.min_level
|
827
829
|
zoom = self.map.zoom_factor
|
828
|
-
scale = self.min_branch_width + (zoom - min_zoom) / (max_zoom - min_zoom)
|
830
|
+
scale = self.diagram.min_branch_width + (zoom - min_zoom) / (max_zoom - min_zoom)
|
829
831
|
|
830
832
|
# rescale lines
|
831
833
|
for dev_tpe in [DeviceType.LineDevice,
|
@@ -100,30 +100,20 @@ class MapView(QGraphicsView):
|
|
100
100
|
MapView
|
101
101
|
"""
|
102
102
|
|
103
|
-
def __init__(self,
|
104
|
-
|
105
|
-
|
106
|
-
startLat: float,
|
107
|
-
startLon: float):
|
103
|
+
def __init__(self,
|
104
|
+
scene: QGraphicsScene,
|
105
|
+
map_widget: "MapWidget"):
|
108
106
|
"""
|
109
107
|
|
110
|
-
:param
|
108
|
+
:param scene:
|
111
109
|
:param map_widget:
|
112
|
-
:param start_level:
|
113
|
-
:param startLat:
|
114
|
-
:param startLon:
|
115
110
|
"""
|
116
|
-
QGraphicsView.__init__(self,
|
111
|
+
QGraphicsView.__init__(self, scene)
|
117
112
|
|
118
|
-
self._scene =
|
113
|
+
self._scene = scene
|
119
114
|
|
120
115
|
self.map_widget = map_widget
|
121
116
|
|
122
|
-
self.startLat = startLat
|
123
|
-
self.startLon = startLon
|
124
|
-
self.startLev = start_level
|
125
|
-
self.map_widget.level = start_level
|
126
|
-
|
127
117
|
self.mouse_x = None
|
128
118
|
self.mouse_y = None
|
129
119
|
|
@@ -134,21 +124,16 @@ class MapView(QGraphicsView):
|
|
134
124
|
self.pressed = False
|
135
125
|
self.disableMove = False
|
136
126
|
|
137
|
-
self.startHe = None
|
138
|
-
self.startWi = None
|
139
|
-
|
140
127
|
# updated later
|
141
128
|
self.view_width = self.width()
|
142
129
|
self.view_height = self.height()
|
143
130
|
|
144
131
|
# Set initial zoom level (change the values as needed)
|
145
|
-
initial_zoom_factor = 1
|
146
|
-
self.schema_zoom = 1
|
132
|
+
initial_zoom_factor = 1.0
|
133
|
+
self.schema_zoom = 1.0
|
147
134
|
|
148
135
|
self.scale(initial_zoom_factor, initial_zoom_factor)
|
149
136
|
|
150
|
-
self.selTempDistance = 20
|
151
|
-
|
152
137
|
self.selectedItems = list()
|
153
138
|
|
154
139
|
def mousePressEvent(self, event: QMouseEvent):
|
@@ -396,11 +381,7 @@ class MapWidget(QWidget):
|
|
396
381
|
|
397
382
|
self.editor: GridMapWidget = editor
|
398
383
|
|
399
|
-
self.view = MapView(self.diagram_scene,
|
400
|
-
map_widget=self,
|
401
|
-
start_level=start_level,
|
402
|
-
startLat=startLat,
|
403
|
-
startLon=startLon)
|
384
|
+
self.view = MapView(scene=self.diagram_scene, map_widget=self)
|
404
385
|
|
405
386
|
self.view.setBackgroundBrush(Qt.transparent)
|
406
387
|
|
@@ -425,8 +406,8 @@ class MapWidget(QWidget):
|
|
425
406
|
# Internal vars
|
426
407
|
# -------------------------------------------------------------------------
|
427
408
|
# remember the tile source object
|
428
|
-
self.
|
429
|
-
self.
|
409
|
+
self._tile_src: Tiles = tile_src
|
410
|
+
self._tile_src.setCallback(self.on_tile_available)
|
430
411
|
|
431
412
|
# the tile coordinates
|
432
413
|
self.level: int = start_level
|
@@ -481,9 +462,31 @@ class MapWidget(QWidget):
|
|
481
462
|
# do a "resize" after this function
|
482
463
|
QTimer.singleShot(10, self.resizeEvent)
|
483
464
|
|
484
|
-
self.GotoLevelAndPosition(level=
|
485
|
-
longitude=
|
486
|
-
latitude=
|
465
|
+
self.GotoLevelAndPosition(level=6,
|
466
|
+
longitude=0,
|
467
|
+
latitude=40)
|
468
|
+
|
469
|
+
@property
|
470
|
+
def tile_src(self) -> Tiles:
|
471
|
+
"""
|
472
|
+
Get the current tile source
|
473
|
+
:return: Tiles
|
474
|
+
"""
|
475
|
+
return self._tile_src
|
476
|
+
|
477
|
+
@tile_src.setter
|
478
|
+
def tile_src(self, tile_src: Tiles):
|
479
|
+
"""
|
480
|
+
Set the current tile source
|
481
|
+
:param tile_src: Tiles
|
482
|
+
"""
|
483
|
+
if tile_src.TilesetName != self._tile_src.TilesetName: # avoid changing tilesets to themselves
|
484
|
+
self._tile_src: Tiles = tile_src
|
485
|
+
self._tile_src.setCallback(self.on_tile_available)
|
486
|
+
|
487
|
+
self.GotoLevelAndPosition(level=tile_src.min_level,
|
488
|
+
longitude=0.0,
|
489
|
+
latitude=0.0)
|
487
490
|
|
488
491
|
@property
|
489
492
|
def max_level(self):
|
{GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py
RENAMED
@@ -210,6 +210,11 @@ class LineGraphicItem(LineGraphicTemplateItem):
|
|
210
210
|
function_ptr=self.to_series_reactance,
|
211
211
|
icon_path=":/Icons/icons/to_series_reactance.svg")
|
212
212
|
|
213
|
+
add_menu_entry(menu=menu,
|
214
|
+
text="Switch",
|
215
|
+
function_ptr=self.to_switch,
|
216
|
+
icon_path=":/Icons/icons/switch.svg")
|
217
|
+
|
213
218
|
menu.exec(event.screenPos())
|
214
219
|
else:
|
215
220
|
pass
|
@@ -344,6 +349,16 @@ class LineGraphicItem(LineGraphicTemplateItem):
|
|
344
349
|
if ok:
|
345
350
|
self.editor.convert_line_to_series_reactance(line=self.api_object, line_graphic=self)
|
346
351
|
|
352
|
+
def to_switch(self):
|
353
|
+
"""
|
354
|
+
Convert this object to switch
|
355
|
+
:return:
|
356
|
+
"""
|
357
|
+
ok = yes_no_question('Are you sure that you want to convert this line into a switch device?',
|
358
|
+
'Convert line')
|
359
|
+
if ok:
|
360
|
+
self.editor.convert_line_to_switch(line=self.api_object, line_graphic=self)
|
361
|
+
|
347
362
|
def __str__(self):
|
348
363
|
|
349
364
|
if self.api_object is None:
|
@@ -87,14 +87,12 @@ class InjectionTemplateGraphicItem(GenericDiagramWidget, QGraphicsItemGroup):
|
|
87
87
|
Update the nexus line that joins the parent and this object
|
88
88
|
:param pos: position of this object
|
89
89
|
"""
|
90
|
-
|
91
|
-
rect = parent.rect()
|
92
|
-
term = parent.get_terminal()
|
90
|
+
parent_pt = self.parentItem().get_nexus_point()
|
93
91
|
self.nexus.setLine(
|
94
92
|
pos.x() + self.w / 2,
|
95
93
|
pos.y(),
|
96
|
-
|
97
|
-
|
94
|
+
parent_pt.x(),
|
95
|
+
parent_pt.y(),
|
98
96
|
)
|
99
97
|
self.setZValue(-1)
|
100
98
|
self.nexus.setZValue(-1)
|
{GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py
RENAMED
@@ -18,7 +18,7 @@ from __future__ import annotations
|
|
18
18
|
import numpy as np
|
19
19
|
from typing import Union, TYPE_CHECKING, List, Dict
|
20
20
|
from PySide6 import QtWidgets
|
21
|
-
from PySide6.QtCore import Qt, QPoint, QRectF, QRect
|
21
|
+
from PySide6.QtCore import Qt, QPoint, QRectF, QRect, QPointF
|
22
22
|
from PySide6.QtGui import QPen, QCursor, QIcon, QPixmap, QBrush, QColor
|
23
23
|
from PySide6.QtWidgets import QMenu, QGraphicsSceneMouseEvent
|
24
24
|
|
@@ -145,6 +145,14 @@ class BusGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
145
145
|
|
146
146
|
self.set_position(x, y)
|
147
147
|
|
148
|
+
def get_nexus_point(self) -> QPointF:
|
149
|
+
"""
|
150
|
+
Get the connection point for the chldren nexus line
|
151
|
+
:return: QPointF
|
152
|
+
"""
|
153
|
+
return QPointF(self.x() + self.rect().width() / 2.0,
|
154
|
+
self.y() + self.rect().height() + self._terminal.h / 2.0)
|
155
|
+
|
148
156
|
def recolour_mode(self) -> None:
|
149
157
|
"""
|
150
158
|
Change the colour according to the system theme
|
{GridCal-5.1.19 → GridCal-5.1.20}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py
RENAMED
@@ -18,7 +18,7 @@ from __future__ import annotations
|
|
18
18
|
import numpy as np
|
19
19
|
from typing import Union, TYPE_CHECKING, List, Dict
|
20
20
|
from PySide6 import QtWidgets
|
21
|
-
from PySide6.QtCore import Qt, QPoint, QRectF, QRect
|
21
|
+
from PySide6.QtCore import Qt, QPoint, QRectF, QRect, QPointF
|
22
22
|
from PySide6.QtGui import QPen, QCursor, QIcon, QPixmap, QBrush, QColor
|
23
23
|
from PySide6.QtWidgets import QMenu, QGraphicsSceneMouseEvent
|
24
24
|
|
@@ -133,6 +133,14 @@ class BusBarGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
|
|
133
133
|
|
134
134
|
self.set_position(x, y)
|
135
135
|
|
136
|
+
def get_nexus_point(self) -> QPointF:
|
137
|
+
"""
|
138
|
+
Get the connection point for the chldren nexus line
|
139
|
+
:return: QPointF
|
140
|
+
"""
|
141
|
+
return QPointF(self.x() + self.rect().width() / 2.0,
|
142
|
+
self.y() + self.rect().height() + self._terminal.h / 2.0)
|
143
|
+
|
136
144
|
def recolour_mode(self) -> None:
|
137
145
|
"""
|
138
146
|
Change the colour according to the system theme
|