GridCal 5.3.13__tar.gz → 5.3.15__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 (279) hide show
  1. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/AboutDialogue/about_dialogue.py +30 -13
  2. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -1
  3. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +7 -1
  4. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +54 -33
  5. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +12 -4
  6. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +21 -0
  7. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +1 -1
  8. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +53 -3
  9. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/MainWindow.py +222 -216
  10. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +44 -13
  11. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/base_gui.py +3 -0
  12. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/io.py +1 -1
  13. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/simulations.py +82 -8
  14. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/server_driver.py +93 -6
  15. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/session.py +126 -102
  16. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/__version__.py +1 -1
  17. {gridcal-5.3.13 → gridcal-5.3.15}/PKG-INFO +1 -1
  18. {gridcal-5.3.13 → gridcal-5.3.15}/setup.py +1 -0
  19. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ExecuteGridCal.py +0 -0
  20. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  21. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  22. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  23. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  24. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  25. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/__init__.py +0 -0
  26. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/gui.py +0 -0
  27. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  28. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  29. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  30. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  31. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  32. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  33. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  34. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  35. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  36. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  37. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  38. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  39. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  40. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  41. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  42. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  43. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  44. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  45. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  46. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  47. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  48. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  49. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  50. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  51. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  52. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  53. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  54. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  55. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  56. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  57. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  58. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  59. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  60. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  61. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  62. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  63. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  64. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  65. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  66. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  67. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  68. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  69. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  70. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  71. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  72. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  73. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  74. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  75. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  76. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  77. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  78. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  79. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  80. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  81. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  82. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  83. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  84. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  85. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  86. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  87. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  88. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  89. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  90. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  91. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  92. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  93. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  94. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  95. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  96. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  97. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  98. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  99. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  100. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  101. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  102. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  103. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  104. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  105. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/__init__.py +0 -0
  106. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  107. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  108. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  109. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  110. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  111. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  112. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/GridGenerator/gui.py +0 -0
  113. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  114. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  115. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  116. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  117. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  118. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  119. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  120. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  121. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  122. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  123. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  124. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  125. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  126. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  127. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/GridCalMain.py +0 -0
  128. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  129. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  130. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  131. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  132. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  133. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  134. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  135. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  136. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  137. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  138. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  139. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  140. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  141. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  142. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/__init__.py +0 -0
  143. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/icons_rc.py +0 -0
  144. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/object_select_window.py +0 -0
  145. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Main/update_gui_file.py +0 -0
  146. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  147. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  148. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  149. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  150. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  151. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  152. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  153. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  154. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  155. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  156. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  157. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  158. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  159. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  160. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  161. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  162. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  163. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  164. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  165. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  166. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  167. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  168. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  169. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  170. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  171. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  172. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  173. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  174. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  175. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  176. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  177. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  178. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  179. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  180. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  181. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  182. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  183. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  184. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  185. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  186. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  187. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  188. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  189. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  190. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  191. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  192. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  193. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  194. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  195. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  196. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  197. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Visualization/__init__.py +0 -0
  198. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Visualization/visualization.py +0 -0
  199. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Widgets/__init__.py +0 -0
  200. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  201. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  202. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  203. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  204. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  205. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  206. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  207. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/__init__.py +0 -0
  208. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/associations_model.py +0 -0
  209. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/general_dialogues.py +0 -0
  210. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/gui_functions.py +0 -0
  211. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/messages.py +0 -0
  212. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/object_model.py +0 -0
  213. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/pandas_model.py +0 -0
  214. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/plot_config.py +0 -0
  215. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/profiles_model.py +0 -0
  216. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/python_console.py +0 -0
  217. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/python_highlighter.py +0 -0
  218. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/results_model.py +0 -0
  219. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/table_view_header_wrap.py +0 -0
  220. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/themes.py +0 -0
  221. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/update_gui_all.py +0 -0
  222. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/update_gui_common.py +0 -0
  223. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Gui/wrappable_table_model.py +0 -0
  224. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/LICENSE.txt +0 -0
  225. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/__init__.py +0 -0
  226. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/export_results_driver.py +0 -0
  227. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/file_handler.py +0 -0
  228. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/Session/synchronization_driver.py +0 -0
  229. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/__init__.py +0 -0
  230. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  231. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  232. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  233. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  234. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  235. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  236. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  237. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  238. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  239. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  240. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  241. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  242. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  243. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  244. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  245. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  246. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  247. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  248. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  249. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  250. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  251. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  252. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  253. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  254. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  255. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  256. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  257. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  258. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  259. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  260. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  261. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  262. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  263. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  264. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  265. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  266. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  267. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  268. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/__init__.py +0 -0
  269. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/GridCal.ico +0 -0
  270. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/GridCal.svg +0 -0
  271. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/__init__.py +0 -0
  272. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/cables.csv +0 -0
  273. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/sequence_lines.csv +0 -0
  274. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/transformers.csv +0 -0
  275. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/data/wires.csv +0 -0
  276. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/plugins.py +0 -0
  277. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/templates.py +0 -0
  278. {gridcal-5.3.13 → gridcal-5.3.15}/GridCal/update.py +0 -0
  279. {gridcal-5.3.13 → gridcal-5.3.15}/setup.cfg +0 -0
