GridCal 5.1.51__tar.gz → 5.1.53__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.51/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py → GridCal-5.1.53/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +47 -65
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +59 -47
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +33 -28
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +13 -1
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +50 -54
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +25 -8
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +73 -49
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +17 -3
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +9 -1
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +1 -1
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/base_diagram_widget.py +5 -2
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/graphics_manager.py +2 -2
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/MainWindow.py +538 -496
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +11 -4
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/objects.py +35 -6
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/time_events.py +11 -14
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/io.py +3 -1
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/icons_rc.py +337 -301
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/icons_rc.py +13 -13
- GridCal-5.1.53/GridCal/Gui/ProfilesInput/models_dialogue.py +472 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +2 -2
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/__version__.py +1 -1
- {GridCal-5.1.51 → GridCal-5.1.53}/PKG-INFO +1 -1
- GridCal-5.1.51/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -363
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/console_widget.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/general_dialogues.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/gui_functions.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/results_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/wrappable_table_model.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/plugins.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/templates.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/GridCal/update.py +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/setup.cfg +0 -0
- {GridCal-5.1.51 → GridCal-5.1.53}/setup.py +0 -0
@@ -16,11 +16,11 @@
|
|
16
16
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
17
|
from __future__ import annotations
|
18
18
|
from typing import Tuple, TYPE_CHECKING
|
19
|
-
from PySide6.QtWidgets import
|
19
|
+
from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent
|
20
20
|
from GridCal.Gui.gui_functions import add_menu_entry
|
21
21
|
from PySide6 import QtWidgets
|
22
22
|
from PySide6.QtCore import Qt, QPointF
|
23
|
-
from PySide6.QtGui import QBrush, QColor
|
23
|
+
from PySide6.QtGui import QBrush, QColor
|
24
24
|
|
25
25
|
from GridCalEngine.Devices.Branches.line_locations import LineLocation
|
26
26
|
from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_container import MapLineContainer
|
@@ -30,7 +30,7 @@ if TYPE_CHECKING: # Only imports the below statements during type checking
|
|
30
30
|
from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
|
31
31
|
|
32
32
|
|
33
|
-
class
|
33
|
+
class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
34
34
|
"""
|
35
35
|
Represents a block in the diagram
|
36
36
|
Has an x and y and width and height
|
@@ -60,7 +60,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
60
60
|
:param r:
|
61
61
|
:param draw_labels:
|
62
62
|
"""
|
63
|
-
QtWidgets.
|
63
|
+
QtWidgets.QGraphicsEllipseItem.__init__(self)
|
64
64
|
NodeTemplate.__init__(self,
|
65
65
|
api_object=api_object,
|
66
66
|
editor=editor,
|
@@ -74,9 +74,8 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
74
74
|
self.radius = r
|
75
75
|
self.draw_labels = True
|
76
76
|
|
77
|
-
# self.editor: GridMapWidget = editor
|
78
77
|
self.line_container: MapLineContainer = line_container
|
79
|
-
|
78
|
+
|
80
79
|
self.index = index
|
81
80
|
|
82
81
|
self.resize(r * 10)
|
@@ -84,23 +83,20 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
84
83
|
self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsMovable) # Allow moving the node
|
85
84
|
self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsSelectable) # Allow selecting the node
|
86
85
|
|
87
|
-
self.setCursor(QCursor(Qt.PointingHandCursor))
|
86
|
+
# self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
87
|
+
self.setCursor(Qt.CursorShape.PointingHandCursor)
|
88
88
|
|
89
89
|
self.hovered = False
|
90
90
|
self.enabled = True
|
91
91
|
|
92
92
|
# Create a pen with reduced line width
|
93
|
-
self.change_pen_width(0
|
94
|
-
|
95
|
-
|
96
|
-
# self.colorBorder = QColor(100, random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
|
97
|
-
|
98
|
-
self.colorInner = QColor(255, 100, 100, 100)
|
99
|
-
self.colorBorder = QColor(255, 100, 100, 100)
|
93
|
+
self.change_pen_width(0)
|
94
|
+
self.colorInner = QColor(100, 100, 100, 100)
|
95
|
+
self.colorBorder = QColor(100, 100, 100, 100)
|
100
96
|
self.setZValue(1)
|
101
97
|
|
102
98
|
# Assign color to the node
|
103
|
-
self.
|
99
|
+
self.set_default_color()
|
104
100
|
|
105
101
|
def get_center_pos(self) -> QPointF:
|
106
102
|
"""
|
@@ -111,49 +107,47 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
111
107
|
y = self.rect().y() + self.rect().height() / 2
|
112
108
|
return QPointF(x, y)
|
113
109
|
|
114
|
-
def
|
110
|
+
def update_real_pos(self) -> None:
|
115
111
|
"""
|
116
112
|
|
117
113
|
:return:
|
118
114
|
"""
|
119
115
|
real_position = self.pos()
|
120
|
-
center_point = self.
|
116
|
+
center_point = self.get_pos()
|
121
117
|
self.x = center_point.x() + real_position.x()
|
122
118
|
self.y = center_point.y() + real_position.y()
|
123
119
|
|
124
|
-
def
|
120
|
+
def update_position(self) -> None:
|
125
121
|
"""
|
126
122
|
|
127
123
|
:return:
|
128
124
|
"""
|
129
125
|
|
130
126
|
if self.enabled:
|
131
|
-
self.
|
132
|
-
self.
|
127
|
+
self.update_real_pos()
|
128
|
+
self.needs_update = True
|
133
129
|
self.line_container.update_connectors()
|
134
130
|
|
135
|
-
def
|
131
|
+
def update_position_at_the_diagram(self) -> None:
|
136
132
|
"""
|
137
|
-
|
138
|
-
:return:
|
133
|
+
This function updates the position of this graphical element in the diagram
|
139
134
|
"""
|
140
135
|
real_position = self.pos()
|
141
|
-
center_point = self.
|
136
|
+
center_point = self.get_pos()
|
142
137
|
|
143
|
-
lat,
|
144
|
-
|
138
|
+
self.lat, self.lon = self.editor.to_lat_lon(x=center_point.x() + real_position.x(),
|
139
|
+
y=center_point.y() + real_position.y())
|
145
140
|
|
146
|
-
print(f'Updating node position id:{self.api_object.idtag}, lat:{lat}, lon:{
|
141
|
+
# print(f'Updating node position id:{self.api_object.idtag}, lat:{self.lat}, lon:{self.lon}')
|
147
142
|
|
148
143
|
self.editor.update_diagram_element(device=self.api_object,
|
149
|
-
latitude=lat,
|
150
|
-
longitude=
|
144
|
+
latitude=self.lat,
|
145
|
+
longitude=self.lon,
|
151
146
|
graphic_object=self)
|
152
147
|
|
153
|
-
|
154
|
-
self.lon = long
|
148
|
+
print()
|
155
149
|
|
156
|
-
def mouseMoveEvent(self, event):
|
150
|
+
def mouseMoveEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
|
157
151
|
"""
|
158
152
|
Event handler for mouse move events.
|
159
153
|
"""
|
@@ -165,51 +159,39 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
165
159
|
self.set_callabacks(pos.x(), pos.y())
|
166
160
|
|
167
161
|
if self.hovered and self.enabled:
|
168
|
-
self.
|
162
|
+
self.update_position()
|
169
163
|
|
170
164
|
def mousePressEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
|
171
165
|
"""
|
172
166
|
Event handler for mouse press events.
|
173
167
|
"""
|
174
168
|
super().mousePressEvent(event)
|
175
|
-
selected_items = self.editor.map.view._scene.selectedItems()
|
176
|
-
if len(selected_items) < 2:
|
177
|
-
self.setSelected(True)
|
178
169
|
if self.enabled:
|
179
170
|
self.editor.map.view.disable_move = True
|
180
|
-
if event.button() == Qt.RightButton:
|
171
|
+
if event.button() == Qt.MouseButton.RightButton:
|
181
172
|
pass
|
182
173
|
|
183
|
-
def mouseReleaseEvent(self, event):
|
174
|
+
def mouseReleaseEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
|
184
175
|
"""
|
185
176
|
Event handler for mouse release events.
|
186
177
|
"""
|
187
178
|
super().mouseReleaseEvent(event)
|
188
179
|
self.editor.disableMove = True
|
189
|
-
self.
|
190
|
-
self.editor.map.view._scene.update()
|
191
|
-
|
192
|
-
selected_items = self.editor.map.view._scene.selectedItems()
|
193
|
-
if len(selected_items) < 2:
|
194
|
-
self.setSelected(True)
|
180
|
+
self.update_position_at_the_diagram()
|
195
181
|
|
196
182
|
def hoverEnterEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
197
183
|
"""
|
198
184
|
Event handler for when the mouse enters the item.
|
199
185
|
"""
|
200
|
-
# self.editor.map.view.in_item = True
|
201
186
|
self.hovered = True
|
202
|
-
self.setNodeColor(QColor(Qt.red), QColor(Qt.red))
|
203
|
-
QApplication.instance().setOverrideCursor(Qt.PointingHandCursor)
|
187
|
+
self.setNodeColor(QColor(Qt.GlobalColor.red), QColor(Qt.GlobalColor.red))
|
204
188
|
|
205
189
|
def hoverLeaveEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
|
206
190
|
"""
|
207
191
|
Event handler for when the mouse leaves the item.
|
208
192
|
"""
|
209
|
-
# self.editor.map.view.in_item = False
|
210
193
|
self.hovered = False
|
211
|
-
self.
|
212
|
-
QApplication.instance().restoreOverrideCursor()
|
194
|
+
self.set_default_color()
|
213
195
|
|
214
196
|
def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
|
215
197
|
"""
|
@@ -219,20 +201,20 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
219
201
|
"""
|
220
202
|
menu = QMenu()
|
221
203
|
|
222
|
-
add_menu_entry(menu=menu,
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
add_menu_entry(menu=menu,
|
228
|
-
|
229
|
-
|
230
|
-
|
204
|
+
# add_menu_entry(menu=menu,
|
205
|
+
# text="Merge",
|
206
|
+
# icon_path="",
|
207
|
+
# function_ptr=self.MergeFunction)
|
208
|
+
#
|
209
|
+
# add_menu_entry(menu=menu,
|
210
|
+
# text="Split",
|
211
|
+
# icon_path=":/Icons/icons/divide.svg",
|
212
|
+
# function_ptr=self.SplitFunction)
|
231
213
|
|
232
214
|
add_menu_entry(menu=menu,
|
233
215
|
text="Delete",
|
234
216
|
icon_path=":/Icons/icons/delete.svg",
|
235
|
-
function_ptr=self.
|
217
|
+
function_ptr=self.remove)
|
236
218
|
|
237
219
|
menu.exec_(event.screenPos())
|
238
220
|
|
@@ -254,13 +236,13 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
254
236
|
# Implement the functionality for Action 1 here
|
255
237
|
pass
|
256
238
|
|
257
|
-
def
|
239
|
+
def remove(self):
|
258
240
|
"""
|
259
241
|
|
260
242
|
:return:
|
261
243
|
"""
|
262
244
|
# Implement the functionality for Action 1 here
|
263
|
-
self.editor.
|
245
|
+
self.editor.remove_line_location_graphic(self)
|
264
246
|
|
265
247
|
def MergeFunction(self):
|
266
248
|
"""
|
@@ -286,7 +268,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
286
268
|
pen.setColor(border_color)
|
287
269
|
self.setPen(pen)
|
288
270
|
|
289
|
-
def
|
271
|
+
def set_default_color(self) -> None:
|
290
272
|
"""
|
291
273
|
|
292
274
|
:return:
|
@@ -294,7 +276,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
294
276
|
# Example: color assignment
|
295
277
|
self.setNodeColor(self.colorInner, self.colorBorder)
|
296
278
|
|
297
|
-
def
|
279
|
+
def get_pos(self) -> QPointF:
|
298
280
|
"""
|
299
281
|
|
300
282
|
:return:
|
@@ -312,7 +294,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
|
|
312
294
|
|
313
295
|
:return:
|
314
296
|
"""
|
315
|
-
self.
|
297
|
+
self.update_real_pos()
|
316
298
|
return self.x, self.y
|
317
299
|
|
318
300
|
def resize(self, new_radius: float):
|
{GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py
RENAMED
@@ -16,24 +16,19 @@
|
|
16
16
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
# import uuid
|
20
19
|
from typing import TYPE_CHECKING, List, Union
|
21
20
|
|
22
|
-
import logging
|
23
|
-
|
24
21
|
from PySide6.QtCore import Qt
|
25
|
-
from PySide6.QtGui import QColor
|
22
|
+
from PySide6.QtGui import QColor
|
26
23
|
from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_segment import MapLineSegment
|
27
|
-
from GridCalEngine.Devices import LineLocation
|
28
|
-
from GridCalEngine.Devices.Diagrams.base_diagram import PointsGroup
|
24
|
+
from GridCalEngine.Devices.Branches.line_locations import LineLocation
|
29
25
|
from GridCalEngine.Devices.types import BRANCH_TYPES, FluidPath
|
30
|
-
from GridCalEngine.Devices.Branches.line import Line
|
31
26
|
from GridCalEngine.enumerations import DeviceType
|
32
27
|
from GridCal.Gui.Diagrams.generic_graphics import GenericDiagramWidget
|
33
28
|
from GridCal.Gui.messages import error_msg
|
34
29
|
|
35
30
|
if TYPE_CHECKING:
|
36
|
-
from GridCal.Gui.Diagrams.MapWidget.
|
31
|
+
from GridCal.Gui.Diagrams.MapWidget.Branches.line_location_graphic_item import LineLocationGraphicItem
|
37
32
|
from GridCal.Gui.Diagrams.MapWidget.Substation.substation_graphic_item import SubstationGraphicItem
|
38
33
|
from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
|
39
34
|
from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
|
@@ -61,20 +56,22 @@ class MapLineContainer(GenericDiagramWidget):
|
|
61
56
|
|
62
57
|
self.editor: GridMapWidget = editor # reassign to make clear the editor type
|
63
58
|
|
64
|
-
self.nodes_list: List[
|
59
|
+
self.nodes_list: List[LineLocationGraphicItem] = list()
|
65
60
|
self.segments_list: List[MapLineSegment] = list()
|
66
61
|
self.enabled = True
|
67
62
|
self.original = True # TODO: Que es esto?
|
68
63
|
|
69
|
-
def set_width_scale(self,
|
64
|
+
def set_width_scale(self, branch_scale: float, arrow_scale: float):
|
70
65
|
"""
|
71
66
|
Set the width scale of the line
|
72
|
-
:param
|
67
|
+
:param branch_scale:
|
68
|
+
:param arrow_scale:
|
73
69
|
"""
|
74
70
|
for segment in self.segments_list:
|
75
71
|
# pen = segment.pen() # get the current pen
|
76
72
|
# pen.setWidthF(val * segment.width) # Set the fractional thickness of the line
|
77
|
-
segment.set_width(
|
73
|
+
segment.set_width(branch_scale * segment.width) # Assign the pen to the line item
|
74
|
+
segment.set_arrow_scale(arrow_scale)
|
78
75
|
|
79
76
|
def clean_segments(self) -> None:
|
80
77
|
"""
|
@@ -108,7 +105,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
108
105
|
"""
|
109
106
|
return len(self.nodes_list)
|
110
107
|
|
111
|
-
def register_new_node(self, node:
|
108
|
+
def register_new_node(self, node: LineLocationGraphicItem):
|
112
109
|
"""
|
113
110
|
Add node
|
114
111
|
:param node: NodeGraphicItem
|
@@ -126,7 +123,6 @@ class MapLineContainer(GenericDiagramWidget):
|
|
126
123
|
"""
|
127
124
|
Set color and style
|
128
125
|
:param color: QColor instance
|
129
|
-
:param w: width
|
130
126
|
:param style: PenStyle instance
|
131
127
|
:param tool_tip: tool tip text
|
132
128
|
:return:
|
@@ -159,20 +155,29 @@ class MapLineContainer(GenericDiagramWidget):
|
|
159
155
|
"""
|
160
156
|
self.clean()
|
161
157
|
|
158
|
+
# get the diagram line locations
|
159
|
+
line_locs_info = self.editor.diagram.query_by_type(device_type=DeviceType.LineLocation)
|
160
|
+
|
162
161
|
# draw line locations
|
163
162
|
for elm in self.api_object.locations.data:
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
163
|
+
|
164
|
+
if line_locs_info is not None:
|
165
|
+
loc_data = line_locs_info.locations.get(elm.idtag, None)
|
166
|
+
else:
|
167
|
+
loc_data = None
|
168
|
+
|
169
|
+
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
170
|
+
api_object=elm,
|
171
|
+
lat=elm.lat if loc_data is None else loc_data.latitude,
|
172
|
+
lon=elm.long if loc_data is None else loc_data.longitude,
|
173
|
+
index=self.number_of_nodes()) # 2.7 ...
|
169
174
|
|
170
175
|
self.register_new_node(node=graphic_obj)
|
171
176
|
|
172
177
|
# second pass: create the segments
|
173
178
|
self.redraw_segments()
|
174
179
|
|
175
|
-
def removeNode(self, node:
|
180
|
+
def removeNode(self, node: LineLocationGraphicItem):
|
176
181
|
"""
|
177
182
|
|
178
183
|
:param node:
|
@@ -198,7 +203,8 @@ class MapLineContainer(GenericDiagramWidget):
|
|
198
203
|
"""
|
199
204
|
self.clean_segments()
|
200
205
|
|
201
|
-
connection_elements: List[
|
206
|
+
connection_elements: List[
|
207
|
+
Union[LineLocationGraphicItem, SubstationGraphicItem, VoltageLevelGraphicItem]] = list()
|
202
208
|
|
203
209
|
# add the substation from
|
204
210
|
substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
@@ -240,9 +246,17 @@ class MapLineContainer(GenericDiagramWidget):
|
|
240
246
|
self.editor.update_device_sizes()
|
241
247
|
|
242
248
|
def substation_to(self):
|
249
|
+
"""
|
250
|
+
|
251
|
+
:return:
|
252
|
+
"""
|
243
253
|
return self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
|
244
254
|
|
245
255
|
def substation_from(self):
|
256
|
+
"""
|
257
|
+
|
258
|
+
:return:
|
259
|
+
"""
|
246
260
|
return self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
247
261
|
|
248
262
|
def insert_new_node_at_position(self, index: int):
|
@@ -276,11 +290,11 @@ class MapLineContainer(GenericDiagramWidget):
|
|
276
290
|
|
277
291
|
# Create a new graphical node item
|
278
292
|
|
279
|
-
graphic_obj = self.editor.
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
293
|
+
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
294
|
+
api_object=new_api_object,
|
295
|
+
lat=new_api_object.lat,
|
296
|
+
lon=new_api_object.long,
|
297
|
+
index=index)
|
284
298
|
|
285
299
|
idx = 0
|
286
300
|
|
@@ -294,7 +308,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
294
308
|
# Add the node to the nodes list
|
295
309
|
self.nodes_list.insert(index, graphic_obj)
|
296
310
|
|
297
|
-
graphic_obj.
|
311
|
+
graphic_obj.update_position()
|
298
312
|
|
299
313
|
# Update connectors if necessary
|
300
314
|
self.redraw_segments()
|
@@ -325,16 +339,16 @@ class MapLineContainer(GenericDiagramWidget):
|
|
325
339
|
|
326
340
|
# Create a new graphical node item
|
327
341
|
|
328
|
-
graphic_obj = self.editor.
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
342
|
+
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
343
|
+
api_object=new_api_object,
|
344
|
+
lat=new_api_object.lat,
|
345
|
+
lon=new_api_object.long,
|
346
|
+
index=0)
|
333
347
|
|
334
348
|
# Add the node to the nodes list
|
335
349
|
self.nodes_list.insert(0, graphic_obj)
|
336
350
|
|
337
|
-
graphic_obj.
|
351
|
+
graphic_obj.update_position()
|
338
352
|
|
339
353
|
# Update connectors if necessary
|
340
354
|
self.redraw_segments()
|
@@ -342,7 +356,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
342
356
|
# Return the newly created node
|
343
357
|
return graphic_obj
|
344
358
|
|
345
|
-
elif
|
359
|
+
elif 0 == index or index >= len(self.api_object.locations.data) - 1:
|
346
360
|
|
347
361
|
substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
|
348
362
|
substation_to_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
|
@@ -371,11 +385,11 @@ class MapLineContainer(GenericDiagramWidget):
|
|
371
385
|
|
372
386
|
# Create a new graphical node item
|
373
387
|
|
374
|
-
graphic_obj = self.editor.
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
388
|
+
graphic_obj = self.editor.create_line_location_graphic(line_container=self,
|
389
|
+
api_object=new_api_object,
|
390
|
+
lat=new_api_object.lat,
|
391
|
+
lon=new_api_object.long,
|
392
|
+
index=index)
|
379
393
|
|
380
394
|
idx = 0
|
381
395
|
|
@@ -389,7 +403,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
389
403
|
# Add the node to the nodes list
|
390
404
|
self.nodes_list.insert(index, graphic_obj)
|
391
405
|
|
392
|
-
graphic_obj.
|
406
|
+
graphic_obj.update_position()
|
393
407
|
|
394
408
|
# Update connectors if necessary
|
395
409
|
self.redraw_segments()
|
@@ -397,11 +411,9 @@ class MapLineContainer(GenericDiagramWidget):
|
|
397
411
|
# Return the newly created node
|
398
412
|
return graphic_obj
|
399
413
|
|
400
|
-
else:
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
logging.info("Invalid node index")
|
414
|
+
# else:
|
415
|
+
# logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
|
416
|
+
# logging.info("Invalid node index")
|
405
417
|
|
406
418
|
def split_Line(self, index):
|
407
419
|
"""
|
@@ -440,8 +452,8 @@ class MapLineContainer(GenericDiagramWidget):
|
|
440
452
|
ln1.bus_from = self.api_object.bus_from
|
441
453
|
ln2.bus_to = self.api_object.bus_to
|
442
454
|
|
443
|
-
l1 = self.editor.add_api_line(ln1, original=False)
|
444
|
-
l2 = self.editor.add_api_line(ln2, original=False)
|
455
|
+
# l1 = self.editor.add_api_line(ln1, original=False)
|
456
|
+
# l2 = self.editor.add_api_line(ln2, original=False)
|
445
457
|
|
446
458
|
self.disable_line()
|
447
459
|
|
{GridCal-5.1.51 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py
RENAMED
@@ -28,10 +28,9 @@ from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER
|
|
28
28
|
from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_editor import LineEditor
|
29
29
|
|
30
30
|
from GridCalEngine.Devices.types import BRANCH_TYPES
|
31
|
-
from GridCalEngine.enumerations import DeviceType
|
32
31
|
|
33
32
|
if TYPE_CHECKING:
|
34
|
-
from GridCal.Gui.Diagrams.MapWidget.
|
33
|
+
from GridCal.Gui.Diagrams.MapWidget.Branches.line_location_graphic_item import LineLocationGraphicItem
|
35
34
|
from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_container import MapLineContainer
|
36
35
|
from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
|
37
36
|
|
@@ -41,15 +40,15 @@ class MapLineSegment(QGraphicsLineItem):
|
|
41
40
|
Segment joining two NodeGraphicItem
|
42
41
|
"""
|
43
42
|
|
44
|
-
def __init__(self, first:
|
43
|
+
def __init__(self, first: LineLocationGraphicItem, second: LineLocationGraphicItem, container: MapLineContainer):
|
45
44
|
"""
|
46
45
|
Segment constructor
|
47
46
|
:param first: NodeGraphicItem
|
48
47
|
:param second: NodeGraphicItem
|
49
48
|
"""
|
50
49
|
QGraphicsLineItem.__init__(self)
|
51
|
-
self.first:
|
52
|
-
self.second:
|
50
|
+
self.first: LineLocationGraphicItem = first
|
51
|
+
self.second: LineLocationGraphicItem = second
|
53
52
|
self.container: MapLineContainer = container
|
54
53
|
self.draw_labels = True
|
55
54
|
|
@@ -110,16 +109,21 @@ class MapLineSegment(QGraphicsLineItem):
|
|
110
109
|
pen.setWidthF(width)
|
111
110
|
self.setPen(pen)
|
112
111
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
112
|
+
def set_arrow_scale(self, width: float):
|
113
|
+
"""
|
114
|
+
|
115
|
+
:param width:
|
116
|
+
:return:
|
117
|
+
"""
|
118
|
+
self.arrow_p_from.setScale(width)
|
119
|
+
self.arrow_q_from.setScale(width)
|
120
|
+
self.arrow_p_to.setScale(width)
|
121
|
+
self.arrow_q_to.setScale(width)
|
117
122
|
|
118
123
|
def set_colour(self, color: QColor, style: Qt.PenStyle):
|
119
124
|
"""
|
120
125
|
Set color and style
|
121
126
|
:param color: QColor instance
|
122
|
-
:param w: width
|
123
127
|
:param style: PenStyle instance
|
124
128
|
:return:
|
125
129
|
"""
|
@@ -229,14 +233,14 @@ class MapLineSegment(QGraphicsLineItem):
|
|
229
233
|
icon_path=":/Icons/icons/assign_to_profile.svg")
|
230
234
|
|
231
235
|
add_menu_entry(menu=menu,
|
232
|
-
text="
|
233
|
-
function_ptr=self.
|
234
|
-
icon_path=":/Icons/icons/
|
236
|
+
text="Add point",
|
237
|
+
function_ptr=self.add_path_node,
|
238
|
+
icon_path=":/Icons/icons/cn_icon.svg")
|
235
239
|
|
236
|
-
add_menu_entry(menu=menu,
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
+
# add_menu_entry(menu=menu,
|
241
|
+
# text="Add substation here",
|
242
|
+
# function_ptr=self.add_substation_here,
|
243
|
+
# icon_path=":/Icons/icons/substation.svg")
|
240
244
|
|
241
245
|
menu.addSeparator()
|
242
246
|
|
@@ -313,8 +317,7 @@ class MapLineSegment(QGraphicsLineItem):
|
|
313
317
|
current_template = self.api_object.template
|
314
318
|
dlg = LineEditor(line=self.api_object, Sbase=Sbase, frequency=self.editor.circuit.fBase,
|
315
319
|
templates=templates, current_template=current_template)
|
316
|
-
|
317
|
-
pass
|
320
|
+
dlg.exec()
|
318
321
|
|
319
322
|
def plot_profiles(self) -> None:
|
320
323
|
"""
|
@@ -337,14 +340,14 @@ class MapLineSegment(QGraphicsLineItem):
|
|
337
340
|
"""
|
338
341
|
self.editor.set_active_status_to_profile(self.api_object)
|
339
342
|
|
340
|
-
def
|
343
|
+
def add_path_node(self):
|
341
344
|
"""
|
342
|
-
|
343
|
-
:return:
|
345
|
+
Add a path to the container by adding a new graphical segment
|
344
346
|
"""
|
345
347
|
|
346
348
|
if len(self.container.nodes_list) == 0:
|
347
349
|
self.container.insert_new_node_at_position(0)
|
350
|
+
|
348
351
|
elif len(self.container.nodes_list) == 1:
|
349
352
|
if self.second == self.container.substation_to() or self.first == self.container.substation_to():
|
350
353
|
self.container.insert_new_node_at_position(1)
|
@@ -353,24 +356,26 @@ class MapLineSegment(QGraphicsLineItem):
|
|
353
356
|
else:
|
354
357
|
if self.second == self.container.substation_to() or self.first == self.container.substation_to():
|
355
358
|
self.container.insert_new_node_at_position(len(self.container.nodes_list))
|
359
|
+
|
356
360
|
elif self.second == self.container.substation_from() or self.first == self.container.substation_from():
|
357
361
|
self.container.insert_new_node_at_position(0)
|
362
|
+
|
358
363
|
else:
|
359
364
|
if self.first.index > self.second.index:
|
360
365
|
self.container.insert_new_node_at_position(self.second.index)
|
366
|
+
|
361
367
|
elif self.first.index < self.second.index:
|
362
368
|
self.container.insert_new_node_at_position(self.second.index)
|
363
369
|
|
364
|
-
|
365
|
-
# self.editor.split_line(line_graphics=self)
|
366
|
-
pass
|
367
|
-
|
368
|
-
def split_line_in_out(self):
|
370
|
+
def add_substation_here(self):
|
369
371
|
"""
|
370
372
|
Split the line
|
371
373
|
:return:
|
372
374
|
"""
|
373
|
-
# TODO implement
|
375
|
+
# TODO implement:
|
376
|
+
# The container of this segment must be split into two new containers
|
377
|
+
# and in the middle, we need to create a substation object
|
378
|
+
|
374
379
|
# self.editor.split_line_in_out(line_graphics=self)
|
375
380
|
pass
|
376
381
|
|