GridCal 5.3.22__tar.gz → 5.3.23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +87 -28
  2. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +12 -0
  3. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +9 -2
  4. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/build_diff_tree.py +2 -2
  5. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/__version__.py +1 -1
  6. {gridcal-5.3.22 → gridcal-5.3.23}/PKG-INFO +1 -1
  7. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ExecuteGridCal.py +0 -0
  8. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  9. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  10. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  11. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  12. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  13. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  14. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/__init__.py +0 -0
  15. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/gui.py +0 -0
  16. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  17. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  18. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  19. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  20. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  21. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  22. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  23. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  24. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  25. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  26. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  27. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  28. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  29. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  30. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  31. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  32. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  33. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  34. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  35. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  36. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  37. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  38. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  39. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  40. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  41. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  42. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  43. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  44. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  45. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  46. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  47. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  48. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  49. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  50. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  51. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  52. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  53. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  54. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  55. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  56. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  57. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  58. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  59. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  60. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  61. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  62. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  63. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  64. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  65. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  66. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  67. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  68. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  69. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  70. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  71. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  72. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  73. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  74. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  75. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  76. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  77. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  78. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  79. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  80. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  81. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  82. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  83. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  84. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  85. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  86. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  87. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  88. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  89. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  90. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  91. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  92. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  93. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  94. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  95. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  96. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  97. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  98. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/__init__.py +0 -0
  99. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  100. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  101. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  102. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  103. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  104. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  105. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridGenerator/gui.py +0 -0
  106. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  107. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  108. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/__init__.py +0 -0
  109. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/demo_code.py +0 -0
  110. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/demo_code2.py +0 -0
  111. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/demo_code3.py +0 -0
  112. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
  113. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
  114. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
  115. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
  116. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
  117. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  118. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  119. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  120. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  121. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  122. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  123. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  124. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  125. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  126. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  127. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  128. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  129. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/GridCalMain.py +0 -0
  130. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/MainWindow.py +0 -0
  131. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  132. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  133. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
  134. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  135. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  136. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  137. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  138. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  139. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  140. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  141. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  142. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  143. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  144. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  145. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  146. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  147. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  148. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  149. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/__init__.py +0 -0
  150. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/icons_rc.py +0 -0
  151. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/object_select_window.py +0 -0
  152. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Main/update_gui_file.py +0 -0
  153. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  154. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  155. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  156. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  157. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  158. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  159. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  160. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  161. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  162. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  163. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  164. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  165. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  166. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  167. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  168. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  169. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  170. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  171. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  172. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  173. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  174. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  175. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  176. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  177. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  178. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  179. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  180. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  181. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  182. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  183. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  184. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  185. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  186. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  187. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  188. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  189. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  190. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  191. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  192. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  193. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  194. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  195. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  196. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
  197. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  198. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  199. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  200. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  201. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  202. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  203. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Visualization/__init__.py +0 -0
  204. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Visualization/visualization.py +0 -0
  205. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Widgets/__init__.py +0 -0
  206. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  207. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  208. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  209. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  210. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  211. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  212. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  213. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/__init__.py +0 -0
  214. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/associations_model.py +0 -0
  215. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/general_dialogues.py +0 -0
  216. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/gui_functions.py +0 -0
  217. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/messages.py +0 -0
  218. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/object_model.py +0 -0
  219. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/pandas_model.py +0 -0
  220. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/plot_config.py +0 -0
  221. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/profiles_model.py +0 -0
  222. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/python_console.py +0 -0
  223. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/python_highlighter.py +0 -0
  224. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/results_model.py +0 -0
  225. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/table_view_header_wrap.py +0 -0
  226. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/themes.py +0 -0
  227. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/toast_widget.py +0 -0
  228. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/update_gui_all.py +0 -0
  229. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/update_gui_common.py +0 -0
  230. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Gui/wrappable_table_model.py +0 -0
  231. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/LICENSE.txt +0 -0
  232. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/__init__.py +0 -0
  233. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/export_results_driver.py +0 -0
  234. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/file_handler.py +0 -0
  235. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/server_driver.py +0 -0
  236. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/session.py +0 -0
  237. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/Session/synchronization_driver.py +0 -0
  238. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/__init__.py +0 -0
  239. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  240. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  241. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  242. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  243. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  244. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  245. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  246. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  247. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  248. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  249. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  250. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  251. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  252. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  253. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  254. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  255. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  256. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  257. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  258. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  259. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  260. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  261. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  262. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  263. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  264. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  265. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  266. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  267. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  268. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  269. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  270. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  271. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  272. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  273. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  274. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  275. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  276. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  277. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/__init__.py +0 -0
  278. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/GridCal.ico +0 -0
  279. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/GridCal.svg +0 -0
  280. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/__init__.py +0 -0
  281. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/cables.csv +0 -0
  282. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/sequence_lines.csv +0 -0
  283. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/transformers.csv +0 -0
  284. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/data/wires.csv +0 -0
  285. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/plugins.py +0 -0
  286. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/templates.py +0 -0
  287. {gridcal-5.3.22 → gridcal-5.3.23}/GridCal/update.py +0 -0
  288. {gridcal-5.3.22 → gridcal-5.3.23}/setup.cfg +0 -0
  289. {gridcal-5.3.22 → gridcal-5.3.23}/setup.py +0 -0
