GridCal 5.3.53__tar.gz → 5.4.0b1__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 (301) hide show
  1. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ExecuteGridCal.py +1 -1
  2. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +37 -21
  3. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +73 -51
  4. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +32 -104
  5. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +31 -83
  6. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +2 -2
  7. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +2 -14
  8. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +1 -3
  9. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +182 -99
  10. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +166 -606
  11. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +93 -71
  12. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/base_diagram_widget.py +5 -3
  13. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/diagrams_model.py +6 -5
  14. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/graphics_manager.py +1 -20
  15. gridcal-5.4.0b1/GridCal/Gui/GridReduce/grid_reduce.py +126 -0
  16. gridcal-5.4.0b1/GridCal/Gui/GridReduce/grid_reduce_gui.py +81 -0
  17. gridcal-5.4.0b1/GridCal/Gui/GridReduce/update_gui_file.py +13 -0
  18. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/MainWindow.py +203 -165
  19. gridcal-5.3.53/GridCal/Gui/Main/SubClasses/Model/objects.py → gridcal-5.4.0b1/GridCal/Gui/Main/SubClasses/Model/data_base.py +201 -241
  20. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +291 -175
  21. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Model/time_events.py +10 -16
  22. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Results/results.py +6 -5
  23. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -0
  24. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/base_gui.py +2 -0
  25. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/io.py +4 -74
  26. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/simulations.py +47 -36
  27. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/icons_rc.py +869 -667
  28. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/object_select_window.py +33 -0
  29. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SubstationDesigner/substation_designer.py +18 -23
  30. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +65 -39
  31. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +21 -10
  32. gridcal-5.4.0b1/GridCal/Gui/Widgets/__init__.py +0 -0
  33. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/gui_functions.py +24 -2
  34. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/object_model.py +0 -1
  35. gridcal-5.4.0b1/GridCal/Gui/object_proxy_model.py +166 -0
  36. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/profiles_model.py +8 -1
  37. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/table_view_header_wrap.py +9 -3
  38. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/__version__.py +1 -1
  39. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/plugins.py +3 -1
  40. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/update.py +0 -21
  41. {gridcal-5.3.53 → gridcal-5.4.0b1}/PKG-INFO +2 -3
  42. {gridcal-5.3.53 → gridcal-5.4.0b1}/setup.py +1 -2
  43. gridcal-5.3.53/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -126
  44. gridcal-5.3.53/GridCal/Gui/CascadingSteps/gui.py +0 -127
  45. gridcal-5.3.53/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -9
  46. gridcal-5.3.53/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -5
  47. gridcal-5.3.53/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -821
  48. gridcal-5.3.53/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -616
  49. gridcal-5.3.53/GridCal/Gui/GridMerge/demo_code.py +0 -136
  50. gridcal-5.3.53/GridCal/Gui/GridMerge/demo_code2.py +0 -40
  51. gridcal-5.3.53/GridCal/Gui/GridMerge/demo_code3.py +0 -42
  52. gridcal-5.3.53/GridCal/Gui/GridMerge/demo_code4.py +0 -32
  53. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  54. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  55. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  56. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  57. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  58. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  59. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/__init__.py +0 -0
  60. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/gui.py +0 -0
  61. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  62. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  63. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  64. {gridcal-5.3.53/GridCal/Gui/CascadingSteps → gridcal-5.4.0b1/GridCal/Gui/ContingencyPlanner}/__init__.py +0 -0
  65. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  66. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  67. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  68. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  69. {gridcal-5.3.53/GridCal/Gui/ContingencyPlanner → gridcal-5.4.0b1/GridCal/Gui/CoordinatesInput}/__init__.py +0 -0
  70. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  71. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  72. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  73. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  74. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/__init__.py +0 -0
  75. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/controllable_shunt_editor.py +0 -0
  76. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/generator_editor.py +0 -0
  77. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/line_editor.py +0 -0
  78. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/new_line_dialogue.py +0 -0
  79. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/transformer3w_editor.py +0 -0
  80. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/transformer_editor.py +0 -0
  81. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/Editors/transformer_taps_editor.py +0 -0
  82. {gridcal-5.3.53/GridCal/Gui/CoordinatesInput → gridcal-5.4.0b1/GridCal/Gui/Diagrams/MapWidget/Branches}/__init__.py +0 -0
  83. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  84. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  85. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  86. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  87. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  88. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  89. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  90. {gridcal-5.3.53/GridCal/Gui/Diagrams/MapWidget/Branches → gridcal-5.4.0b1/GridCal/Gui/Diagrams/MapWidget/Substation}/__init__.py +0 -0
  91. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  92. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  93. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  94. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  95. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  96. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  97. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  98. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  99. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  100. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  101. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  102. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  103. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  104. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  105. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  106. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  107. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  108. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  109. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  110. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  111. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  112. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  113. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  114. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  115. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  116. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  117. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  118. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  119. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  120. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  121. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  122. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  123. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  124. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  125. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  126. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  127. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  128. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  129. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  130. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  131. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/__init__.py +0 -0
  132. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  133. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  134. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  135. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridGenerator/gui.py +0 -0
  136. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  137. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  138. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/__init__.py +0 -0
  139. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
  140. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
  141. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
  142. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
  143. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
  144. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
  145. {gridcal-5.3.53/GridCal/Gui/ProfilesInput → gridcal-5.4.0b1/GridCal/Gui/GridReduce}/__init__.py +0 -0
  146. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  147. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  148. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  149. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  150. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  151. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  152. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  153. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  154. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  155. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  156. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  157. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  158. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/GridCalMain.py +0 -0
  159. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  160. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  161. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  162. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  163. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  164. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  165. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  166. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  167. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  168. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  169. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/__init__.py +0 -0
  170. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Main/update_gui_file.py +0 -0
  171. {gridcal-5.3.53/GridCal/Gui/SolarPowerWizard → gridcal-5.4.0b1/GridCal/Gui/ProfilesInput}/__init__.py +0 -0
  172. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  173. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  174. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  175. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  176. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  177. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  178. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  179. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  180. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  181. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  182. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  183. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  184. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  185. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  186. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  187. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  188. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  189. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  190. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  191. {gridcal-5.3.53/GridCal/Gui/Widgets → gridcal-5.4.0b1/GridCal/Gui/SolarPowerWizard}/__init__.py +0 -0
  192. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  193. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  194. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  195. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  196. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  197. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  198. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  199. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  200. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  201. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  202. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  203. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  204. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  205. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  206. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  207. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  208. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  209. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  210. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  211. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
  212. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  213. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  214. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  215. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  216. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  217. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  218. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Visualization/__init__.py +0 -0
  219. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Visualization/visualization.py +0 -0
  220. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  221. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  222. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  223. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  224. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  225. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  226. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  227. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/__init__.py +0 -0
  228. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/associations_model.py +0 -0
  229. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/general_dialogues.py +0 -0
  230. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/messages.py +0 -0
  231. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/pandas_model.py +0 -0
  232. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/plot_config.py +0 -0
  233. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/python_console.py +0 -0
  234. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/python_highlighter.py +0 -0
  235. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/results_model.py +0 -0
  236. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/themes.py +0 -0
  237. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/toast_widget.py +0 -0
  238. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/update_gui_all.py +0 -0
  239. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/update_gui_common.py +0 -0
  240. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Gui/wrappable_table_model.py +0 -0
  241. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/LICENSE.txt +0 -0
  242. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/__init__.py +0 -0
  243. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/export_results_driver.py +0 -0
  244. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/file_handler.py +0 -0
  245. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/server_driver.py +0 -0
  246. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/session.py +0 -0
  247. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/Session/synchronization_driver.py +0 -0
  248. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/__init__.py +0 -0
  249. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/darkdetect/__init__.py +0 -0
  250. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/darkdetect/_dummy.py +0 -0
  251. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/darkdetect/_linux_detect.py +0 -0
  252. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/darkdetect/_mac_detect.py +0 -0
  253. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/darkdetect/_windows_detect.py +0 -0
  254. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  255. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  256. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  257. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  258. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  259. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  260. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  261. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  262. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  263. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  264. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  265. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  266. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  267. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  268. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  269. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  270. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  271. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  272. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  273. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  274. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  275. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  276. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  277. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  278. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  279. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  280. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  281. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  282. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  283. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  284. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  285. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  286. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  287. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  288. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  289. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  290. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  291. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  292. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/__init__.py +0 -0
  293. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/GridCal.ico +0 -0
  294. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/GridCal.svg +0 -0
  295. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/__init__.py +0 -0
  296. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/cables.csv +0 -0
  297. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/sequence_lines.csv +0 -0
  298. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/transformers.csv +0 -0
  299. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/data/wires.csv +0 -0
  300. {gridcal-5.3.53 → gridcal-5.4.0b1}/GridCal/templates.py +0 -0
  301. {gridcal-5.3.53 → gridcal-5.4.0b1}/setup.cfg +0 -0