@@ -12,6 +12,9 @@ from GridCal.Gui.AboutDialogue.gui import Ui_AboutDialog
12
12
  from GridCal.__version__ import __GridCal_VERSION__
13
13
  from GridCal.update import check_version, get_upgrade_command
14
14
  from GridCalEngine.__version__ import __GridCalEngine_VERSION__, copyright_msg, contributors_msg
15
+ from GridCalEngine.Compilers.circuit_to_gslv import (GSLV_AVAILABLE,
16
+ GSLV_RECOMMENDED_VERSION,
17
+ GSLV_VERSION)
15
18
  from GridCalEngine.Compilers.circuit_to_newton_pa import (NEWTON_PA_AVAILABLE,
16
19
  NEWTON_PA_RECOMMENDED_VERSION,
17
20
  NEWTON_PA_VERSION)
@@ -27,6 +30,7 @@ class AboutDialogueGuiGUI(QtWidgets.QDialog):
27
30
  """
28
31
  AboutDialogueGuiGUI
29
32
  """
33
+
30
34
  def __init__(self, parent=None):
31
35
  """
32
36
 
@@ -39,7 +43,7 @@ class AboutDialogueGuiGUI(QtWidgets.QDialog):
39
43
  self.setAcceptDrops(True)
40
44
 
41
45
  self.ui.librariesTableWidget.setColumnCount(4)
42
- self.ui.librariesTableWidget.setRowCount(4)
46
+ self.ui.librariesTableWidget.setRowCount(5)
43
47
  self.ui.librariesTableWidget.setHorizontalHeaderLabels(["Name", "version", "supported version", "licensed"])
44
48
 
45
49
  self.ui.librariesTableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem("GridCal"))
@@ -47,26 +51,39 @@ class AboutDialogueGuiGUI(QtWidgets.QDialog):
47
51
  self.ui.librariesTableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(__GridCalEngine_VERSION__))
48
52
  self.ui.librariesTableWidget.setItem(0, 3, QtWidgets.QTableWidgetItem("True"))
49
53
 
50
- self.ui.librariesTableWidget.setItem(1, 0, QtWidgets.QTableWidgetItem("NewtonPa"))
51
- self.ui.librariesTableWidget.setItem(1, 1, QtWidgets.QTableWidgetItem(NEWTON_PA_VERSION
54
+ # GSLV
55
+ self.ui.librariesTableWidget.setItem(1, 0, QtWidgets.QTableWidgetItem("GSLV"))
56
+ self.ui.librariesTableWidget.setItem(1, 1, QtWidgets.QTableWidgetItem(GSLV_VERSION
57
+ if GSLV_AVAILABLE else
58
+ "Not installed"))
59
+
60
+ self.ui.librariesTableWidget.setItem(1, 2, QtWidgets.QTableWidgetItem(GSLV_RECOMMENDED_VERSION))
61
+ self.ui.librariesTableWidget.setItem(1, 3, QtWidgets.QTableWidgetItem(str(GSLV_AVAILABLE)))
62
+
63
+ # Newton
64
+ self.ui.librariesTableWidget.setItem(2, 0, QtWidgets.QTableWidgetItem("NewtonPa"))
65
+ self.ui.librariesTableWidget.setItem(2, 1, QtWidgets.QTableWidgetItem(NEWTON_PA_VERSION
52
66
  if NEWTON_PA_AVAILABLE else
53
67
  "Not installed"))
54
- self.ui.librariesTableWidget.setItem(1, 2, QtWidgets.QTableWidgetItem(NEWTON_PA_RECOMMENDED_VERSION))
55
- self.ui.librariesTableWidget.setItem(1, 3, QtWidgets.QTableWidgetItem(str(NEWTON_PA_AVAILABLE)))
56
68
 
57
- self.ui.librariesTableWidget.setItem(2, 0, QtWidgets.QTableWidgetItem("Bentayga"))
58
- self.ui.librariesTableWidget.setItem(2, 1, QtWidgets.QTableWidgetItem(BENTAYGA_VERSION
69
+ self.ui.librariesTableWidget.setItem(2, 2, QtWidgets.QTableWidgetItem(NEWTON_PA_RECOMMENDED_VERSION))
70
+ self.ui.librariesTableWidget.setItem(2, 3, QtWidgets.QTableWidgetItem(str(NEWTON_PA_AVAILABLE)))
71
+
72
+ # Bentayga
73
+ self.ui.librariesTableWidget.setItem(3, 0, QtWidgets.QTableWidgetItem("Bentayga"))
74
+ self.ui.librariesTableWidget.setItem(3, 1, QtWidgets.QTableWidgetItem(BENTAYGA_VERSION
59
75
  if BENTAYGA_AVAILABLE else
60
76
  "Not installed"))
61
- self.ui.librariesTableWidget.setItem(2, 2, QtWidgets.QTableWidgetItem(BENTAYGA_RECOMMENDED_VERSION))
62
- self.ui.librariesTableWidget.setItem(2, 3, QtWidgets.QTableWidgetItem(str(BENTAYGA_AVAILABLE)))
77
+ self.ui.librariesTableWidget.setItem(3, 2, QtWidgets.QTableWidgetItem(BENTAYGA_RECOMMENDED_VERSION))
78
+ self.ui.librariesTableWidget.setItem(3, 3, QtWidgets.QTableWidgetItem(str(BENTAYGA_AVAILABLE)))
63
79
 
64
- self.ui.librariesTableWidget.setItem(3, 0, QtWidgets.QTableWidgetItem("power-grid-model"))
65
- self.ui.librariesTableWidget.setItem(3, 1, QtWidgets.QTableWidgetItem(PGM_VERSION
80
+ # PGM
81
+ self.ui.librariesTableWidget.setItem(4, 0, QtWidgets.QTableWidgetItem("power-grid-model"))
82
+ self.ui.librariesTableWidget.setItem(4, 1, QtWidgets.QTableWidgetItem(PGM_VERSION
66
83
  if PGM_AVAILABLE else
67
84
  "Not installed"))
68
- self.ui.librariesTableWidget.setItem(3, 2, QtWidgets.QTableWidgetItem(PGM_RECOMMENDED_VERSION))
69
- self.ui.librariesTableWidget.setItem(3, 3, QtWidgets.QTableWidgetItem(str(PGM_AVAILABLE)))
85
+ self.ui.librariesTableWidget.setItem(4, 2, QtWidgets.QTableWidgetItem(PGM_RECOMMENDED_VERSION))
86
+ self.ui.librariesTableWidget.setItem(4, 3, QtWidgets.QTableWidgetItem(str(PGM_AVAILABLE)))
70
87
 
71
88
  # check the version in pypi
72
89
  version_code, latest_version = check_version()
@@ -234,7 +234,6 @@ class MapLineContainer(GenericDiagramWidget):
234
234
  # draw the segment in the scene
235
235
  self.editor.add_to_scene(graphic_object=segment_graphic_object)
236
236
 
237
-
238
237
  self.update_connectors()
239
238
 
240
239
  # self.editor.update_device_sizes()
@@ -41,7 +41,13 @@ class MapLineSegment(QGraphicsLineItem):
41
41
  self.draw_labels = True
42
42
 
43
43
  self.style = Qt.PenStyle.SolidLine
44
- self.color = QColor(115, 115, 115, 200) # translucent gray
44
+ # self.color = QColor(115, 115, 115, 200) # translucent gray
45
+
46
+ self.color = QColor(self.api_object.color)
47
+ self.color.setAlpha(128)
48
+ self.hoover_color = QColor(self.api_object.color)
49
+ self.hoover_color.setAlpha(180)
50
+
45
51
  self.width = 0.1
46
52
 
47
53
  self.pos1: QPointF = self.first.get_center_pos()
@@ -14,10 +14,8 @@ from matplotlib import pyplot as plt
14
14
 
15
15
  from PySide6.QtWidgets import QGraphicsItem
16
16
  from collections.abc import Callable
17
- from PySide6.QtSvg import QSvgGenerator
18
- from PySide6.QtCore import (Qt, QSize, QRect, QMimeData, QIODevice, QByteArray, QDataStream, QModelIndex,
19
- QRunnable, QThreadPool)
20
- from PySide6.QtGui import (QIcon, QPixmap, QImage, QPainter, QStandardItemModel, QStandardItem, QColor, QDropEvent)
17
+ from PySide6.QtCore import (Qt, QMimeData, QIODevice, QByteArray, QDataStream, QModelIndex, QRunnable, QThreadPool)
18
+ from PySide6.QtGui import (QIcon, QPixmap, QImage, QStandardItemModel, QStandardItem, QColor, QDropEvent)
21
19
 
22
20
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_container import MapLineContainer
23
21
  from GridCal.Gui.SubstationDesigner.substation_designer import SubstationDesigner
@@ -38,6 +36,7 @@ from GridCalEngine.Devices.types import ALL_DEV_TYPES
38
36
  from GridCalEngine.basic_structures import Logger
39
37
  from GridCalEngine.Simulations.OPF.opf_ts_results import OptimalPowerFlowTimeSeriesResults
40
38
  from GridCalEngine.Simulations.PowerFlow.power_flow_ts_results import PowerFlowTimeSeriesResults
39
+ from GridCalEngine.enumerations import Colormaps
41
40
 
42
41
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_ac_line import MapAcLine
43
42
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_dc_line import MapDcLine
@@ -144,7 +143,7 @@ class MapLibraryModel(QStandardItemModel):
144
143
  @param idxs:
145
144
  @return:
146
145
  """
