GridCal 5.1.38__tar.gz → 5.1.40__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 (281) hide show
  1. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +24 -6
  2. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +77 -16
  3. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +2 -2
  4. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +26 -4
  5. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +2 -2
  6. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +2 -2
  7. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +1 -1
  8. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +137 -127
  9. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +3 -3
  10. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +2 -2
  11. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +1 -1
  12. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +1 -1
  13. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +1 -1
  14. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +4 -3
  15. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Model/time_events.py +19 -12
  16. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Results/results.py +1 -1
  17. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/profile_dialogue.py +71 -47
  18. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +1 -1
  19. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/server_driver.py +13 -62
  20. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/session.py +1 -1
  21. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/__version__.py +1 -1
  22. {GridCal-5.1.38 → GridCal-5.1.40}/PKG-INFO +1 -1
  23. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ExecuteGridCal.py +0 -0
  24. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  25. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  26. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  27. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  28. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  29. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  30. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/__init__.py +0 -0
  31. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/gui.py +0 -0
  32. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  33. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  34. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  35. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  36. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  37. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  38. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  39. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  40. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  41. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  42. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  43. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  44. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  45. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  46. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  47. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  48. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  49. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  50. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  51. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  52. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  53. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  54. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  55. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  56. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
  57. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  58. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  59. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  60. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  61. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  62. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  63. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  64. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  65. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  66. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  67. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  68. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  69. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  70. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  71. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  72. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  73. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  74. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  75. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  76. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  77. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  78. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  79. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  80. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  81. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  82. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  83. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  84. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  85. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  86. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  87. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  88. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  89. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  90. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  91. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  92. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  93. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  94. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  95. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  96. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  97. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  98. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  99. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  100. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  101. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  102. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  103. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  104. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  105. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  106. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  107. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  108. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  109. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/__init__.py +0 -0
  110. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  111. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  112. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  113. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  114. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  115. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  116. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/GridGenerator/gui.py +0 -0
  117. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  118. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  119. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  120. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  121. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  122. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  123. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  124. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  125. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  126. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  127. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  128. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  129. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  130. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  131. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/GridCalMain.py +0 -0
  132. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/MainWindow.py +0 -0
  133. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  134. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  135. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
  136. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  137. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  138. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  139. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  140. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  141. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  142. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  143. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  144. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  145. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  146. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  147. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  148. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  149. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  150. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/__init__.py +0 -0
  151. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/icons_rc.py +0 -0
  152. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/object_select_window.py +0 -0
  153. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Main/update_gui_file.py +0 -0
  154. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  155. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  156. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  157. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  158. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  159. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  160. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  161. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  162. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  163. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  164. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  165. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  166. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  167. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  168. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  169. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  170. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  171. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  172. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  173. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  174. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  175. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  176. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  177. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  178. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  179. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  180. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  181. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  182. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  183. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  184. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  185. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  186. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  187. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  188. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  189. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  190. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  191. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  192. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  193. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  194. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  195. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  196. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  197. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  198. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  199. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  200. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  201. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Visualization/__init__.py +0 -0
  202. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Visualization/visualization.py +0 -0
  203. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Widgets/__init__.py +0 -0
  204. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  205. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  206. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  207. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  208. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  209. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  210. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  211. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/__init__.py +0 -0
  212. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/associations_model.py +0 -0
  213. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/console_widget.py +0 -0
  214. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/general_dialogues.py +0 -0
  215. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/gui_functions.py +0 -0
  216. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/messages.py +0 -0
  217. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/object_model.py +0 -0
  218. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/pandas_model.py +0 -0
  219. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/plot_config.py +0 -0
  220. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/profiles_model.py +0 -0
  221. {GridCal-5.1.38/GridCal/Session → GridCal-5.1.40/GridCal/Gui}/results_model.py +0 -0
  222. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/table_view_header_wrap.py +0 -0
  223. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/themes.py +0 -0
  224. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/update_gui_all.py +0 -0
  225. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/update_gui_common.py +0 -0
  226. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Gui/wrappable_table_model.py +0 -0
  227. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/LICENSE.txt +0 -0
  228. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/__init__.py +0 -0
  229. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/export_results_driver.py +0 -0
  230. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/file_handler.py +0 -0
  231. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/Session/synchronization_driver.py +0 -0
  232. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/__init__.py +0 -0
  233. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  234. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  235. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  236. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  237. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  238. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  239. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  240. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  241. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  242. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  243. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  244. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  245. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  246. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  247. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  248. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  249. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  250. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  251. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  252. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  253. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  254. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  255. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  256. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  257. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  258. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  259. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  260. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  261. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  262. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  263. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  264. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  265. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  266. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  267. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  268. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  269. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  270. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  271. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/__init__.py +0 -0
  272. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/data/__init__.py +0 -0
  273. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/data/cables.csv +0 -0
  274. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/data/sequence_lines.csv +0 -0
  275. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/data/transformers.csv +0 -0
  276. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/data/wires.csv +0 -0
  277. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/plugins.py +0 -0
  278. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/templates.py +0 -0
  279. {GridCal-5.1.38 → GridCal-5.1.40}/GridCal/update.py +0 -0
  280. {GridCal-5.1.38 → GridCal-5.1.40}/setup.cfg +0 -0
  281. {GridCal-5.1.38 → GridCal-5.1.40}/setup.py +0 -0