@@ -31,4 +31,4 @@ if __name__ == "__main__":
31
31
  os.environ["QT_QUICK_CONTROLS_STYLE"] = "Basic"
32
32
  # os.environ["QT_QPA_PLATFORMTHEME"] = "qt5ct" # this forces QT-only menus and look and feel
33
33
 
34
- runGridCal()
34
+ runGridCal()
@@ -73,14 +73,9 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
73
73
  self.line_container = None
74
74
  self.editor: GridMapWidget = editor # reassign for the types to be clear
75
75
 
76
- r2 = size / 2
76
+ r2 = size / 2.0
77
77
  x, y = editor.to_x_y(lat=lat, lon=lon) # upper left corner
78
- self.setRect(
79
- x - r2,
80
- y - r2,
81
- self.size,
82
- self.size
83
- )
78
+ self.setRect(x - r2, y - r2, self.size, self.size)
84
79
 
85
80
  # Enable hover events for the item
86
81
  self.setAcceptHoverEvents(True)
@@ -94,17 +89,41 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
94
89
  self.change_pen_width(0.05 * size)
95
90
 
96
91
  # Create a pen with reduced line width
97
- self.color = QColor(self.api_object.color)
98
- self.color.setAlpha(128)
99
- self.hoover_color = QColor(self.api_object.color)
100
- self.hoover_color.setAlpha(180)
101
- self.border_color = QColor(self.api_object.color) # No Alpha
92
+ self._color = QColor(self.api_object.color)
93
+ self._color.setAlpha(128)
94
+ self._hoover_color = QColor(self.api_object.color)
95
+ self._hoover_color.setAlpha(180)
96
+ self._border_color = QColor(self.api_object.color) # No Alpha
102
97
 