147
- mimedata = QMimeData()
146
+ mime_data = QMimeData()
148
147
  for idx in idxs:
149
148
  if idx.isValid():
150
149
  txt = self.data(idx, Qt.ItemDataRole.DisplayRole)
@@ -153,8 +152,8 @@ class MapLibraryModel(QStandardItemModel):
153
152
  stream = QDataStream(data, QIODevice.WriteOnly)
154
153
  stream.writeQString(txt)
155
154
 
156
- mimedata.setData('component/name', data)
157
- return mimedata
155
+ mime_data.setData('component/name', data)
156
+ return mime_data
158
157
 
159
158
  def flags(self, index: QModelIndex) -> Qt.ItemFlag:
160
159
  """
@@ -323,7 +322,6 @@ class GridMapWidget(BaseDiagramWidget):
323
322
  if self.map.level - 1 >= self.map.min_level:
324
323
  self.map.zoom_level(level=self.map.level - 1)
325
324
 
326
-
327
325
  def to_lat_lon(self, x: float, y: float) -> Tuple[float, float]:
328
326
  """
329
327
  Convert x, y position in the map to latitude and longitude
@@ -550,9 +548,15 @@ class GridMapWidget(BaseDiagramWidget):
550
548
  :param lon:
551
549
  :return:
552
550
  """
553
- graphic_object = SubstationGraphicItem(editor=self, api_object=api_object, lat=lat, lon=lon,
551
+ graphic_object = SubstationGraphicItem(editor=self,
552
+ api_object=api_object,
553
+ lat=lat,
554
+ lon=lon,
554
555
  r=self.diagram.min_bus_width)
555
- self.graphics_manager.add_device(elm=api_object, graphic=graphic_object)
556
+
557
+ self.graphics_manager.add_device(elm=api_object,
558
+ graphic=graphic_object)
559
+
556
560
  self.add_to_scene(graphic_object=graphic_object)
557
561
 
558
562
  return graphic_object
@@ -1232,16 +1236,26 @@ class GridMapWidget(BaseDiagramWidget):
1232
1236
  info_msg("There are no time series, so nothing to plot :/")
1233
1237
 
1234
1238
 
1235
- def generate_map_diagram(substations: List[Substation],
1236
- voltage_levels: List[VoltageLevel],
1237
- lines: List[Line],
1238
- dc_lines: List[DcLine],
1239
- hvdc_lines: List[HvdcLine],
1240
- fluid_nodes: List[FluidNode],
1241
- fluid_paths: List[FluidPath],
1242
- prog_func: Union[Callable, None] = None,
1243
- text_func: Union[Callable, None] = None,
1244
- name='Map diagram') -> MapDiagram:
1239
+ def generate_map_diagram(
1240
+ substations: List[Substation],
1241
+ voltage_levels: List[VoltageLevel],
1242
+ lines: List[Line],
1243
+ dc_lines: List[DcLine],
1244
+ hvdc_lines: List[HvdcLine],
1245
+ fluid_nodes: List[FluidNode],
1246
+ fluid_paths: List[FluidPath],
1247
+ prog_func: Union[Callable, None] = None,
1248
+ text_func: Union[Callable, None] = None,
1249
+ name='Map diagram',
1250
+ use_flow_based_width: bool = False,
1251
+ min_branch_width: int = 1.0,
1252
+ max_branch_width=5,
1253
+ min_bus_width=1.0,
1254
+ max_bus_width=20,
1255
+ arrow_size=20,
1256
+ palette: Colormaps = Colormaps.GridCal,
1257
+ default_bus_voltage: float = 10
1258
+ ) -> MapDiagram:
1245
1259
  """