@@ -72,9 +72,9 @@ class MapLineContainer(GenericDiagramWidget):
72
72
  :param val:
73
73
  """
74
74
  for segment in self.segments_list:
75
- pen = segment.pen() # get the current pen
76
- pen.setWidthF(val * segment.width) # Set the fractional thickness of the line
77
- segment.setPen(pen) # Assign the pen to the line item
75
+ # pen = segment.pen() # get the current pen
76
+ # pen.setWidthF(val * segment.width) # Set the fractional thickness of the line
77
+ segment.set_width(val * segment.width) # Assign the pen to the line item
78
78
 
79
79
  def clean_segments(self) -> None:
80
80
  """
@@ -132,10 +132,8 @@ class MapLineContainer(GenericDiagramWidget):
132
132
  :return:
133
133
  """
134
134
  for segment in self.segments_list:
135
- segment.setPen(QPen(color, w, style))
136
135
  segment.setToolTip(tool_tip)
137
- # segment.setPen(Qt.NoPen)
138
- # segment.setBrush(color)
136
+ segment.set_colour(color=color, w=w, style=style)
139
137
 
140
138
  def update_connectors(self) -> None:
141
139
  """
@@ -463,3 +461,23 @@ class MapLineContainer(GenericDiagramWidget):
463
461
 
464
462
  for line in self.segments_list:
465
463
  line.set_enable(val=False)
464
+
465
+ def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
466
+ """
467
+
468
+ :param Sf:
469
+ :param St:
470
+ :return:
471
+ """
472
+ for segment in self.segments_list:
473
+ segment.set_arrows_with_power(Sf=Sf, St=St)
474
+
475
+ def set_arrows_with_hvdc_power(self, Pf: float, Pt: float) -> None:
476
+ """
477
+
478
+ :param Pf:
479
+ :param Pt:
480
+ :return:
481
+ """
482
+ for segment in self.segments_list:
483
+ segment.set_arrows_with_hvdc_power(Pf=Pf, Pt=Pt)
@@ -21,6 +21,7 @@ from PySide6.QtGui import QPen, QColor, QCursor
21
21
  from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent
22
22
  from PySide6.QtWidgets import QGraphicsLineItem, QGraphicsSceneMouseEvent
23
23
 
24
+ from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_graphics_template import ArrowHead
24
25
  from GridCal.Gui.gui_functions import add_menu_entry
25
26
  from GridCal.Gui.messages import yes_no_question
26
27
  from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER
@@ -52,13 +53,26 @@ class MapLineSegment(QGraphicsLineItem):
52
53
  self.container: MapLineContainer = container
53
54
  self.draw_labels = True
54
55
 
55
- self.style = Qt.SolidLine
56
- self.color = Qt.blue
56
+ self.style = Qt.PenStyle.SolidLine
57
+ self.color = QColor(115, 115, 115, 200) # translucent gray
57
58
  self.width = 0.1
58
59
 
59
60
  self.pos1: QPointF = self.first.get_center_pos()
60
61
  self.pos2: QPointF = self.second.get_center_pos()
61
62
 
63
+ # arrows
64
+ self.view_arrows = True
65
+ self._arrow_size = self.width * 1.5
66
+ self.arrow_p_from = ArrowHead(parent=self, arrow_size=self._arrow_size, position=0.2, under=False,
67
+ text_scale=0.01, show_text=False)
68
+ self.arrow_q_from = ArrowHead(parent=self, arrow_size=self._arrow_size, position=0.2, under=True,
69
+ text_scale=0.01, show_text=False)
70
+ self.arrow_p_to = ArrowHead(parent=self, arrow_size=self._arrow_size, position=0.8, under=False,
71
+ text_scale=0.01, show_text=False)
72
+ self.arrow_q_to = ArrowHead(parent=self, arrow_size=self._arrow_size, position=0.8, under=True,
73
+ text_scale=0.01, show_text=False)
74
+
75
+ # set callbacks
62
76
  self.first.add_position_change_callback(self.set_from_side_coordinates)