103
98
  self.set_default_color()
104
99
 
105
100
  # list of voltage levels graphics
106
101
  self.voltage_level_graphics: List[VoltageLevelGraphicItem] = list()
107
102
 
103
+ @property
104
+ def color(self) -> QColor:
105
+ return self._color
106
+
107
+ @color.setter
108
+ def color(self, val: QColor):
109
+ self._color = val
110
+
111
+ @property
112
+ def hover_color(self) -> QColor:
113
+ return self._hoover_color
114
+
115
+ @hover_color.setter
116
+ def hover_color(self, val: QColor):
117
+ self._hoover_color = val
118
+
119
+ @property
120
+ def border_color(self) -> QColor:
121
+ return self._border_color
122
+
123
+ @border_color.setter
124
+ def border_color(self, val: QColor):
125
+ self._border_color = val
126
+
108
127
  @property
109
128
  def api_object(self) -> Substation:
110
129
  return self._api_object
@@ -182,8 +201,8 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
182
201
  self.color = QColor(self.api_object.color)
183
202
  self.color.setAlpha(128)
184
203
 
185
- self.hoover_color = QColor(self.api_object.color)
186
- self.hoover_color.setAlpha(180)
204
+ self.hover_color = QColor(self.api_object.color)
205
+ self.hover_color.setAlpha(180)
187
206
 
188
207
  self.border_color = QColor(self.api_object.color) # No Alpha
189
208
 
@@ -315,17 +334,15 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
315
334
  Event handler for when the mouse enters the item.
316
335
  """
317
336
  # self.editor.map.view.in_item = True
318
- self.set_color(self.hoover_color, self.color)
337
+ self.color_widget(self.color, self.hover_color)
319
338
  self.hovered = True
320
339
 
321
340
  def hoverLeaveEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
322
341
  """
323
342
  Event handler for when the mouse leaves the item.
324
343
  """
325
- # self.editor.map.view.in_item = False
326
344
  self.hovered = False
327
- self.set_default_color()
328
- # QApplication.instance().restoreOverrideCursor()
345
+ self.color_widget(self.color, self.border_color)
329
346
 
330
347
  def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
331
348
  """
@@ -756,7 +773,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
756
773
  pen.setWidthF(width)
757
774
  self.setPen(pen)
758
775
 
759
- def set_color(self, inner_color: QColor = None, border_color: QColor = None) -> None:
776
+ def color_widget(self, inner_color: QColor = None, border_color: QColor = None) -> None:
760
777
  """
761
778
 
762
779
  :param inner_color:
@@ -778,7 +795,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
778
795
  :return:
779
796
  """
780
797
  # Example: color assignment
781
- self.set_color(self.color, self.border_color)
798
+ self.color_widget(self.color, self.border_color)
782
799
 
783
800
  def open_street_view(self):
784
801
  """
@@ -810,7 +827,6 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
810
827
 
811
828
  return self.voltage_level_graphics + associated_lines_graphics
812
829
 
813
-
814
830
  def get_associated_devices(self) -> List[ALL_DEV_TYPES]:
815
831
  """
816
832
  This function returns all the api_object devices associated with the selected graphic object.
@@ -11,7 +11,6 @@ import json
11
11
  import numpy as np
12
12
  import math
13
13
  import pandas as pd
14
- from GridCalEngine.Devices.Branches.overhead_line_type import OverheadLineType
15
14
  from matplotlib import pyplot as plt
16
15
 
17
16
  from PySide6.QtWidgets import QGraphicsItem, QMessageBox, QDialog, QVBoxLayout, QLabel, QPushButton
