GridCal 5.3.42__tar.gz → 5.3.44__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 (297) hide show
  1. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +1 -1
  2. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +8 -1
  3. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +38 -6
  4. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +15 -44
  5. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +1 -1
  6. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/base_diagram_widget.py +27 -13
  7. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/generic_graphics.py +14 -0
  8. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/MainWindow.py +334 -233
  9. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +12 -4
  10. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Results/results.py +20 -3
  11. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +47 -47
  12. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/base_gui.py +2 -2
  13. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/simulations.py +156 -90
  14. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/icons_rc.py +679 -572
  15. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/gui_functions.py +56 -5
  16. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/object_model.py +66 -51
  17. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/session.py +11 -1
  18. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/__version__.py +1 -1
  19. gridcal-5.3.44/GridCal/adequacy_output.csv +955 -0
  20. {gridcal-5.3.42 → gridcal-5.3.44}/PKG-INFO +1 -1
  21. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ExecuteGridCal.py +0 -0
  22. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  23. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  24. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  25. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  26. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  27. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  28. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/__init__.py +0 -0
  29. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/gui.py +0 -0
  30. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  31. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  32. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  33. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  34. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  35. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  36. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  37. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  38. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  39. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  40. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  41. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  42. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  43. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  44. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  45. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  46. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  47. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/__init__.py +0 -0
  48. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/controllable_shunt_editor.py +0 -0
  49. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/generator_editor.py +0 -0
  50. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/line_editor.py +0 -0
  51. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/new_line_dialogue.py +0 -0
  52. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/transformer3w_editor.py +0 -0
  53. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/transformer_editor.py +0 -0
  54. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/Editors/transformer_taps_editor.py +0 -0
  55. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  56. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  57. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  58. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  59. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  60. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  61. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  62. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  63. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  64. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  65. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  66. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  67. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  68. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  69. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  70. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  71. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  72. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  73. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  74. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  75. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  76. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  77. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  78. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  79. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  80. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  81. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  82. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  83. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  84. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  85. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  86. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  87. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  88. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  89. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  90. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  91. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  92. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  93. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  94. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  95. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  96. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  97. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  98. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  99. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  100. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  101. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  102. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  103. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  104. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  105. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  106. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  107. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  108. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  109. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  110. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  111. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/__init__.py +0 -0
  112. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  113. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  114. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  115. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  116. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridGenerator/gui.py +0 -0
  117. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  118. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  119. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/__init__.py +0 -0
  120. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
  121. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/demo_code.py +0 -0
  122. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/demo_code2.py +0 -0
  123. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/demo_code3.py +0 -0
  124. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/demo_code4.py +0 -0
  125. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
  126. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
  127. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
  128. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
  129. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
  130. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  131. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  132. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  133. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  134. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  135. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  136. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  137. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  138. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  139. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  140. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  141. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  142. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/GridCalMain.py +0 -0
  143. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  144. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  145. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  146. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  147. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  148. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  149. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  150. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  151. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  152. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  153. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  154. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  155. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  156. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/__init__.py +0 -0
  157. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/object_select_window.py +0 -0
  158. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Main/update_gui_file.py +0 -0
  159. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  160. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  161. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  162. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  163. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  164. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  165. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  166. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  167. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  168. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  169. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  170. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  171. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  172. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  173. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  174. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  175. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  176. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  177. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  178. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  179. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  180. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  181. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  182. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  183. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  184. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  185. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  186. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  187. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  188. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  189. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  190. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  191. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  192. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  193. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  194. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  195. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  196. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  197. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  198. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  199. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  200. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  201. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  202. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
  203. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  204. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  205. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  206. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  207. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  208. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  209. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Visualization/__init__.py +0 -0
  210. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Visualization/visualization.py +0 -0
  211. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Widgets/__init__.py +0 -0
  212. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  213. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  214. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  215. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  216. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  217. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  218. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  219. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/__init__.py +0 -0
  220. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/associations_model.py +0 -0
  221. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/general_dialogues.py +0 -0
  222. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/messages.py +0 -0
  223. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/pandas_model.py +0 -0
  224. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/plot_config.py +0 -0
  225. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/profiles_model.py +0 -0
  226. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/python_console.py +0 -0
  227. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/python_highlighter.py +0 -0
  228. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/results_model.py +0 -0
  229. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/table_view_header_wrap.py +0 -0
  230. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/themes.py +0 -0
  231. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/toast_widget.py +0 -0
  232. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/update_gui_all.py +0 -0
  233. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/update_gui_common.py +0 -0
  234. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Gui/wrappable_table_model.py +0 -0
  235. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/LICENSE.txt +0 -0
  236. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/__init__.py +0 -0
  237. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/export_results_driver.py +0 -0
  238. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/file_handler.py +0 -0
  239. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/server_driver.py +0 -0
  240. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/Session/synchronization_driver.py +0 -0
  241. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/__init__.py +0 -0
  242. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/darkdetect/__init__.py +0 -0
  243. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/darkdetect/_dummy.py +0 -0
  244. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/darkdetect/_linux_detect.py +0 -0
  245. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/darkdetect/_mac_detect.py +0 -0
  246. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/darkdetect/_windows_detect.py +0 -0
  247. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  248. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  249. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  250. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  251. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  252. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  253. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  254. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  255. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  256. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  257. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  258. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  259. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  260. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  261. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  262. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  263. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  264. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  265. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  266. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  267. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  268. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  269. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  270. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  271. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  272. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  273. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  274. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  275. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  276. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  277. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  278. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  279. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  280. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  281. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  282. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  283. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  284. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  285. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/__init__.py +0 -0
  286. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/GridCal.ico +0 -0
  287. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/GridCal.svg +0 -0
  288. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/__init__.py +0 -0
  289. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/cables.csv +0 -0
  290. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/sequence_lines.csv +0 -0
  291. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/transformers.csv +0 -0
  292. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/data/wires.csv +0 -0
  293. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/plugins.py +0 -0
  294. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/templates.py +0 -0
  295. {gridcal-5.3.42 → gridcal-5.3.44}/GridCal/update.py +0 -0
  296. {gridcal-5.3.42 → gridcal-5.3.44}/setup.cfg +0 -0
  297. {gridcal-5.3.42 → gridcal-5.3.44}/setup.py +0 -0