63
77
  self.second.add_position_change_callback(self.set_to_side_coordinates)
64
78
 
@@ -68,7 +82,7 @@ class MapLineSegment(QGraphicsLineItem):
68
82
  self.setZValue(0)
69
83
 
70
84
  self.setFlag(self.GraphicsItemFlag.ItemIsSelectable, True)
71
- self.setCursor(QCursor(Qt.PointingHandCursor))
85
+ self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
72
86
 
73
87
  @property
74
88
  def api_object(self) -> BRANCH_TYPES:
@@ -86,6 +100,21 @@ class MapLineSegment(QGraphicsLineItem):
86
100
  """
87
101
  return self.container.editor
88
102
 
103
+ def set_width(self, width: float):
104
+ """
105
+
106
+ :param width:
107
+ :return:
108
+ """
109
+ pen = self.pen()
110
+ pen.setWidthF(width)
111
+ self.setPen(pen)
112
+
113
+ self.arrow_p_from.label.setScale(width)
114
+ self.arrow_q_from.label.setScale(width)
115
+ self.arrow_p_to.label.setScale(width)
116
+ self.arrow_q_to.label.setScale(width)
117
+
89
118
  def set_colour(self, color: QColor, w: float, style: Qt.PenStyle):
90
119
  """
91
120
  Set color and style
@@ -95,10 +124,14 @@ class MapLineSegment(QGraphicsLineItem):
95
124
  :return:
96
125
  """
97
126
 
98
- pen = QPen(color, w, style, Qt.RoundCap, Qt.RoundJoin)
127
+ pen = QPen(color, w, style, Qt.PenCapStyle.RoundCap, Qt.PenJoinStyle.RoundJoin)
99
128
  pen.setWidthF(w)
100
129
 
101
130
  self.setPen(pen)
131
+ self.arrow_p_from.set_colour(color, w, style)
132
+ self.arrow_q_from.set_colour(color, w, style)
133
+ self.arrow_p_to.set_colour(color, w, style)
134
+ self.arrow_q_to.set_colour(color, w, style)
102
135
 
103
136
  def set_from_side_coordinates(self, x: float, y: float):
104
137
  """
@@ -125,13 +158,15 @@ class MapLineSegment(QGraphicsLineItem):
125
158
  Update the endings of this segment
126
159
  """
127
160
  self.setLine(QLineF(self.pos1, self.pos2))
128
- # Get the positions of the first and second objects
129
- # if self.first.needsUpdate or self.second.needsUpdate or force:
130
- # # Set the line's starting and ending points
131
- # self.setLine(self.first.rect().x(),
132
- # self.first.rect().y(),
133
- # self.second.rect().x(),
134
- # self.second.rect().y())
161
+
162
+ if self.api_object is not None:
163
+
164
+ # arrows
165
+ if self.view_arrows:
166
+ self.arrow_p_from.redraw()
167
+ self.arrow_q_from.redraw()
168
+ self.arrow_p_to.redraw()
169
+ self.arrow_q_to.redraw()
135
170
 
136
171
  def end_update(self) -> None:
137
172
  """