@@ -35,12 +34,14 @@ from GridCalEngine.Devices.Substation.substation import Substation
35
34
  from GridCalEngine.Devices.Substation.voltage_level import VoltageLevel
36
35
  from GridCalEngine.Devices.Branches.line_locations import LineLocation
37
36
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
38
- from GridCalEngine.enumerations import DeviceType, ResultTypes
37
+ from GridCalEngine.enumerations import DeviceType, ResultTypes, SubstationTypes
39
38
  from GridCalEngine.Devices.types import ALL_DEV_TYPES
40
39
  from GridCalEngine.basic_structures import Logger
41
40
  from GridCalEngine.Simulations.OPF.opf_ts_results import OptimalPowerFlowTimeSeriesResults
42
41
  from GridCalEngine.Simulations.PowerFlow.power_flow_ts_results import PowerFlowTimeSeriesResults
43
42
  from GridCalEngine.enumerations import Colormaps
43
+ from GridCalEngine.Topology import substation_wizards as substation_wizards
44
+ import GridCalEngine.Devices.Diagrams.palettes as palettes
44
45
 
45
46
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_ac_line import MapAcLine
46
47
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_dc_line import MapDcLine
@@ -52,7 +53,6 @@ from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import
52
53
  from GridCal.Gui.Diagrams.MapWidget.map_widget import MapWidget, MapDiagramScene
53
54
  from GridCal.Gui.Diagrams.Editors.new_line_dialogue import NewMapLineDialogue
54
55
  import GridCal.Gui.Visualization.visualization as viz
55
- import GridCalEngine.Devices.Diagrams.palettes as palettes
56
56
  from GridCal.Gui.Diagrams.graphics_manager import ALL_MAP_GRAPHICS
57
57
  from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
58
58
  from GridCal.Gui.Diagrams.base_diagram_widget import BaseDiagramWidget
@@ -101,7 +101,7 @@ class MapLibraryModel(QStandardItemModel):
101
101
 
102
102
  self.substation_name = "Substation"
103
103
 
104
- self.add(name=self.substation_name, icon_name="bus_icon")
104
+ self.add(name=self.substation_name, icon_name="substation")
105
105
 
106
106
  def add(self, name: str, icon_name: str):
107
107
  """
@@ -522,6 +522,21 @@ class GridMapWidget(BaseDiagramWidget):
522
522
  """
523
523
  return [s for s in self.map.view.selected_items() if isinstance(s, SubstationGraphicItem)]
524
524
 
525
+ def get_substations(self) -> List[Tuple[int, Substation, SubstationGraphicItem]]:
526
+ """
527
+ Get all the substations
528
+ :return: tuple(substation index, substation_api_object, substation_graphic_object)
529
+ """
530
+ lst: List[Tuple[int, Substation, Union[SubstationGraphicItem, None]]] = list()
531
+ substation_graphics_dict = self.graphics_manager.get_device_type_dict(DeviceType.SubstationDevice)
532
+ substations_dict: Dict[str: Tuple[int, Bus]] = {b.idtag: (i, b) for i, b in enumerate(self.circuit.substations)}
533
+
534
+ for bus_idtag, graphic_object in substation_graphics_dict.items():
535
+ idx, substation = substations_dict[bus_idtag]
536
+ lst.append((idx, substation, graphic_object))
537
+
538
+ return lst
539
+
525
540
  def create_new_line_wizard(self):
526
541
  """
527
542
  Create a new line in the map with dialogues
@@ -611,6 +626,7 @@ class GridMapWidget(BaseDiagramWidget):
611
626
 
612
627
  # Delete the substation itself
613
628
  self.circuit.delete_substation(obj=api_object)
629
+
614
630
  #
615
631
  # def show_devices_to_disconnect_dialog(self,
616
632
  # devices: List[ALL_DEV_TYPES],
@@ -945,38 +961,36 @@ class GridMapWidget(BaseDiagramWidget):
945
961
  :return:
946
962
  """
947
963
  kv = self.gui.get_default_voltage()
948
- dlg = SubstationDesigner(grid=self.circuit, default_voltage=kv)
964
+ dlg = SubstationDesigner(grid=self.circuit, default_voltage=kv, lat=lat, lon=lon)
949
965
  dlg.exec()
950
966
  if dlg.was_ok():
951
967
 
952
- # create the SE
953
- se_object = Substation(name=dlg.get_name(),
954
- code=dlg.get_code(),
955
- latitude=lat,
956
- longitude=lon)
968
+ se_object, voltage_levels = substation_wizards.create_substation(
969
+ grid=self.circuit,
970
+ se_name=dlg.get_name(),
971
+ se_code=dlg.get_code(),
972
+ lat=dlg.get_latitude(),
973
+ lon=dlg.get_longitude(),
974
+ vl_templates=dlg.get_voltage_levels()
975
+ )
957
976
 