@@ -6,7 +6,8 @@ from __future__ import annotations
6
6
  import webbrowser
7
7
  from typing import List, TYPE_CHECKING, Tuple
8
8
  from PySide6 import QtWidgets
9
- from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent, QGraphicsSceneMouseEvent, QGraphicsRectItem
9
+ from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent, QGraphicsSceneMouseEvent, QGraphicsRectItem, \
10
+ QMessageBox
10
11
  from PySide6.QtCore import Qt, QPointF
11
12
  from PySide6.QtGui import QBrush, QColor
12
13
  from GridCal.Gui.Diagrams.MapWidget.Substation.node_template import NodeTemplate
@@ -20,10 +21,11 @@ from GridCalEngine.Devices.Substation.bus import Bus
20
21
  from GridCalEngine.Devices import VoltageLevel
21
22
  from GridCalEngine.Devices.Substation.substation import Substation
22
23
  from GridCalEngine.enumerations import DeviceType
24
+ from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
25
+ from GridCal.Gui.Diagrams.SchematicWidget import schematic_widget
23
26
 
24
27
  if TYPE_CHECKING: # Only imports the below statements during type checking
25
28
  from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
26
- from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
27
29
 
28
30
 
29
31
  class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
@@ -108,7 +110,10 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
108
110
  :param se: other SubstationGraphicItem
109
111
  """
110
112
  self._callbacks += se._callbacks
111
- self.voltage_level_graphics += se.voltage_level_graphics
113
+ for vl_graphic in se.voltage_level_graphics:
114
+ self.register_voltage_level(vl=vl_graphic.get_copy(new_parent=self))
115
+
116
+ self.sort_voltage_levels()
112
117
 
113
118
  def set_size(self, r: float):
114
119
  """
@@ -237,6 +242,23 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
237
242
  longitude=long,
238
243
  graphic_object=self)
239
244
 
245
+ def refresh(self, pos: QPointF):
246
+ """
247
+ This function refreshes the x, y coordinates of the graphic item
248
+ Returns:
249
+
250
+ """
251
+
252
+ x = pos.x() - self.rect().width() / 2
253
+ y = pos.y() - self.rect().height() / 2
254
+ self.setRect(x, y, self.rect().width(), self.rect().height())
255
+ self.set_callbacks(pos.x(), pos.y())
256
+
257
+ for vl_graphics in self.voltage_level_graphics:
258
+ vl_graphics.center_on_substation()
259
+
260
+ self.update_position_at_the_diagram() # always update
261
+
240
262
  def get_center_pos(self) -> QPointF:
241
263
  """
242
264
  Get the center position
@@ -254,22 +276,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
254
276
  if self.hovered:
255
277
  # super().mouseMoveEvent(event)
256
278
  pos = self.mapToParent(event.pos())
257
- x = pos.x() - self.rect().width() / 2
258
- y = pos.y() - self.rect().height() / 2
259
- self.setRect(x, y, self.rect().width(), self.rect().height())
260
- self.set_callbacks(pos.x(), pos.y())
261
-
262
- for vl_graphics in self.voltage_level_graphics:
263
- vl_graphics.center_on_substation()
264
-
265
- self.update_position_at_the_diagram() # always update
266
-
267
- # QGraphicsRectItem.mouseMoveEvent(self, event)
268
- # pos = self.mapToParent(event.pos())
269
- # x = pos.x() + self.rect().width() / 2
270
- # y = pos.y() + self.rect().height() / 2
271
- # self.set_callbacks(x, y)
272
- # self.update_position_at_the_diagram() # always update
279
+ self.refresh(pos=pos)
273
280
 
274
281
  def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
275
282
  """