1246
1260
  Add a elements to the schematic scene
1247
1261
  :param substations: list of Substation objects
@@ -1254,9 +1268,27 @@ def generate_map_diagram(substations: List[Substation],
1254
1268
  :param prog_func: progress report function
1255
1269
  :param text_func: Text report function
1256
1270
  :param name: name of the diagram
1271
+ :param use_flow_based_width: use flow based width
1272
+ :param min_branch_width: minimum branch width
1273
+ :param max_branch_width: maximum branch width
1274
+ :param min_bus_width:
1275
+ :param max_bus_width: maximum bus width
1276
+ :param arrow_size: arrow size
1277
+ :param palette: Colormaps
1278
+ :param default_bus_voltage: default bus voltage
1257
1279
  """
1258
1280
 
1259
- diagram = MapDiagram(name=name)
1281
+ diagram = MapDiagram(
1282
+ name=name,
1283
+ use_flow_based_width=use_flow_based_width,
1284
+ min_branch_width=min_branch_width,
1285
+ max_branch_width=max_branch_width,
1286
+ min_bus_width=min_bus_width,
1287
+ max_bus_width=max_bus_width,
1288
+ arrow_size=arrow_size,
1289
+ palette=palette,
1290
+ default_bus_voltage=default_bus_voltage
1291
+ )
1260
1292
 
1261
1293
  # first create the buses
1262
1294
  if text_func is not None:
@@ -1311,21 +1343,11 @@ def generate_map_diagram(substations: List[Substation],
1311
1343
  diagram.set_point(device=branch, location=MapLocation())
1312
1344
 
1313
1345
  # register all the line locations
1314
- # if branch.bus_from is not None:
1315
- # diagram.set_point(device=branch.bus_from, location=MapLocation(latitude=branch.bus_from.latitude,
1316
- # longitude=branch.bus_from.longitude,
1317
- # altitude=0))
1318
-
1319
1346
  for loc in branch.locations.get_locations():
1320
1347
  diagram.set_point(device=loc, location=MapLocation(latitude=loc.lat,
1321
1348
  longitude=loc.long,
1322
1349
  altitude=loc.alt))
1323
1350
 
1324
- # if branch.bus_to is not None:
1325
- # diagram.set_point(device=branch.bus_to, location=MapLocation(latitude=branch.bus_to.latitude,
1326
- # longitude=branch.bus_to.longitude,
1327
- # altitude=0))
1328
-
1329
1351
  # --------------------------------------------------------------------------------------------------------------
1330
1352
  if text_func is not None:
1331
1353
  text_func('Creating schematic line devices')
@@ -1374,7 +1396,6 @@ def generate_map_diagram(substations: List[Substation],
1374
1396
  if prog_func is not None:
1375
1397
  prog_func((i + 1) / nn * 100.0)
1376
1398
 
1377
- # branch.graphic_obj = self.add_api_upfc(branch)
1378
1399
  diagram.set_point(device=elm, location=MapLocation())
1379
1400
 
1380
1401
  # register all the line locations
@@ -1383,7 +1404,7 @@ def generate_map_diagram(substations: List[Substation],
1383
1404
  longitude=loc.long,
1384
1405
  altitude=loc.alt))
1385
1406
 
1386
- # find the diagram cented and set it internally
1407
+ # find the diagram centre and set it internally
1387
1408
  diagram.set_center()
1388
1409
 
1389
1410
  return diagram
@@ -134,10 +134,18 @@ class GeneratorGraphicItem(InjectionTemplateGraphicItem):
134
134
 
135
135
  menu.addSeparator()
136
136
 
137
- add_menu_entry(menu=menu,
138
- text="Delete",
139
- icon_path=":/Icons/icons/delete3.svg",
140
- function_ptr=self.remove)
137
+ # add_menu_entry(menu=menu,
138
+ # text="Delete",
139
+ # icon_path=":/Icons/icons/delete3.svg",
140
+ # function_ptr=self.remove)
141
+
142
+ add_menu_entry(menu, text='Remove from schematic and DB',
143
+ icon_path=":/Icons/icons/delete_db.svg",
144
+ function_ptr=lambda: self.remove_from_widget_and_db(ask=True, delete_from_db=True))
145
+
146
+ add_menu_entry(menu, text='Remove from schematic',
147
+ icon_path=":/Icons/icons/delete_schematic.svg",
148
+ function_ptr=lambda: self.remove_from_widget_and_db(ask=True, delete_from_db=False))
141
149
 
142
150
  add_menu_entry(menu=menu,
143
151
  text="Convert to battery",
@@ -100,6 +100,27 @@ class InjectionTemplateGraphicItem(GenericDiagramWidget, QGraphicsItemGroup):
100
100
  self.editor.remove_from_scene(self.nexus)
101
101
  self.editor.remove_element(device=self.api_object, graphic_object=self)
102
102
  self.editor.remove_from_scene(self)
103
+ self.editor.delete_diagram_element(device=self.api_object)
104
+
105
+ def remove_from_widget_and_db(self, ask: bool = True, delete_from_db: bool = True) -> None:
106
+ """
107
+ Remove this element
108
+ @return:
109
+ """
110
+ if ask:
111
+ ok = yes_no_question('Are you sure that you want to remove this device',
112
+ 'Remove bus from schematic and DB' if delete_from_db else "Remove bus from schematic")
113
+ else:
114
+ ok = True
115
+
116
+ if ok:
117
+ self.editor.remove_element(device=self.api_object,
118
+ graphic_object=self,
119
+ delete_from_db=delete_from_db)
120
+
121
+ self.editor.remove_from_scene(self.nexus)
122
+ self.editor.remove_from_scene(self)
123
+ # self.editor.delete_diagram_element(device=self.api_object)
103
124
 
104
125
  def mousePressEvent(self, QGraphicsSceneMouseEvent):
105
126
  """
@@ -532,7 +532,7 @@ class BusGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
532
532
  """
533
533
  if ask:
534
534
  ok = yes_no_question('Are you sure that you want to remove this bus',
535
- 'Remove bus from schamatic and DB' if delete_from_db else "Remove bus from schamatic")
535
+ 'Remove bus from schematic and DB' if delete_from_db else "Remove bus from schematic")
536
536
  else:
537
537
  ok = True
538
538
 
@@ -1116,6 +1116,9 @@ class SchematicWidget(BaseDiagramWidget):
1116
1116
  # remove the buses (from the schematic and the circuit)
1117
1117
  for bus, graphic_obj in selected:
1118
1118
  self.remove_element(device=bus, graphic_object=graphic_obj, delete_from_db=False)
1119
+ self.remove_from_scene(graphic_obj)
1120
+ if hasattr(graphic_obj, 'nexus'):
1121
+ self.remove_from_scene(graphic_obj.nexus)
1119
1122
  else:
1120
1123
  pass
1121
1124
  else:
@@ -1916,7 +1919,7 @@ class SchematicWidget(BaseDiagramWidget):
1916
1919
 
1917
1920
  transformer = pyproj.Transformer.from_crs(4326, 25830, always_xy=True)
1918
1921
 
1919
- # the longitude is more reated to x, the latitude is more related to y
1922
+ # the longitude is more related to x, the latitude is more related to y
1920
1923
  y, x = transformer.transform(xx=lon, yy=lat)
1921
1924
  x *= - factor
1922
1925
  y *= - factor
@@ -1937,6 +1940,53 @@ class SchematicWidget(BaseDiagramWidget):
1937
1940
  bus.y = y[i]
1938
1941
  i += 1
1939
1942
 
1943
+ def rotate(self, angle_degrees):
1944
+ """
1945
+ Rotates a list of points around a given pivot by a specified angle.
1946
+
1947
+ Parameters:
1948
+ angle_degrees (float): The rotation angle in degrees.
1949
+
1950
+ Returns:
1951
+ list of tuples: The rotated points.
1952
+ """
1953
+
1954
+ # get the buses info
1955
+ buses_info_list = self.get_buses()
1956
+
1957
+ # gather the coordinates
1958
+ n = len(buses_info_list)
1959
+ X = np.zeros(n)
1960
+ Y = np.zeros(n)
1961
+ for i in range(n):
1962
+ idx, bus, graphic_object = buses_info_list[i]
1963
+ X[i] = graphic_object.pos().x()
1964
+ Y[i] = graphic_object.pos().y()
1965
+
1966
+ # compute the center
1967
+ cx = np.mean(X)
1968
+ cy = np.mean(Y)
1969
+
1970
+ # compute the sin and cos
1971
+ angle_rad = np.deg2rad(angle_degrees)
1972
+ cos_a = np.cos(angle_rad)
1973
+ sin_a = np.sin(angle_rad)
1974
+ for i in range(n):
1975
+ idx, bus, graphic_object = buses_info_list[i]
1976
+
1977
+ # Translate the point to the origin relative to the pivot
1978
+ x_rel = X[i] - cx
1979
+ y_rel = Y[i] - cy
1980
+
1981
+ # Rotate the point
1982
+ x_rot = x_rel * cos_a - y_rel * sin_a
1983
+ y_rot = x_rel * sin_a + y_rel * cos_a
1984
+
1985
+ # Translate back to the original coordinate system
1986
+ x_new = x_rot + cx
1987
+ y_new = y_rot + cy
1988
+ graphic_object.set_position(x_new, y_new)
1989
+
1940
1990
  def get_image(self, transparent: bool = False) -> QImage:
1941
1991
  """
1942
1992
  get the current picture
@@ -3423,7 +3473,7 @@ class SchematicWidget(BaseDiagramWidget):
3423
3473
  Va=vang[i],
3424
3474
  P=Sbus[i].real if Sbus is not None else None,
3425
3475
  Q=Sbus[i].imag if Sbus is not None else None,
3426
- tpe=bus_types[types[i]] if types is not None else None)
3476
+ tpe=bus_types[int(types[i])] if types is not None else None)
3427
3477
 
3428
3478
  if use_flow_based_width:
3429
3479
  graphic_object.change_size(w=graphic_object.w)
@@ -3729,7 +3779,7 @@ class SchematicWidget(BaseDiagramWidget):
3729
3779
  Va=vang[i],
3730
3780
  P=Sbus[i].real if Sbus is not None else None,
3731
3781
  Q=Sbus[i].imag if Sbus is not None else None,
3732
- tpe=bus_types[types[i]] if types is not None else None,
3782
+ tpe=bus_types[int(types[i])] if types is not None else None,
3733
3783
  fluid_node_p2x_flow=fluid_node_p2x_flow[i] if fluid_node_p2x_flow is not None else None,
3734
3784
  fluid_node_current_level=fluid_node_current_level[
3735
3785
  i] if fluid_node_current_level is not None else None,