958
- self.circuit.add_substation(obj=se_object)
977
+ # create SE graphic
959
978
  substation_graphics = self.add_api_substation(api_object=se_object, lat=lat, lon=lon)
960
979
 
961
- for vl_template in dlg.get_voltage_levels():
962
- # substation_graphics.add_voltage_level()
963
- vl = VoltageLevel(name=f"{se_object.name} @{vl_template.voltage} kV VL",
964
- Vnom=vl_template.voltage,
965
- substation=se_object)
966
- self.circuit.add_voltage_level(vl)
967
-
968
- bus = Bus(name=f"{se_object.name} @{vl_template.voltage} kV bus",
969
- Vnom=vl_template.voltage,
970
- substation=se_object,
971
- voltage_level=vl)
972
- self.circuit.add_bus(obj=bus)
973
-
974
- # add the vl graphics
980
+ # add voltage level graphics
981
+ for vl in voltage_levels:
975
982
  self.add_api_voltage_level(substation_graphics=substation_graphics, api_object=vl)
976
983
 
977
984
  # sort voltage levels
978
985
  substation_graphics.sort_voltage_levels()
979
986
 
987
+ # ask to create a se diagram
988
+ ok = yes_no_question(title="create substation diagram",
989
+ text="Do you want to finalize the editing of the substation in the schematic?")
990
+
991
+ if ok:
992
+ self.new_substation_diagram(substation=se_object)
993
+
980
994
  def get_branch_width(self) -> float:
981
995
  """
982
996
  Get the desired branch width
@@ -1060,7 +1074,7 @@ class GridMapWidget(BaseDiagramWidget):
1060
1074
  # rescale substations (this is super-fast)
1061
1075
  data: Dict[str, SubstationGraphicItem] = self.graphics_manager.get_device_type_dict(DeviceType.SubstationDevice)
1062
1076
  for se_key, elm_graphics in data.items():
1063
- elm_graphics.set_api_object_color()
1077
+ # elm_graphics.set_api_object_color()
1064
1078
  elm_graphics.set_size(r=se_width)
1065
1079
 
1066
1080
  self.diagram_scene.blockSignals(False)
@@ -1106,7 +1120,7 @@ class GridMapWidget(BaseDiagramWidget):
1106
1120
  vsc_loading: Vec = None,
1107
1121
  vsc_active: IntVec = None,
1108
1122
  ma: Vec = None,
1109
- theta: Vec = None,
1123
+ tau: Vec = None,
1110
1124
  fluid_node_p2x_flow: Vec = None,
1111
1125
  fluid_node_current_level: Vec = None,
1112
1126
  fluid_node_spillage: Vec = None,
@@ -1119,7 +1133,8 @@ class GridMapWidget(BaseDiagramWidget):
1119
1133
  max_branch_width=5,
1120
1134
  min_bus_width=20,
1121
1135
  max_bus_width=20,
1122
- cmap: palettes.Colormaps = None):
1136
+ cmap: palettes.Colormaps = None,
1137
+ is_three_phase: bool = False):
1123
1138
  """
1124
1139
  Color objects based on the results passed
1125
1140
  :param Sbus: Buses power (MVA)
@@ -1142,9 +1157,9 @@ class GridMapWidget(BaseDiagramWidget):
1142
1157
  :param vsc_losses: VSC branch losses [MW]
1143
1158
  :param vsc_loading: VSC Branch loading [%]
1144
1159
  :param vsc_active: VSC Branch status
1145
- :param loading_label: String saling whatever the loading label means
1160
+ :param loading_label: String saying whatever the loading label means
1146
1161
  :param ma: branch phase shift angle (rad)
1147
- :param theta: branch tap module (p.u.)
1162
+ :param tau: branch tap module (p.u.)
1148
1163
  :param fluid_node_p2x_flow: P2X flow rate (m3)
1149
1164
  :param fluid_node_current_level: Current level (m3)
1150
1165
  :param fluid_node_spillage: Spillage (m3)
@@ -1158,6 +1173,7 @@ class GridMapWidget(BaseDiagramWidget):
1158
1173
  :param min_bus_width: Minimum bus width [px]
1159
1174
  :param max_bus_width: Maximum bus width [px]
1160
1175
  :param cmap: Color map [palettes.Colormaps]