@@ -69,7 +69,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
69
69
 
70
70
  self.index = index
71
71
 
72
- self.resize(r * 10)
72
+ self.resize(r)
73
73
  self.setAcceptHoverEvents(True) # Enable hover events for the item
74
74
  self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsMovable) # Allow moving the node
75
75
  self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsSelectable) # Allow selecting the node
@@ -17,7 +17,7 @@ from GridCal.Gui.messages import yes_no_question
17
17
  from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER
18
18
  from GridCal.Gui.Diagrams.Editors.line_editor import LineEditor
19
19
 
20
- from GridCalEngine.Devices.types import BRANCH_TYPES
20
+ from GridCalEngine.Devices.types import BRANCH_TYPES, ALL_DEV_TYPES
21
21
  from GridCalEngine.enumerations import DeviceType
22
22
 
23
23
  if TYPE_CHECKING:
@@ -132,6 +132,13 @@ class MapLineSegment(QGraphicsLineItem):
132
132
  """
133
133
  return [self.container]
134
134
 
135
+ def get_associated_devices(self) -> List[ALL_DEV_TYPES]:
136
+ """
137
+ This forwards to the map line container for the appropriate deletion of everything
138
+ :return:
139
+ """
140
+ return [self.container.api_object]
141
+
135
142
  def set_width(self, width: float):
136
143
  """
137
144
 
@@ -20,7 +20,7 @@ from GridCal.Gui.object_model import ObjectsModel
20
20
  from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
21
21
  from GridCal.Gui.Diagrams.SchematicWidget import schematic_widget
22
22
 
23
- from GridCalEngine.Devices.types import ALL_DEV_TYPES
23
+ from GridCalEngine.Devices.types import ALL_DEV_TYPES, INJECTION_DEVICE_TYPES, BRANCH_TYPES
24
24
  from GridCalEngine.Devices.Substation.bus import Bus
25
25
  from GridCalEngine.Devices import VoltageLevel
26
26
  from GridCalEngine.Devices.Substation.substation import Substation
@@ -795,22 +795,54 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
795
795
  :return:
796
796
  """
797
797
  associated_buses = self.editor.circuit.get_substation_buses(substation=self.api_object)
798
- associated_buses_graphics = list()
799
798
  associated_lines_graphics: List[MapLineContainer] = list()
799
+ for line in self.editor.circuit.lines:
800
+ if line.bus_to in associated_buses or line.bus_from in associated_buses:
801
+ associated_lines_graphics.append(self.editor.graphics_manager.query(elm=line))
800
802
 
801
803
  # TODO: Connectivity nodes / busbars? Probably this is only when dealing with the schematic
802
804
 
803
- for bus in associated_buses:
804
- associated_buses_graphics.append(self.editor.graphics_manager.query(elm=bus))
805
+ # for bus in associated_buses:
806
+ # associated_buses_graphics.append(self.editor.graphics_manager.query(elm=bus))
805
807
 
806
- for segment in self.get_hosting_line_segments():
807
- associated_lines_graphics.append(segment.container)
808
+ # for segment in self.get_hosting_line_segments():
809
+ # associated_lines_graphics.append(segment.container)
808
810
 
809
811
  return self.voltage_level_graphics + associated_lines_graphics
810
812
 
813
+
814
+ def get_associated_devices(self) -> List[ALL_DEV_TYPES]:
815
+ """
816
+ This function returns all the api_object devices associated with the selected graphic object.
817
+ :return: List of the associated devices.
818
+ """
819
+ associated_vl = [vl.api_object for vl in self.voltage_level_graphics]
820
+ associated_buses = self.editor.circuit.get_substation_buses(substation=self.api_object)
821
+ associated_branches: List[BRANCH_TYPES] = list()
822
+ associated_shunts: List[INJECTION_DEVICE_TYPES] = list()
823
+
824
+ for branch in self.editor.circuit.get_branches():
825
+ if branch.bus_to in associated_buses or branch.bus_from in associated_buses:
826
+ associated_branches.append(branch)
827
+
828
+ for inj in self.editor.circuit.get_injection_devices_iter():
829
+ if inj.bus in associated_buses:
830
+ associated_shunts.append(inj)
831
+
832
+ # TODO: Connectivity nodes / busbars? Probably this is only when dealing with the schematic
833
+
834
+ # for bus in associated_buses:
835
+ # associated_buses_graphics.append(self.editor.graphics_manager.query(elm=bus))
836
+
837
+ # for segment in self.get_hosting_line_segments():
838
+ # associated_lines_graphics.append(segment.container)
839
+
840
+ return associated_vl + associated_branches + associated_shunts + associated_buses
841
+
811
842
  def delete(self):
812
843
  """
813
844
 
814
845
  :return:
815
846
  """
847
+
816
848
  self.editor.delete_with_dialogue(selected=[self], delete_from_db=False)
@@ -506,7 +506,7 @@ class GridMapWidget(BaseDiagramWidget):
506
506
  lat=lat,
507
507
  lon=lon,
508
508
  index=index,
509
- r=0.005)
509
+ r=self.diagram.min_branch_width)
510
510
 
511
511
  self.graphics_manager.add_device(elm=api_object, graphic=graphic_object)
512
512
 
@@ -1180,7 +1180,7 @@ class GridMapWidget(BaseDiagramWidget):
1180
1180
  arrow_size = self.diagram.arrow_size # self.get_arrow_scale()
1181
1181
 
1182
1182
  # Try colouring the branches
1183
- if self.circuit.get_branch_number_wo_hvdc():
1183
+ if self.circuit.get_branch_number(add_hvdc=False, add_vsc=False, add_switch=True):
1184
1184
 
1185
1185
  lnorm = np.abs(loadings)
1186
1186
  lnorm[lnorm == np.inf] = 0
@@ -1705,8 +1705,8 @@ class GridMapWidget(BaseDiagramWidget):
1705
1705
 
1706
1706
  line1 = selected_lines[0][0]
1707
1707
  line2 = selected_lines[1][0]
1708
- line1_graphic = selected_lines[0][1]
1709
- line2_graphic = selected_lines[1][1]
1708
+ line1_graphic: MapAcLine = selected_lines[0][1]
1709
+ line2_graphic: MapAcLine = selected_lines[1][1]
1710
1710
 
1711
1711
  if line1.template != line2.template:
1712
1712
  self.gui.show_error_toast('Line merging could not be done, lines have different templates. Check if that '
@@ -1823,11 +1823,10 @@ class GridMapWidget(BaseDiagramWidget):
1823
1823
  pass
1824
1824
 
1825
1825
  self.circuit.add_line(new_line)
1826
- self.circuit.delete_line(line1)
1827
- self.circuit.delete_line(line2)
1828
1826
 
1829
- self.remove_branch_graphic(line=line1_graphic)
1830
- self.remove_branch_graphic(line=line2_graphic)
1827
+ self.remove_element(device=line1, graphic_object=line1_graphic, delete_from_db=True)
1828
+ self.remove_element(device=line2, graphic_object=line2_graphic, delete_from_db=True)
1829
+
1831
1830
  self.add_api_line(api_object=new_line)
1832
1831
 
1833
1832
  self.gui.show_info_toast(message='Line merging successful!')
@@ -2586,11 +2585,7 @@ class GridMapWidget(BaseDiagramWidget):
2586
2585
  selected_substations = self.get_selected_substations_tup()
2587
2586
 
2588
2587
  if len(selected_lines) != 1 or len(selected_substations) != 2:
2589
- msg = QMessageBox()
2590
- msg.setIcon(QMessageBox.Icon.Information)
2591
- msg.setText("Please select exactly one line and two substations.")
2592
- msg.setWindowTitle("Selection Error")
2593
- msg.exec()
2588
+ self.gui.show_error_toast(message="Please select exactly one line and two substations.")
2594
2589
  return
2595
2590
 
2596
2591
  # Get the API objects
@@ -2615,11 +2610,7 @@ class GridMapWidget(BaseDiagramWidget):
2615
2610
  line_api.bus_from = bus
2616
2611
  break
2617
2612
  if bus_from_idtag_0 == line_api.bus_from.idtag:
2618
- msg = QMessageBox()
2619
- msg.setIcon(QMessageBox.Icon.Information)
2620
- msg.setText("The new substation did not have any valid bus to connect the line.")
2621
- msg.setWindowTitle("No valid bus")
2622
- msg.exec()
2613
+ self.gui.show_error_toast(message="The new substation did not have any valid bus to connect the line.")
2623
2614
  return
2624
2615
 
2625
2616
  elif substation_api_1.idtag == bus_to.substation.idtag:
@@ -2630,11 +2621,7 @@ class GridMapWidget(BaseDiagramWidget):
2630
2621
  line_api.bus_to = bus
2631
2622
  break
2632
2623
  if bus_to_idtag_0 == line_api.bus_to.idtag:
2633
- msg = QMessageBox()
2634
- msg.setIcon(QMessageBox.Icon.Information)
2635
- msg.setText("The new substation did not have any valid bus to connect the line.")
2636
- msg.setWindowTitle("No valid bus")
2637
- msg.exec()
2624
+ self.gui.show_error_toast(message="The new substation did not have any valid bus to connect the line.")
2638
2625
  return
2639
2626
 
2640
2627
 
@@ -2646,11 +2633,7 @@ class GridMapWidget(BaseDiagramWidget):
2646
2633
  line_api.bus_from = bus
2647
2634
  break
2648
2635
  if bus_from_idtag_0 == line_api.bus_from.idtag:
2649
- msg = QMessageBox()
2650
- msg.setIcon(QMessageBox.Icon.Information)
2651
- msg.setText("The new substation did not have any valid bus to connect the line.")
2652
- msg.setWindowTitle("No valid bus")
2653
- msg.exec()
2636
+ self.gui.show_error_toast(message="The new substation did not have any valid bus to connect the line.")
2654
2637
  return
2655
2638
 
2656
2639
  elif substation_api_2.idtag == bus_to.substation.idtag:
@@ -2661,33 +2644,21 @@ class GridMapWidget(BaseDiagramWidget):
2661
2644
  line_api.bus_to = bus
2662
2645
  break
2663
2646
  if bus_to_idtag_0 == line_api.bus_to.idtag:
2664
- msg = QMessageBox()
2665
- msg.setIcon(QMessageBox.Icon.Information)
2666
- msg.setText("The new substation did not have any valid bus to connect the line.")
2667
- msg.setWindowTitle("No valid bus")
2668
- msg.exec()
2647
+ self.gui.show_error_toast(message="The new substation did not have any valid bus to connect the line.")
2669
2648
  return
2670
2649
 
2671
2650
  else:
2672
- msg = QMessageBox()
2673
- msg.setIcon(QMessageBox.Icon.Information)
2674
- msg.setText("None of the selected substations are related to the line.")
2675
- msg.setWindowTitle("No Action")
2676
- msg.exec()
2651
+ self.gui.show_error_toast(message="None of the selected substations are related to the line.")
2677
2652
  return
2678
2653
 
2679
2654
  # Remove past graphic item and add the new one
2680
2655
 
2681
- self.remove_branch_graphic(line=line_graphic, delete_from_db=False)
2656
+ self.remove_element(device=line_api, graphic_object=line_graphic, delete_from_db=False)
2682
2657
  line = self.add_api_line(api_object=line_api)
2683
2658
  line.calculate_total_length()
2684
2659
 
2685
- msg = QMessageBox()
2686
- msg.setIcon(QMessageBox.Icon.Information)
2687
- msg.setText(f"Line {line_api.name} had its connection to substation {removed_substation} changed to substation "
2660
+ self.gui.show_info_toast(f"Line {line_api.name} had its connection to substation {removed_substation} changed to substation "
2688
2661
  f"{added_substation}.")
2689
- msg.setWindowTitle("Operation Successful")
2690
- msg.exec()
2691
2662
 
2692
2663
 
2693
2664
  def generate_map_diagram(
@@ -102,7 +102,7 @@ class BusBarGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
102
102
  self.tile.setOpacity(0.7)
103
103
 
104
104
  # connection terminals the block
105
- self._terminal = BarTerminalItem('s', parent=self, editor=self.editor) # , h=self.h))
105
+ self._terminal = BarTerminalItem('s', parent=self, editor=self._editor) # , h=self.h))
106
106
  self._terminal.setPen(QPen(Qt.GlobalColor.transparent, self.pen_width, self.style,
107
107
  Qt.PenCapStyle.RoundCap, Qt.PenJoinStyle.RoundJoin))
108
108
 
@@ -291,7 +291,7 @@ class BaseDiagramWidget(QSplitter):
291
291
  graphic_object.delete_from_associations()
292
292
 
293
293
  if delete_from_db:
294
- self.circuit.delete_element(obj=graphic_object.api_object)
294
+ self.circuit.delete_element(obj=device)
295
295
 
296
296
  # # For any other associated, graphic, delete too
297
297
  # for child_graphic in graphic_object.get_associated_widgets():
@@ -315,6 +315,19 @@ class BaseDiagramWidget(QSplitter):
315
315
  self.object_editor_table.setModel(None)
316
316
 
317
317
  return True
318
+
319
+ if graphic_object is None and device is not None:
320
+
321
+ if delete_from_db:
322
+ self.circuit.delete_element(obj=device)
323
+ self.delete_element_utility_function(device=device, propagate=delete_from_db)
324
+ self.object_editor_table.setModel(None)
325
+
326
+ else:
327
+ pass
328
+
329
+ return True
330
+
318
331
  else:
319
332
  self.gui.show_warning_toast(f"Graphic object {graphic_object} and device {device} are none")
320
333
  self.object_editor_table.setModel(None)
@@ -346,24 +359,24 @@ class BaseDiagramWidget(QSplitter):
346
359
  if len(selected) > 0:
347
360
 
348
361
  # get the set of all affected GenericDiagramWidget instances
349
- extended: Set[GenericDiagramWidget] = set()
362
+ extended: Set[ALL_DEV_TYPES] = set()
350
363
 
351
364
  for graphic_obj in selected:
352
365
 
353
366
  if graphic_obj is not None:
354
367
  if isinstance(graphic_obj, GenericDiagramWidget):
355
- extended.add(graphic_obj)
368
+ extended.add(graphic_obj.api_object)
356
369
 
357
- for child_graphic in graphic_obj.get_associated_widgets():
358
- if child_graphic is not None:
359
- extended.add(child_graphic)
370
+ for child_item in graphic_obj.get_associated_devices():
371
+ if child_item is not None:
372
+ extended.add(child_item)
360
373
 
361
- extended_lst: List[GenericDiagramWidget] = list(extended)
374
+ extended_lst: List[ALL_DEV_TYPES] = list(extended)
362
375
 
363
376
  dlg = DeleteDialogue(
364
- names_list=[f"{graphic_obj.api_object.device_type.value}: "
365
- f"{graphic_obj.api_object.name}"
366
- for graphic_obj in extended_lst],
377
+ names_list=[f"{device.device_type.value}: "
378
+ f"{device.name}"
379
+ for device in extended_lst],
367
380
  delete_from_db=delete_from_db,
368
381
  title="Delete Selected",
369
382
  checks=False,
@@ -373,9 +386,10 @@ class BaseDiagramWidget(QSplitter):
373
386
  dlg.exec()
374
387
 
375
388
  if dlg.is_accepted:
376
- for graphic_object in extended_lst:
377
- self.remove_element(device=graphic_object.api_object,
378
- graphic_object=graphic_object,
389
+ for device in extended_lst:
390
+
391
+ self.remove_element(device=device,
392
+ graphic_object=self.graphics_manager.query(elm=device),
379
393
  delete_from_db=dlg.delete_from_db)
380
394
 
381
395
  return True, dlg.delete_from_db
@@ -189,6 +189,20 @@ class GenericDiagramWidget:
189
189
  return list()
190
190
 
191
191
 
192
+ def get_associated_devices(self):
193
+
194
+ """
195
+ Get a list of all graphical elements associated with this widget.
196
+ In the case of a BusGraphicsItem, it will be all the shunt connections
197
+ plus the LineGraphicItems connecting to it, etc.
198
+ This function is meant to be overloaded.
199
+ :return:
200
+
201
+ """
202
+
203
+ return list()
204
+
205
+
192
206
  class Polygon(QGraphicsPolygonItem):
193
207
  """
194
208
  PolygonItem