@@ -413,7 +420,8 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
413
420
  "Remove substation from schematic")
414
421
 
415
422
  if ok:
416
- self.editor.remove_substation(substation=self, delete_from_db=False)
423
+ self.editor.remove_substation(api_object=self.api_object, delete_from_db=False, substation_buses=[],
424
+ voltage_levels=[])
417
425
 
418
426
  def remove_function_from_schematic_and_db(self) -> None:
419
427
  """
@@ -514,8 +522,6 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
514
522
  dialog.setModal(True)
515
523
  dialog.exec()
516
524
 
517
-
518
-
519
525
  def move_to_api_coordinates(self):
520
526
  """
521
527
  Function to move the graphics to the Database location
@@ -544,7 +550,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
544
550
  dlg.exec()
545
551
 
546
552
  if dlg.is_accepted:
547
-
553
+ selected_buses = []
548
554
  deleted_api_objs: List[Substation] = list()
549
555
 
550
556
  # Collect all codes to merge
@@ -556,15 +562,18 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
556
562
  if merged_codes == "":
557
563
  merged_codes = se_graphics.api_object.code
558
564
  else:
559
- merged_codes = merged_codes + ',' + se_graphics.api_object.code
565
+ if se_graphics.api_object.code != "":
566
+ merged_codes = merged_codes + ',' + se_graphics.api_object.code
560
567
 
561
568
  deleted_api_objs.append(se_graphics.api_object)
562
569
 
563
570
  if se_graphics != self:
564
571
  self.merge(se=se_graphics)
565
- self.editor.remove_substation(substation=se_graphics,
566
- delete_from_db=True,
567
- delete_connections=False)
572
+ sub = self.editor.graphics_manager.delete_device(se_graphics.api_object)
573
+ self.editor.map.diagram_scene.removeItem(sub)
574
+ # self.editor.remove_substation(substation=se_graphics,
575
+ # delete_from_db=True,
576
+ # delete_connections=False)
568
577
 
569
578
  # Update the code of the base substation
570
579
  self.api_object.code = merged_codes # Needed?
@@ -578,11 +587,14 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
578
587
  # re-index the stuff pointing at deleted api elements to this api object
579
588
  for vl in self.editor.circuit.voltage_levels:
580
589
  if vl.substation in deleted_api_objs:
590
+ print(f'{vl.substation.name} changed to {self.api_object.name} for {vl.name}')
581
591
  vl.substation = self.api_object
582
592
 
583
593
  for bus in self.editor.circuit.buses:
584
594
  if bus.substation in deleted_api_objs:
595
+ print(f'{bus.substation.name} changed to {self.api_object.name} for {bus.name}')
585
596
  bus.substation = self.api_object
597
+ selected_buses.append(bus)
586
598
 
587
599
  # remove connections that are from and to the same substation
588
600
  for tpe in [DeviceType.LineDevice, DeviceType.DCLineDevice, DeviceType.HVDCLineDevice]:
@@ -590,7 +602,54 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
590
602
  if elm.api_object.get_substation_from() == elm.api_object.get_substation_to():
591
603
  self.editor.remove_branch_graphic(elm, delete_from_db=True)
592
604
 
593
- self.update_position_at_the_diagram() # always update
605
+ for substation in deleted_api_objs:
606
+ if substation == self.api_object:
607
+ pass
608
+ else:
609
+ self.editor.circuit.delete_substation(obj=substation)
610
+
611
+ self.refresh(pos=self.get_pos()) # always update
612
+
613
+ if len(selected_buses):
614
+
615
+ dlg = CheckListDialogue(
616
+ objects_list=[f'Create schematic diagram for the recipient substation {self.api_object.name}',
617
+ f'Unify buses and voltage levels with the same nominal voltage in recipient '
618
+ f'substation {self.api_object.name}'],
619
+ title=f"Finishing merging proces in substation{self.api_object.name}"
620
+ )
621
+ dlg.setModal(True)
622
+ dlg.exec()
623
+
624
+
625
+ if dlg.accepted:
626
+ for index in dlg.selected_indices:
627
+ if index == 0:
628
+ diagram = schematic_widget.make_diagram_from_buses(circuit=self.editor.circuit,
629
+ buses=selected_buses,
630
+ name=self.api_object.name + " diagram")
631
+
632
+ diagram_widget = schematic_widget.SchematicWidget(gui=self.editor.gui,
633
+ circuit=self.editor.circuit,
634
+ diagram=diagram,
635
+ default_bus_voltage=self.editor.gui.ui.defaultBusVoltageSpinBox.value(),
636
+ time_index=self.editor.gui.get_diagram_slider_index())
637
+
638
+ self.editor.gui.add_diagram_widget_and_diagram(diagram_widget=diagram_widget,
639
+ diagram=diagram)
640
+ self.editor.gui.set_diagrams_list_view()
641
+ self.editor.gui.set_diagram_widget(widget=diagram_widget)
642
+ elif index == 1:
643
+ pass
644
+ #TODO: Merge items
645
+ else:
646
+ self.editor.gui.show_info_toast(
647
+ message='Merge ended. There was no diagram produced. The buses and voltages were not unified.')
648
+
649
+ else:
650
+ self.editor.gui.show_info_toast(
651
+ message='The substation merged have no associated buses. No schematic can be produced.')
652
+
594
653
 