1176
+ :param is_three_phase: the results are three-phase
1161
1177
  """
1162
1178
 
1163
1179
  # voltage_cmap = viz.get_voltage_color_map()
@@ -1517,7 +1533,6 @@ class GridMapWidget(BaseDiagramWidget):
1517
1533
 
1518
1534
  selected_lineloc = self.get_selected_linelocations_tup()
1519
1535
 
1520
-
1521
1536
  if len(selected_lineloc) != 1:
1522
1537
  self.gui.show_error_toast('More than one waypoint selected. Could not determine where '
1523
1538
  'the substation should be created.')
@@ -1657,12 +1672,9 @@ class GridMapWidget(BaseDiagramWidget):
1657
1672
  line2 = Line(name=line.name, code=line.code, bus_from=added_bus, bus_to=line.bus_to,
1658
1673
  circuit_idx=line.circuit_idx, length=length2)
1659
1674
 
1660
- template = line.template
1661
- if isinstance(template, OverheadLineType):
1662
- template.compute()
1663
- line1.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1664
-
1665
- line2.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1675
+ if line.template is not None:
1676
+ line1.apply_template(line.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1677
+ line2.apply_template(line.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1666
1678
 
1667
1679
  line1.color = line.color
1668
1680
  line2.color = line.color
@@ -1738,14 +1750,19 @@ class GridMapWidget(BaseDiagramWidget):
1738
1750
 
1739
1751
  if inpt.is_accepted:
1740
1752
  circ_idx = inpt.value
1741
- if circ_idx > line1.template.n_circuits:
1742
- self.gui.show_error_toast(f'The circuit id introduced is greater than the maximum id that this '
1743
- f'template can use. The template has {line1.template.n_circuits}, the '
1744
- f'maximum possible value for the circuit_idx is '
1745
- f'{line1.template.n_circuits}, try again.')
1746
- return
1753
+ if line1.template is not None:
1754
+
1755
+ if circ_idx > line1.template.n_circuits:
1756
+ self.gui.show_error_toast(f'The circuit id introduced is greater than the maximum id that this '
1757
+ f'template can use. The template has {line1.template.n_circuits}, the '
1758
+ f'maximum possible value for the circuit_idx is '
1759
+ f'{line1.template.n_circuits}, try again.')
1760
+ return
1761
+ else:
1762
+ pass
1747
1763
  else:
1748
1764
  pass
1765
+
1749
1766
  else:
1750
1767
  self.gui.show_error_toast(f'Dialogue not accepted. Operation not performed.')
1751
1768
  return
@@ -1808,7 +1825,8 @@ class GridMapWidget(BaseDiagramWidget):
1808
1825
  length=line1.length + line2.length, circuit_idx=circ_idx)
1809
1826
  new_line.color = line1.color
1810
1827
 
1811
- new_line.apply_template(obj=line1.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1828
+ if line1.template is not None:
1829
+ new_line.apply_template(obj=line1.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1812
1830
 
1813
1831
  previous_coordinates = [0, 0]
1814
1832
 
@@ -2057,8 +2075,9 @@ class GridMapWidget(BaseDiagramWidget):
2057
2075
  protection_rating_factor=line_api.protection_rating_factor,
2058
2076
  circuit_idx=line_api.circuit_idx)
2059
2077
 
2060
- line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2061
- line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2078
+ if line_api.template is not None:
2079
+ line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2080
+ line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2062
2081
 
2063
2082
  # Copy other properties from the original line
2064
2083
  if hasattr(line_api, 'color'):
@@ -2483,8 +2502,9 @@ class GridMapWidget(BaseDiagramWidget):
2483
2502
  protection_rating_factor=line_api.protection_rating_factor,
2484
2503
  circuit_idx=line_api.circuit_idx)
2485
2504
 
2486
- line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2487
- line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2505
+ if line_api.template is not None:
2506
+ line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2507
+ line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2488
2508
 
2489
2509
  # Copy other properties from the original line
2490
2510
  if hasattr(line_api, 'color'):
@@ -2525,7 +2545,8 @@ class GridMapWidget(BaseDiagramWidget):
2525
2545
  protection_rating_factor=line_api.protection_rating_factor,
2526
2546
  circuit_idx=line_api.circuit_idx)
2527
2547
 
2528
- connection_line.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2548
+ if line_api.template is not None:
2549
+ connection_line.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2529
2550
 
2530
2551
  # Copy other properties from the original line
2531
2552
  if hasattr(line_api, 'color'):
@@ -2657,8 +2678,9 @@ class GridMapWidget(BaseDiagramWidget):
2657
2678
  line = self.add_api_line(api_object=line_api)
2658
2679
  line.calculate_total_length()
2659
2680
 
2660
- self.gui.show_info_toast(f"Line {line_api.name} had its connection to substation {removed_substation} changed to substation "
2661
- f"{added_substation}.")
2681
+ self.gui.show_info_toast(
2682
+ f"Line {line_api.name} had its connection to substation {removed_substation} changed to substation "
2683
+ f"{added_substation}.")
2662
2684
 
2663
2685
 
2664
2686
  def generate_map_diagram(
@@ -13,13 +13,10 @@ from PySide6.QtWidgets import (QGraphicsLineItem, QGraphicsRectItem, QGraphicsPo
13
13
  from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER, GenericDiagramWidget, TRANSPARENT, WHITE
14
14
  from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
15
15
  from GridCal.Gui.Diagrams.SchematicWidget.Substation.bus_graphics import BusGraphicItem
16
- from GridCal.Gui.Diagrams.SchematicWidget.Substation.cn_graphics import CnGraphicItem
17
- from GridCal.Gui.Diagrams.SchematicWidget.Substation.busbar_graphics import BusBarGraphicItem
18
16
  from GridCal.Gui.Diagrams.SchematicWidget.Fluid.fluid_node_graphics import FluidNodeGraphicItem
19
17
  from GridCal.Gui.messages import yes_no_question
20
18
 
21
19
  from GridCalEngine.Devices.Substation.bus import Bus
22
- from GridCalEngine.Devices.Substation.connectivity_node import ConnectivityNode
23
20
  from GridCalEngine.Devices.Substation.busbar import BusBar
24
21
  from GridCalEngine.Devices.Branches.line import Line
25
22
  from GridCalEngine.Devices.Branches.transformer import Transformer2W
@@ -33,12 +30,13 @@ from GridCalEngine.Devices.Branches.hvdc_line import HvdcLine
33
30
  from GridCalEngine.Devices.Fluid.fluid_node import FluidNode
34
31
  from GridCalEngine.Devices.Fluid.fluid_path import FluidPath
35
32
  from GridCalEngine.Devices.types import BRANCH_TYPES
33
+ from GridCalEngine.enumerations import SwitchGraphicType
36
34
 
37
35
  if TYPE_CHECKING: # Only imports the below statements during type checking
38
36
  from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
39
37
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.transformer3w_graphics import Transformer3WGraphicItem
40
38
 
41
- NODE_GRAPHIC = BusGraphicItem | CnGraphicItem | BusBarGraphicItem | FluidNodeGraphicItem
39
+ NODE_GRAPHIC = BusGraphicItem | FluidNodeGraphicItem
42
40
 
43
41
 
44
42
  class TransformerSymbol(QGraphicsRectItem):
@@ -224,7 +222,7 @@ class SeriesReactanceSymbol(VscSymbol):
224
222
 
225
223
  class SwitchSymbol(VscSymbol):
226
224
  """