@@ -158,11 +193,6 @@ class MapLineSegment(QGraphicsLineItem):
158
193
  """
159
194
  menu = QMenu()
160
195
 
161
- # add_menu_entry(menu=menu,
162
- # text="Remove",
163
- # icon_path="",
164
- # function_ptr=self.RemoveFunction)
165
-
166
196
  menu.addSection("Line")
167
197
 
168
198
  add_menu_entry(menu=menu,
@@ -360,3 +390,34 @@ class MapLineSegment(QGraphicsLineItem):
360
390
  if ok:
361
391
  self.editor.circuit.delete_branch(obj=self.api_object)
362
392
  self.editor.delete_diagram_element(device=self.api_object)
393
+
394
+ def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
395
+ """
396
+ Set the arrow directions
397
+ :param Sf: Complex power from
398
+ :param St: Complex power to
399
+ """
400
+
401
+ if Sf is not None:
402
+ if St is None:
403
+ St = -Sf
404
+
405
+ Pf = Sf.real
406
+ Qf = Sf.imag
407
+ Pt = St.real
408
+ Qt_ = St.imag
409
+ self.arrow_p_from.set_value(Pf, True, Pf < 0, name="Pf", units="MW", draw_label=self.draw_labels)
410
+ self.arrow_q_from.set_value(Qf, True, Qf < 0, name="Qf", units="MVAr", draw_label=self.draw_labels)
411
+ self.arrow_p_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
412
+ self.arrow_q_to.set_value(Qt_, True, Qt_ > 0, name="Qt", units="MVAr", draw_label=self.draw_labels)
413
+
414
+ def set_arrows_with_hvdc_power(self, Pf: float, Pt: float) -> None:
415
+ """
416
+ Set the arrow directions
417
+ :param Pf: Complex power from
418
+ :param Pt: Complex power to
419
+ """
420
+ self.arrow_p_from.set_value(Pf, True, Pf < 0, name="Pf", units="MW", draw_label=self.draw_labels)
421
+ self.arrow_q_from.set_value(Pf, True, Pf < 0, name="Pf", units="MW", draw_label=self.draw_labels)
422
+ self.arrow_p_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
423
+ self.arrow_q_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
@@ -374,14 +374,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
374
374
  max_value=100000.0,
375
375
  default_value=self.editor.diagram.default_bus_voltage,
376
376
  title="Add voltage level",
377
- text="Voltage (kV)",
377
+ text="Voltage (KV)",
378
378
  )
379
379
 
380
380
  inpt.exec()
381
381
 
382
382
  if inpt.is_accepted:
383
383
  kv = inpt.value
384
- vl = VoltageLevel(name=f'{kv}kV @ {self.api_object.name}',
384
+ vl = VoltageLevel(name=f'{kv}KV @ {self.api_object.name}',
385
385
  Vnom=kv,
386
386
  substation=self.api_object)
387
387
 
@@ -245,7 +245,7 @@ class GridMapWidget(BaseDiagramWidget):
245
245
  position_callback=self.position_callback)
246
246
 
247
247
  # Any representation on the map must be done after this Goto Function
248
- self.map.GotoLevelAndPosition(level=6, longitude=0, latitude=40)
248
+ self.map.GotoLevelAndPosition(level=6, longitude=longitude, latitude=latitude)
249
249
 
250
250
  self.map.startLev = 6
251
251
  self.map.startLat = 0
@@ -994,7 +994,7 @@ class GridMapWidget(BaseDiagramWidget):
994
994
  #
995
995
  # tooltip = str(i) + ': ' + bus.name + '\n' \
996
996
  # + 'V:' + "{:10.4f}".format(vabs[i]) + " <{:10.4f}".format(vang[i]) + 'º [p.u.]\n' \
997
- # + 'V:' + "{:10.4f}".format(vabs[i] * bus.Vnom) + " <{:10.4f}".format(vang[i]) + 'º [kV]'
997
+ # + 'V:' + "{:10.4f}".format(vabs[i] * bus.Vnom) + " <{:10.4f}".format(vang[i]) + 'º [KV]'
998
998
  # if Sbus is not None:
999
999
  # tooltip += '\nS: ' + "{:10.4f}".format(Sbus[i] * Sbase) + ' [MVA]'
1000
1000
  # if types is not None:
@@ -1059,7 +1059,7 @@ class GridMapWidget(BaseDiagramWidget):
1059
1059
  a *= 255
1060
1060
 
1061
1061
  color = QColor(r, g, b, a)
1062
- style = Qt.SolidLine
1062
+ style = Qt.PenStyle.SolidLine
1063
1063
  if use_flow_based_width:
1064
1064
  weight = int(
1065
1065
  np.floor(min_branch_width + Sfnorm[i] * (max_branch_width - min_branch_width) * 0.1))
@@ -1068,6 +1068,15 @@ class GridMapWidget(BaseDiagramWidget):
1068
1068
 
1069
1069
  graphic_object.set_colour(color=color, w=weight, style=style, tool_tip=tooltip)
1070
1070
 
1071
+ if hasattr(graphic_object, 'set_arrows_with_power'):
1072
+ graphic_object.set_arrows_with_power(
1073
+ Sf=Sf[i] if Sf is not None else None,
1074
+ St=St[i] if St is not None else None
1075
+ )
1076
+ else:
1077
+ # the graphic object is None
1078
+ pass
1079
+
1071
1080
  # try colouring the HVDC lines
1072
1081
  if len(hvdc_lines) > 0:
1073
1082
 
@@ -1110,13 +1119,26 @@ class GridMapWidget(BaseDiagramWidget):
1110
1119
  a *= 255
1111
1120
 
1112
1121
  color = QColor(r, g, b, a)
1113
- style = Qt.SolidLine
1122
+ style = Qt.PenStyle.SolidLine
1114
1123
  if use_flow_based_width:
1115
1124
  weight = int(
1116
1125
  np.floor(min_branch_width + Sfnorm[i] * (max_branch_width - min_branch_width) * 0.1))
1117
1126
  else:
1118
1127
  weight = 0.5
1119
1128
 
1129
+ tooltip = str(i) + ': ' + graphic_object.api_object.name
1130
+ tooltip += '\n' + loading_label + ': ' + "{:10.4f}".format(
1131
+ abs(hvdc_loading[i]) * 100) + ' [%]'
1132
+
1133
+ tooltip += '\nPower (from):\t' + "{:10.4f}".format(hvdc_Pf[i]) + ' [MW]'
1134
+
1135
+ if hvdc_losses is not None:
1136
+ tooltip += '\nPower (to):\t' + "{:10.4f}".format(hvdc_Pt[i]) + ' [MW]'
1137
+ tooltip += '\nLosses: \t\t' + "{:10.4f}".format(hvdc_losses[i]) + ' [MW]'
1138
+ graphic_object.set_arrows_with_hvdc_power(Pf=hvdc_Pf[i], Pt=hvdc_Pt[i])
1139
+ else:
1140
+ graphic_object.set_arrows_with_hvdc_power(Pf=hvdc_Pf[i], Pt=-hvdc_Pf[i])
1141
+
1120
1142
  graphic_object.set_colour(color=color, w=weight, style=style, tool_tip=tooltip)
1121
1143
 
1122
1144
  def get_image(self, transparent: bool = False) -> Tuple[QImage, int, int]:
@@ -73,7 +73,7 @@ class DcLineEditor(QDialog):
73
73
  # X = self.branch.X * Zbase
74
74
  # B = self.branch.B * Ybase
75
75
 
76
- I = self.branch.rate / Vf # current in kA
76
+ I = self.branch.rate / Vf # current in KA
77
77
 
78
78
  # ------------------------------------------------------------------------------------------
79
79
 
@@ -177,7 +177,7 @@ class DcLineEditor(QDialog):
177
177
  Vf = self.branch.bus_from.Vnom
178
178
  Vt = self.branch.bus_to.Vnom
179
179
 
180
- Sn = np.round(I * Vf, 2) # nominal power in MVA = kA * kV
180
+ Sn = np.round(I * Vf, 2) # nominal power in MVA = KA * KV
181
181
 
182
182
  Zbase = self.Sbase / (Vf * Vf)
183
183
  Ybase = 1.0 / Zbase
@@ -87,7 +87,7 @@ class LineEditor(QDialog):
87
87
  R = self.line.R * Zbase / length
88
88
  X = self.line.X * Zbase / length
89
89
  B = self.line.B * Ybase / length
90
- I = np.round(self.line.rate / (Vf * 1.73205080757), 6) # current in kA
90
+ I = np.round(self.line.rate / (Vf * 1.73205080757), 6) # current in KA
91
91
 
92
92
  # ------------------------------------------------------------------------------------------
93
93
 
@@ -225,7 +225,7 @@ class LineEditor(QDialog):
225
225
  x_ohm=self.x_spinner.value(), # ohm / km
226
226
  c_nf=self.b_spinner.value() * 1e3 / wf, # nF / km
227
227
  length=self.l_spinner.value(), # km
228
- Imax=self.i_spinner.value(), # kA
228
+ Imax=self.i_spinner.value(), # KA
229
229
  freq=self.frequency, # Hz
230
230
  Sbase=self.Sbase, # MVA
231
231
  apply_to_profile=self.apply_to_profile.isChecked()
@@ -271,7 +271,7 @@ class LineGraphicItem(LineGraphicTemplateItem):
271
271
 
272
272
  if ok:
273
273
  # rate = I
274
- rated_current = self.api_object.rate / (self.api_object.Vf * 1.73205080757) # MVA = kA * kV * sqrt(3)
274
+ rated_current = self.api_object.rate / (self.api_object.Vf * 1.73205080757) # MVA = KA * KV * sqrt(3)
275
275
 
276
276
  tpe = SequenceLineType(name='SequenceLine from ' + self.api_object.name,
277
277
  idtag=None,