595
654
  def new_substation_diagram(self):
596
655
  """
@@ -149,6 +149,18 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
149
149
  longitude=long,
150
150
  graphic_object=self)
151
151
 
152
+ def get_copy(self, new_parent: SubstationGraphicItem):
153
+ """
154
+ Returns a copy of the VoltageLevelGraphicItem with a different parent
155
+ :param new_parent: New Substation Graphic item parent
156
+ :return: Copy of the VL Grpahic Item with new parent.
157
+ """
158
+ return VoltageLevelGraphicItem(parent=new_parent, editor=new_parent.editor, api_object=self.api_object,
159
+ r=self.radius / self.api_object.Vnom / 0.01, draw_labels=self.draw_labels)
160
+
161
+
162
+
163
+
152
164
  def mouseMoveEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
153
165
  """
154
166
  Event handler for mouse move events.
@@ -2482,7 +2482,8 @@ def get_devices_to_expand(circuit: MultiCircuit, substations: List[Substation],
2482
2482
 
2483
2483
  if bus.voltage_level is not None:
2484
2484
  voltage_levels.add(bus.voltage_level)
2485
- substations_extended.add(bus.substation)
2485
+ if bus.substation not in substations_extended:
2486
+ substations_extended.add(bus.substation)
2486
2487
 
2487
2488
  if level < max_level:
2488
2489
 
@@ -2521,7 +2522,13 @@ def get_devices_to_expand(circuit: MultiCircuit, substations: List[Substation],
2521
2522
  else:
2522
2523
  raise Exception(f'Unrecognized branch type {obj.device_type.value}')
2523
2524
 
2524
- return list(substations_extended), list(voltage_levels), lines, dc_lines, hvdc_lines
2525
+ list_substations_extended = list(substations_extended)
2526
+
2527
+ for substation in substations:
2528
+ if substation not in list_substations_extended:
2529
+ list_substations_extended.append(substation)
2530
+
2531
+ return list_substations_extended, list(voltage_levels), lines, dc_lines, hvdc_lines
2525
2532
 
2526
2533
 
2527
2534
  def make_diagram_from_substations(circuit: MultiCircuit,
@@ -95,8 +95,8 @@ def populate_tree(tree_widget, base: MultiCircuit, diff: MultiCircuit,
95
95
 
96
96
  child_item = QtWidgets.QTreeWidgetItem(
97
97
  parent_item,
98
- [f"{elm.device_type.value}", "Mod", f"{elm.idtag}", f"{elm.name}",
99
- prop.name, str(base_val), str(new_val)]
98
+ [f"{diff_name}", f"{elm.device_type.value}", "Mod", f"{elm.idtag}",
99
+ f"{elm.name}", prop.name, str(base_val), str(new_val)]
100
100
  )
101
101
  child_item.setCheckState(0, Qt.CheckState.Unchecked)
102
102
 
@@ -6,7 +6,7 @@ import datetime
6
6
  _current_year_ = datetime.datetime.now().year
7
7
 
8
8
  # do not forget to keep a three-number version!!!
9
- __GridCal_VERSION__ = "5.3.22"
9
+ __GridCal_VERSION__ = "5.3.23"
10
10
 
11
11
  url = 'https://github.com/SanPen/GridCal'
12
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GridCal
3
- Version: 5.3.22
3
+ Version: 5.3.23
4
4
  Summary: GridCal is a Power Systems simulation program intended for professional use and research
5
5
  Home-page: https://github.com/SanPen/GridCal
6
6
  Author: Santiago Peñate Vera et. Al.