227
- UpfcSymbol
225
+ SwitchSymbol
228
226
  """
229
227
 
230
228
  def __init__(self, parent, pen_width, h=30, w=30):
@@ -232,6 +230,15 @@ class SwitchSymbol(VscSymbol):
232
230
  icon_route=":/Icons/icons/switch.svg")
233
231
 
234
232
 
233
+ class DisconnectorSymbol(VscSymbol):
234
+ """
235
+ DisconnectorSymbol
236
+ """
237
+
238
+ def __init__(self, parent, pen_width, h=30, w=30):
239
+ VscSymbol.__init__(self, parent=parent, pen_width=pen_width, h=h, w=w,
240
+ icon_route=":/Icons/icons/disconnector.svg")
241
+
235
242
  class HvdcSymbol(QGraphicsRectItem):
236
243
  """
237
244
  HvdcSymbol
@@ -483,7 +490,12 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
483
490
  elif isinstance(api_object, SeriesReactance):
484
491
  self.symbol = SeriesReactanceSymbol(parent=self, pen_width=width, h=30, w=30)
485
492
  elif isinstance(api_object, Switch):
486
- self.symbol = SwitchSymbol(parent=self, pen_width=width, h=30, w=30)
493
+ if api_object.graphic_type == SwitchGraphicType.CircuitBreaker:
494
+ self.symbol = SwitchSymbol(parent=self, pen_width=width, h=30, w=30)
495
+ elif api_object.graphic_type == SwitchGraphicType.Disconnector:
496
+ self.symbol = DisconnectorSymbol(parent=self, pen_width=width, h=30, w=30)
497
+ else:
498
+ self.symbol = DisconnectorSymbol(parent=self, pen_width=width, h=30, w=30)
487
499
  else:
488
500
  self.symbol = None
489
501
 
@@ -685,6 +697,11 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
685
697
  # Set pen for everyone
686
698
  self.set_pen(QPen(self.color, self.width, self.style))
687
699
 
700
+ self.arrow_p_from.setVisible(val)
701
+ self.arrow_q_from.setVisible(val)
702
+ self.arrow_p_to.setVisible(val)
703
+ self.arrow_q_to.setVisible(val)
704
+
688
705
  def plot_profiles(self):
689
706
  """
690
707
  Plot the time series profiles
@@ -816,7 +833,7 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
816
833
  """
817
834
  self._editor.set_active_status_to_profile(self.api_object)
818
835
 
819
- def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
836
+ def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
820
837
  """
821
838
  Set the arrow directions
822
839
  :param Sf: Complex power from
@@ -835,6 +852,12 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
835
852
  self.arrow_q_from.set_value(Qf, True, Qf < 0, name="Qf", units="MVAr", draw_label=self.draw_labels)
836
853
  self.arrow_p_to.set_value(Pt, True, Pt > 0, name="Pt", units="MW", draw_label=self.draw_labels)
837
854
  self.arrow_q_to.set_value(Qt_, True, Qt_ > 0, name="Qt", units="MVAr", draw_label=self.draw_labels)
855
+ else:
856
+ if St is None:
857
+ self.arrow_p_from.setVisible(False)
858
+ self.arrow_q_from.setVisible(False)
859
+ self.arrow_p_to.setVisible(False)
860
+ self.arrow_q_to.setVisible(False)
838
861
 
839
862
  def set_arrows_with_hvdc_power(self, Pf: float, Pt: float) -> None:
840
863
  """
@@ -903,46 +926,6 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
903
926
  else:
904
927
  return False
905
928
 
906
- def is_from_port_a_cn(self) -> bool:
907
- """
908
-
909
- :return:
910
- """
911
- if self._from_port:
912
- return isinstance(self.get_terminal_from_parent(), CnGraphicItem)
913
- else:
914
- return False
915
-
916
- def is_to_port_a_cn(self) -> bool:
917
- """
918
-
919
- :return:
920
- """
921
- if self._to_port:
922
- return isinstance(self.get_terminal_to_parent(), CnGraphicItem)
923
- else:
924
- return False
925
-
926
- def is_from_port_a_busbar(self) -> bool:
927
- """
928
-
929
- :return:
930
- """
931
- if self._from_port:
932
- return isinstance(self.get_terminal_from_parent(), BusBarGraphicItem)
933
- else:
934
- return False
935
-
936
- def is_to_port_a_busbar(self) -> bool:
937
- """
938
-
939
- :return:
940
- """
941
- if self._to_port:
942
- return isinstance(self.get_terminal_to_parent(), BusBarGraphicItem)
943
- else:
944
- return False
945
-
946
929
  def is_from_port_a_tr3(self) -> bool:
947
930
  """
948
931
 
@@ -1005,14 +988,14 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
1005
988
  """
1006
989
  return self.get_to_graphic_object().api_object
1007
990
 
1008
- def get_cn_from(self) -> ConnectivityNode:
991
+ def get_cn_from(self) -> Bus:
1009
992
  """
1010
993
 
1011
994
  :return:
1012
995
  """
1013
996
  return self.get_from_graphic_object().api_object
1014
997
 
1015
- def get_cn_to(self) -> ConnectivityNode:
998
+ def get_cn_to(self) -> Bus:
1016
999
  """
1017
1000
 
1018
1001
  :return:
@@ -1103,61 +1086,6 @@ class LineGraphicTemplateItem(GenericDiagramWidget, QGraphicsLineItem):
1103
1086
  """
1104
1087
  return self.is_from_port_a_bus() and self.is_to_port_a_fluid_node()
1105
1088
 
1106
- def connected_between_cn_and_bus(self):
1107
- """
1108
-
1109
- :return:
1110
- """
1111
- return self.is_from_port_a_cn() and self.is_to_port_a_bus()
1112
-
1113
- def connected_between_bus_and_cn(self):
1114
- """
1115
-
1116
- :return:
1117
- """
1118
- return self.is_from_port_a_bus() and self.is_to_port_a_cn()
1119
-
1120
- def connected_between_cn(self):
1121
- """
1122
-
1123
- :return:
1124
- """
1125
- return self.is_from_port_a_cn() and self.is_to_port_a_cn()
1126
-
1127
- def connected_between_busbar_and_bus(self):
1128
- """
1129
-
1130
- :return:
1131
- """
1132
- return self.is_from_port_a_busbar() and self.is_to_port_a_bus()
1133
-
1134
- def connected_between_bus_and_busbar(self):
1135
- """
1136
-
1137
- :return:
1138
- """
1139
- return self.is_from_port_a_bus() and self.is_to_port_a_busbar()
1140
-
1141
- def connected_between_busbar(self):
1142
- """
1143
-
1144
- :return:
1145
- """
1146
- return self.is_from_port_a_busbar() and self.is_to_port_a_busbar()
1147
-
1148
- def connected_between_busbar_and_cn(self):
1149
- """
1150
-
1151
- :return:
1152
- """
1153
- return self.is_from_port_a_busbar() and self.is_to_port_a_cn()
1154
-
1155
- def connected_between_cn_and_busbar(self):
1156
- """
1157
-
1158
- :return:
1159
- """
1160
- return self.is_from_port_a_cn() and self.is_to_port_a_busbar()
1161
1089
 
1162
1090
  def should_be_a_converter(self) -> bool:
1163
1091
  """