GridCal 5.1.52__tar.gz → 5.1.53__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 (287) hide show
  1. GridCal-5.1.52/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py → GridCal-5.1.53/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +47 -65
  2. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +59 -47
  3. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +33 -28
  4. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +13 -1
  5. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +50 -54
  6. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +25 -8
  7. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +73 -49
  8. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +17 -3
  9. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +9 -1
  10. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +1 -1
  11. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/base_diagram_widget.py +5 -2
  12. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/graphics_manager.py +2 -2
  13. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/MainWindow.py +538 -496
  14. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +11 -4
  15. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/objects.py +35 -6
  16. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/time_events.py +11 -14
  17. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -0
  18. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/io.py +3 -1
  19. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/icons_rc.py +337 -301
  20. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/icons_rc.py +13 -13
  21. GridCal-5.1.53/GridCal/Gui/ProfilesInput/models_dialogue.py +472 -0
  22. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +2 -2
  23. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/__version__.py +1 -1
  24. {GridCal-5.1.52 → GridCal-5.1.53}/PKG-INFO +1 -1
  25. GridCal-5.1.52/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -363
  26. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ExecuteGridCal.py +0 -0
  27. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  28. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  29. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  30. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  31. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  32. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  33. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/__init__.py +0 -0
  34. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/gui.py +0 -0
  35. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  36. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  37. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  38. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  39. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  40. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  41. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  42. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  43. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  44. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  45. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  46. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  47. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  48. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  49. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  50. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  51. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  52. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  53. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  54. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  55. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  56. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  57. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  58. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  59. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  60. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  61. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  62. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  63. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  64. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  65. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  66. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  67. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  68. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  69. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  70. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  71. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  72. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  73. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  74. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  75. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  76. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  77. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  78. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  79. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  80. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  81. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  82. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  83. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  84. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  85. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  86. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  87. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  88. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  89. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  90. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  91. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  92. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  93. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  94. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  95. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  96. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  97. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  98. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  99. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  100. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  101. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  102. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  103. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  104. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  105. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  106. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  107. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  108. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  109. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  110. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  111. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  112. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  113. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  114. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  115. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  116. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  117. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/__init__.py +0 -0
  118. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  119. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  120. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  121. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  122. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/gui.py +0 -0
  123. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  124. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  125. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  126. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  127. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  128. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  129. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  130. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  131. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  132. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  133. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  134. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  135. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  136. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  137. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/GridCalMain.py +0 -0
  138. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  139. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  140. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  141. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  142. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  143. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  144. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  145. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  146. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  147. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  148. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  149. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  150. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  151. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  152. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/__init__.py +0 -0
  153. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/object_select_window.py +0 -0
  154. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Main/update_gui_file.py +0 -0
  155. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  156. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  157. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  158. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  159. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  160. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  161. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  162. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  163. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  164. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  165. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  166. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  167. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  168. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  169. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  170. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  171. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  172. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  173. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  174. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  175. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  176. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  177. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  178. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  179. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  180. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  181. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  182. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  183. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  184. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  185. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  186. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  187. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  188. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  189. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  190. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  191. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  192. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  193. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  194. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  195. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  196. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  197. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  198. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  199. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  200. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  201. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  202. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  203. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  204. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  205. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Visualization/__init__.py +0 -0
  206. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Visualization/visualization.py +0 -0
  207. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Widgets/__init__.py +0 -0
  208. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  209. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  210. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  211. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  212. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  213. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  214. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  215. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/__init__.py +0 -0
  216. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/associations_model.py +0 -0
  217. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/console_widget.py +0 -0
  218. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/general_dialogues.py +0 -0
  219. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/gui_functions.py +0 -0
  220. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/messages.py +0 -0
  221. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/object_model.py +0 -0
  222. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/pandas_model.py +0 -0
  223. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/plot_config.py +0 -0
  224. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/profiles_model.py +0 -0
  225. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/results_model.py +0 -0
  226. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/table_view_header_wrap.py +0 -0
  227. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/themes.py +0 -0
  228. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/update_gui_all.py +0 -0
  229. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/update_gui_common.py +0 -0
  230. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Gui/wrappable_table_model.py +0 -0
  231. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/LICENSE.txt +0 -0
  232. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/__init__.py +0 -0
  233. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/export_results_driver.py +0 -0
  234. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/file_handler.py +0 -0
  235. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/server_driver.py +0 -0
  236. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/session.py +0 -0
  237. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/Session/synchronization_driver.py +0 -0
  238. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/__init__.py +0 -0
  239. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  240. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  241. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  242. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  243. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  244. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  245. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  246. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  247. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  248. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  249. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  250. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  251. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  252. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  253. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  254. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  255. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  256. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  257. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  258. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  259. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  260. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  261. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  262. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  263. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  264. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  265. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  266. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  267. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  268. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  269. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  270. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  271. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  272. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  273. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  274. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  275. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  276. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  277. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/__init__.py +0 -0
  278. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/data/__init__.py +0 -0
  279. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/data/cables.csv +0 -0
  280. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/data/sequence_lines.csv +0 -0
  281. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/data/transformers.csv +0 -0
  282. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/data/wires.csv +0 -0
  283. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/plugins.py +0 -0
  284. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/templates.py +0 -0
  285. {GridCal-5.1.52 → GridCal-5.1.53}/GridCal/update.py +0 -0
  286. {GridCal-5.1.52 → GridCal-5.1.53}/setup.cfg +0 -0
  287. {GridCal-5.1.52 → GridCal-5.1.53}/setup.py +0 -0
@@ -16,11 +16,11 @@
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  from __future__ import annotations
18
18
  from typing import Tuple, TYPE_CHECKING
19
- from PySide6.QtWidgets import QApplication, QMenu, QGraphicsSceneContextMenuEvent
19
+ from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent
20
20
  from GridCal.Gui.gui_functions import add_menu_entry
21
21
  from PySide6 import QtWidgets
22
22
  from PySide6.QtCore import Qt, QPointF
23
- from PySide6.QtGui import QBrush, QColor, QCursor
23
+ from PySide6.QtGui import QBrush, QColor
24
24
 
25
25
  from GridCalEngine.Devices.Branches.line_locations import LineLocation
26
26
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_container import MapLineContainer
@@ -30,7 +30,7 @@ if TYPE_CHECKING: # Only imports the below statements during type checking
30
30
  from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
31
31
 
32
32
 
33
- class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
33
+ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
34
34
  """
35
35
  Represents a block in the diagram
36
36
  Has an x and y and width and height
@@ -60,7 +60,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
60
60
  :param r:
61
61
  :param draw_labels:
62
62
  """
63
- QtWidgets.QGraphicsRectItem.__init__(self)
63
+ QtWidgets.QGraphicsEllipseItem.__init__(self)
64
64
  NodeTemplate.__init__(self,
65
65
  api_object=api_object,
66
66
  editor=editor,
@@ -74,9 +74,8 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
74
74
  self.radius = r
75
75
  self.draw_labels = True
76
76
 
77
- # self.editor: GridMapWidget = editor
78
77
  self.line_container: MapLineContainer = line_container
79
- # self.api_object: LineLocation = api_object
78
+
80
79
  self.index = index
81
80
 
82
81
  self.resize(r * 10)
@@ -84,23 +83,20 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
84
83
  self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsMovable) # Allow moving the node
85
84
  self.setFlag(QtWidgets.QGraphicsItem.GraphicsItemFlag.ItemIsSelectable) # Allow selecting the node
86
85
 
87
- self.setCursor(QCursor(Qt.PointingHandCursor))
86
+ # self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
87
+ self.setCursor(Qt.CursorShape.PointingHandCursor)
88
88
 
89
89
  self.hovered = False
90
90
  self.enabled = True
91
91
 
92
92
  # Create a pen with reduced line width
93
- self.change_pen_width(0.001)
94
-
95
- # self.colorInner = QColor(100, random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
96
- # self.colorBorder = QColor(100, random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
97
-
98
- self.colorInner = QColor(255, 100, 100, 100)
99
- self.colorBorder = QColor(255, 100, 100, 100)
93
+ self.change_pen_width(0)
94
+ self.colorInner = QColor(100, 100, 100, 100)
95
+ self.colorBorder = QColor(100, 100, 100, 100)
100
96
  self.setZValue(1)
101
97
 
102
98
  # Assign color to the node
103
- self.setDefaultColor()
99
+ self.set_default_color()
104
100
 
105
101
  def get_center_pos(self) -> QPointF:
106
102
  """
@@ -111,49 +107,47 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
111
107
  y = self.rect().y() + self.rect().height() / 2
112
108
  return QPointF(x, y)
113
109
 
114
- def updateRealPos(self) -> None:
110
+ def update_real_pos(self) -> None:
115
111
  """
116
112
 
117
113
  :return:
118
114
  """
119
115
  real_position = self.pos()
120
- center_point = self.getPos()
116
+ center_point = self.get_pos()
121
117
  self.x = center_point.x() + real_position.x()
122
118
  self.y = center_point.y() + real_position.y()
123
119
 
124
- def updatePosition(self):
120
+ def update_position(self) -> None:
125
121
  """
126
122
 
127
123
  :return:
128
124
  """
129
125
 
130
126
  if self.enabled:
131
- self.updateRealPos()
132
- self.needsUpdate = True
127
+ self.update_real_pos()
128
+ self.needs_update = True
133
129
  self.line_container.update_connectors()
134
130
 
135
- def updateDiagram(self):
131
+ def update_position_at_the_diagram(self) -> None:
136
132
  """
137
-
138
- :return:
133
+ This function updates the position of this graphical element in the diagram
139
134
  """
140
135
  real_position = self.pos()
141
- center_point = self.getPos()
136
+ center_point = self.get_pos()
142
137
 
143
- lat, long = self.editor.to_lat_lon(x=center_point.x() + real_position.x(),
144
- y=center_point.y() + real_position.y())
138
+ self.lat, self.lon = self.editor.to_lat_lon(x=center_point.x() + real_position.x(),
139
+ y=center_point.y() + real_position.y())
145
140
 
146
- print(f'Updating node position id:{self.api_object.idtag}, lat:{lat}, lon:{long}')
141
+ # print(f'Updating node position id:{self.api_object.idtag}, lat:{self.lat}, lon:{self.lon}')
147
142
 
148
143
  self.editor.update_diagram_element(device=self.api_object,
149
- latitude=lat,
150
- longitude=long,
144
+ latitude=self.lat,
145
+ longitude=self.lon,
151
146
  graphic_object=self)
152
147
 
153
- self.lat = lat
154
- self.lon = long
148
+ print()
155
149
 
156
- def mouseMoveEvent(self, event):
150
+ def mouseMoveEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
157
151
  """
158
152
  Event handler for mouse move events.
159
153
  """
@@ -165,51 +159,39 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
165
159
  self.set_callabacks(pos.x(), pos.y())
166
160
 
167
161
  if self.hovered and self.enabled:
168
- self.updatePosition()
162
+ self.update_position()
169
163
 
170
164
  def mousePressEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
171
165
  """
172
166
  Event handler for mouse press events.
173
167
  """
174
168
  super().mousePressEvent(event)
175
- selected_items = self.editor.map.view._scene.selectedItems()
176
- if len(selected_items) < 2:
177
- self.setSelected(True)
178
169
  if self.enabled:
179
170
  self.editor.map.view.disable_move = True
180
- if event.button() == Qt.RightButton:
171
+ if event.button() == Qt.MouseButton.RightButton:
181
172
  pass
182
173
 
183
- def mouseReleaseEvent(self, event):
174
+ def mouseReleaseEvent(self, event: QtWidgets.QGraphicsSceneMouseEvent) -> None:
184
175
  """
185
176
  Event handler for mouse release events.
186
177
  """
187
178
  super().mouseReleaseEvent(event)
188
179
  self.editor.disableMove = True
189
- self.updateDiagram()
190
- self.editor.map.view._scene.update()
191
-
192
- selected_items = self.editor.map.view._scene.selectedItems()
193
- if len(selected_items) < 2:
194
- self.setSelected(True)
180
+ self.update_position_at_the_diagram()
195
181
 
196
182
  def hoverEnterEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
197
183
  """
198
184
  Event handler for when the mouse enters the item.
199
185
  """
200
- # self.editor.map.view.in_item = True
201
186
  self.hovered = True
202
- self.setNodeColor(QColor(Qt.red), QColor(Qt.red))
203
- QApplication.instance().setOverrideCursor(Qt.PointingHandCursor)
187
+ self.setNodeColor(QColor(Qt.GlobalColor.red), QColor(Qt.GlobalColor.red))
204
188
 
205
189
  def hoverLeaveEvent(self, event: QtWidgets.QGraphicsSceneHoverEvent) -> None:
206
190
  """
207
191
  Event handler for when the mouse leaves the item.
208
192
  """
209
- # self.editor.map.view.in_item = False
210
193
  self.hovered = False
211
- self.setDefaultColor()
212
- QApplication.instance().restoreOverrideCursor()
194
+ self.set_default_color()
213
195
 
214
196
  def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
215
197
  """
@@ -219,20 +201,20 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
219
201
  """
220
202
  menu = QMenu()
221
203
 
222
- add_menu_entry(menu=menu,
223
- text="Merge",
224
- icon_path="",
225
- function_ptr=self.MergeFunction)
226
-
227
- add_menu_entry(menu=menu,
228
- text="Split",
229
- icon_path=":/Icons/icons/divide.svg",
230
- function_ptr=self.SplitFunction)
204
+ # add_menu_entry(menu=menu,
205
+ # text="Merge",
206
+ # icon_path="",
207
+ # function_ptr=self.MergeFunction)
208
+ #
209
+ # add_menu_entry(menu=menu,
210
+ # text="Split",
211
+ # icon_path=":/Icons/icons/divide.svg",
212
+ # function_ptr=self.SplitFunction)
231
213
 
232
214
  add_menu_entry(menu=menu,
233
215
  text="Delete",
234
216
  icon_path=":/Icons/icons/delete.svg",
235
- function_ptr=self.RemoveFunction)
217
+ function_ptr=self.remove)
236
218
 
237
219
  menu.exec_(event.screenPos())
238
220
 
@@ -254,13 +236,13 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
254
236
  # Implement the functionality for Action 1 here
255
237
  pass
256
238
 
257
- def RemoveFunction(self):
239
+ def remove(self):
258
240
  """
259
241
 
260
242
  :return:
261
243
  """
262
244
  # Implement the functionality for Action 1 here
263
- self.editor.removeNode(self)
245
+ self.editor.remove_line_location_graphic(self)
264
246
 
265
247
  def MergeFunction(self):
266
248
  """
@@ -286,7 +268,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
286
268
  pen.setColor(border_color)
287
269
  self.setPen(pen)
288
270
 
289
- def setDefaultColor(self) -> None:
271
+ def set_default_color(self) -> None:
290
272
  """
291
273
 
292
274
  :return:
@@ -294,7 +276,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
294
276
  # Example: color assignment
295
277
  self.setNodeColor(self.colorInner, self.colorBorder)
296
278
 
297
- def getPos(self) -> QPointF:
279
+ def get_pos(self) -> QPointF:
298
280
  """
299
281
 
300
282
  :return:
@@ -312,7 +294,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
312
294
 
313
295
  :return:
314
296
  """
315
- self.updateRealPos()
297
+ self.update_real_pos()
316
298
  return self.x, self.y
317
299
 
318
300
  def resize(self, new_radius: float):
@@ -16,24 +16,19 @@
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  from __future__ import annotations
18
18
 
19
- # import uuid
20
19
  from typing import TYPE_CHECKING, List, Union
21
20
 
22
- import logging
23
-
24
21
  from PySide6.QtCore import Qt
25
- from PySide6.QtGui import QColor, QPen
22
+ from PySide6.QtGui import QColor
26
23
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_segment import MapLineSegment
27
- from GridCalEngine.Devices import LineLocation
28
- from GridCalEngine.Devices.Diagrams.base_diagram import PointsGroup
24
+ from GridCalEngine.Devices.Branches.line_locations import LineLocation
29
25
  from GridCalEngine.Devices.types import BRANCH_TYPES, FluidPath
30
- from GridCalEngine.Devices.Branches.line import Line
31
26
  from GridCalEngine.enumerations import DeviceType
32
27
  from GridCal.Gui.Diagrams.generic_graphics import GenericDiagramWidget
33
28
  from GridCal.Gui.messages import error_msg
34
29
 
35
30
  if TYPE_CHECKING:
36
- from GridCal.Gui.Diagrams.MapWidget.Substation.node_graphic_item import NodeGraphicItem
31
+ from GridCal.Gui.Diagrams.MapWidget.Branches.line_location_graphic_item import LineLocationGraphicItem
37
32
  from GridCal.Gui.Diagrams.MapWidget.Substation.substation_graphic_item import SubstationGraphicItem
38
33
  from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
39
34
  from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
@@ -61,20 +56,22 @@ class MapLineContainer(GenericDiagramWidget):
61
56
 
62
57
  self.editor: GridMapWidget = editor # reassign to make clear the editor type
63
58
 
64
- self.nodes_list: List[NodeGraphicItem] = list()
59
+ self.nodes_list: List[LineLocationGraphicItem] = list()
65
60
  self.segments_list: List[MapLineSegment] = list()
66
61
  self.enabled = True
67
62
  self.original = True # TODO: Que es esto?
68
63
 
69
- def set_width_scale(self, val: float):
64
+ def set_width_scale(self, branch_scale: float, arrow_scale: float):
70
65
  """
71
66
  Set the width scale of the line
72
- :param val:
67
+ :param branch_scale:
68
+ :param arrow_scale:
73
69
  """
74
70
  for segment in self.segments_list:
75
71
  # pen = segment.pen() # get the current pen
76
72
  # 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
73
+ segment.set_width(branch_scale * segment.width) # Assign the pen to the line item
74
+ segment.set_arrow_scale(arrow_scale)
78
75
 
79
76
  def clean_segments(self) -> None:
80
77
  """
@@ -108,7 +105,7 @@ class MapLineContainer(GenericDiagramWidget):
108
105
  """
109
106
  return len(self.nodes_list)
110
107
 
111
- def register_new_node(self, node: NodeGraphicItem):
108
+ def register_new_node(self, node: LineLocationGraphicItem):
112
109
  """
113
110
  Add node
114
111
  :param node: NodeGraphicItem
@@ -126,7 +123,6 @@ class MapLineContainer(GenericDiagramWidget):
126
123
  """
127
124
  Set color and style
128
125
  :param color: QColor instance
129
- :param w: width
130
126
  :param style: PenStyle instance
131
127
  :param tool_tip: tool tip text
132
128
  :return:
@@ -159,20 +155,29 @@ class MapLineContainer(GenericDiagramWidget):
159
155
  """
160
156
  self.clean()
161
157
 
158
+ # get the diagram line locations
159
+ line_locs_info = self.editor.diagram.query_by_type(device_type=DeviceType.LineLocation)
160
+
162
161
  # draw line locations
163
162
  for elm in self.api_object.locations.data:
164
- graphic_obj = self.editor.create_node(line_container=self,
165
- api_object=elm,
166
- lat=elm.lat, # 42.0 ...
167
- lon=elm.long,
168
- index=self.number_of_nodes()) # 2.7 ...
163
+
164
+ if line_locs_info is not None:
165
+ loc_data = line_locs_info.locations.get(elm.idtag, None)
166
+ else:
167
+ loc_data = None
168
+
169
+ graphic_obj = self.editor.create_line_location_graphic(line_container=self,
170
+ api_object=elm,
171
+ lat=elm.lat if loc_data is None else loc_data.latitude,
172
+ lon=elm.long if loc_data is None else loc_data.longitude,
173
+ index=self.number_of_nodes()) # 2.7 ...
169
174
 
170
175
  self.register_new_node(node=graphic_obj)
171
176
 
172
177
  # second pass: create the segments
173
178
  self.redraw_segments()
174
179
 
175
- def removeNode(self, node: NodeGraphicItem):
180
+ def removeNode(self, node: LineLocationGraphicItem):
176
181
  """
177
182
 
178
183
  :param node:
@@ -198,7 +203,8 @@ class MapLineContainer(GenericDiagramWidget):
198
203
  """
199
204
  self.clean_segments()
200
205
 
201
- connection_elements: List[Union[NodeGraphicItem, SubstationGraphicItem, VoltageLevelGraphicItem]] = list()
206
+ connection_elements: List[
207
+ Union[LineLocationGraphicItem, SubstationGraphicItem, VoltageLevelGraphicItem]] = list()
202
208
 
203
209
  # add the substation from
204
210
  substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
@@ -240,9 +246,17 @@ class MapLineContainer(GenericDiagramWidget):
240
246
  self.editor.update_device_sizes()
241
247
 
242
248
  def substation_to(self):
249
+ """
250
+
251
+ :return:
252
+ """
243
253
  return self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
244
254
 
245
255
  def substation_from(self):
256
+ """
257
+
258
+ :return:
259
+ """
246
260
  return self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
247
261
 
248
262
  def insert_new_node_at_position(self, index: int):
@@ -276,11 +290,11 @@ class MapLineContainer(GenericDiagramWidget):
276
290
 
277
291
  # Create a new graphical node item
278
292
 
279
- graphic_obj = self.editor.create_node(line_container=self,
280
- api_object=new_api_object,
281
- lat=new_api_object.lat,
282
- lon=new_api_object.long,
283
- index=index)
293
+ graphic_obj = self.editor.create_line_location_graphic(line_container=self,
294
+ api_object=new_api_object,
295
+ lat=new_api_object.lat,
296
+ lon=new_api_object.long,
297
+ index=index)
284
298
 
285
299
  idx = 0
286
300
 
@@ -294,7 +308,7 @@ class MapLineContainer(GenericDiagramWidget):
294
308
  # Add the node to the nodes list
295
309
  self.nodes_list.insert(index, graphic_obj)
296
310
 
297
- graphic_obj.updatePosition()
311
+ graphic_obj.update_position()
298
312
 
299
313
  # Update connectors if necessary
300
314
  self.redraw_segments()
@@ -325,16 +339,16 @@ class MapLineContainer(GenericDiagramWidget):
325
339
 
326
340
  # Create a new graphical node item
327
341
 
328
- graphic_obj = self.editor.create_node(line_container=self,
329
- api_object=new_api_object,
330
- lat=new_api_object.lat,
331
- lon=new_api_object.long,
332
- index=0)
342
+ graphic_obj = self.editor.create_line_location_graphic(line_container=self,
343
+ api_object=new_api_object,
344
+ lat=new_api_object.lat,
345
+ lon=new_api_object.long,
346
+ index=0)
333
347
 
334
348
  # Add the node to the nodes list
335
349
  self.nodes_list.insert(0, graphic_obj)
336
350
 
337
- graphic_obj.updatePosition()
351
+ graphic_obj.update_position()
338
352
 
339
353
  # Update connectors if necessary
340
354
  self.redraw_segments()
@@ -342,7 +356,7 @@ class MapLineContainer(GenericDiagramWidget):
342
356
  # Return the newly created node
343
357
  return graphic_obj
344
358
 
345
- elif (0 == index or index >= len(self.api_object.locations.data) - 1):
359
+ elif 0 == index or index >= len(self.api_object.locations.data) - 1:
346
360
 
347
361
  substation_from_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_from())
348
362
  substation_to_graphics = self.editor.graphics_manager.query(elm=self.api_object.get_substation_to())
@@ -371,11 +385,11 @@ class MapLineContainer(GenericDiagramWidget):
371
385
 
372
386
  # Create a new graphical node item
373
387
 
374
- graphic_obj = self.editor.create_node(line_container=self,
375
- api_object=new_api_object,
376
- lat=new_api_object.lat,
377
- lon=new_api_object.long,
378
- index=index)
388
+ graphic_obj = self.editor.create_line_location_graphic(line_container=self,
389
+ api_object=new_api_object,
390
+ lat=new_api_object.lat,
391
+ lon=new_api_object.long,
392
+ index=index)
379
393
 
380
394
  idx = 0
381
395
 
@@ -389,7 +403,7 @@ class MapLineContainer(GenericDiagramWidget):
389
403
  # Add the node to the nodes list
390
404
  self.nodes_list.insert(index, graphic_obj)
391
405
 
392
- graphic_obj.updatePosition()
406
+ graphic_obj.update_position()
393
407
 
394
408
  # Update connectors if necessary
395
409
  self.redraw_segments()
@@ -397,11 +411,9 @@ class MapLineContainer(GenericDiagramWidget):
397
411
  # Return the newly created node
398
412
  return graphic_obj
399
413
 
400
- else:
401
-
402
- logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
403
-
404
- logging.info("Invalid node index")
414
+ # else:
415
+ # logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
416
+ # logging.info("Invalid node index")
405
417
 
406
418
  def split_Line(self, index):
407
419
  """
@@ -440,8 +452,8 @@ class MapLineContainer(GenericDiagramWidget):
440
452
  ln1.bus_from = self.api_object.bus_from
441
453
  ln2.bus_to = self.api_object.bus_to
442
454
 
443
- l1 = self.editor.add_api_line(ln1, original=False)
444
- l2 = self.editor.add_api_line(ln2, original=False)
455
+ # l1 = self.editor.add_api_line(ln1, original=False)
456
+ # l2 = self.editor.add_api_line(ln2, original=False)
445
457
 
446
458
  self.disable_line()
447
459
 
@@ -28,10 +28,9 @@ from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER
28
28
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_editor import LineEditor
29
29
 
30
30
  from GridCalEngine.Devices.types import BRANCH_TYPES
31
- from GridCalEngine.enumerations import DeviceType
32
31
 
33
32
  if TYPE_CHECKING:
34
- from GridCal.Gui.Diagrams.MapWidget.Substation.node_graphic_item import NodeGraphicItem
33
+ from GridCal.Gui.Diagrams.MapWidget.Branches.line_location_graphic_item import LineLocationGraphicItem
35
34
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_line_container import MapLineContainer
36
35
  from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import GridMapWidget
37
36
 
@@ -41,15 +40,15 @@ class MapLineSegment(QGraphicsLineItem):
41
40
  Segment joining two NodeGraphicItem
42
41
  """
43
42
 
44
- def __init__(self, first: NodeGraphicItem, second: NodeGraphicItem, container: MapLineContainer):
43
+ def __init__(self, first: LineLocationGraphicItem, second: LineLocationGraphicItem, container: MapLineContainer):
45
44
  """
46
45
  Segment constructor
47
46
  :param first: NodeGraphicItem
48
47
  :param second: NodeGraphicItem
49
48
  """
50
49
  QGraphicsLineItem.__init__(self)
51
- self.first: NodeGraphicItem = first
52
- self.second: NodeGraphicItem = second
50
+ self.first: LineLocationGraphicItem = first
51
+ self.second: LineLocationGraphicItem = second
53
52
  self.container: MapLineContainer = container
54
53
  self.draw_labels = True
55
54
 
@@ -110,16 +109,21 @@ class MapLineSegment(QGraphicsLineItem):
110
109
  pen.setWidthF(width)
111
110
  self.setPen(pen)
112
111
 
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)
112
+ def set_arrow_scale(self, width: float):
113
+ """
114
+
115
+ :param width:
116
+ :return:
117
+ """
118
+ self.arrow_p_from.setScale(width)
119
+ self.arrow_q_from.setScale(width)
120
+ self.arrow_p_to.setScale(width)
121
+ self.arrow_q_to.setScale(width)
117
122
 
118
123
  def set_colour(self, color: QColor, style: Qt.PenStyle):
119
124
  """
120
125
  Set color and style
121
126
  :param color: QColor instance
122
- :param w: width
123
127
  :param style: PenStyle instance
124
128
  :return:
125
129
  """
@@ -229,14 +233,14 @@ class MapLineSegment(QGraphicsLineItem):
229
233
  icon_path=":/Icons/icons/assign_to_profile.svg")
230
234
 
231
235
  add_menu_entry(menu=menu,
232
- text="Split line",
233
- function_ptr=self.split_line,
234
- icon_path=":/Icons/icons/divide.svg")
236
+ text="Add point",
237
+ function_ptr=self.add_path_node,
238
+ icon_path=":/Icons/icons/cn_icon.svg")
235
239
 
236
- add_menu_entry(menu=menu,
237
- text="Split line with in/out",
238
- function_ptr=self.split_line_in_out,
239
- icon_path=":/Icons/icons/divide.svg")
240
+ # add_menu_entry(menu=menu,
241
+ # text="Add substation here",
242
+ # function_ptr=self.add_substation_here,
243
+ # icon_path=":/Icons/icons/substation.svg")
240
244
 
241
245
  menu.addSeparator()
242
246
 
@@ -313,8 +317,7 @@ class MapLineSegment(QGraphicsLineItem):
313
317
  current_template = self.api_object.template
314
318
  dlg = LineEditor(line=self.api_object, Sbase=Sbase, frequency=self.editor.circuit.fBase,
315
319
  templates=templates, current_template=current_template)
316
- if dlg.exec_():
317
- pass
320
+ dlg.exec()
318
321
 
319
322
  def plot_profiles(self) -> None:
320
323
  """
@@ -337,14 +340,14 @@ class MapLineSegment(QGraphicsLineItem):
337
340
  """
338
341
  self.editor.set_active_status_to_profile(self.api_object)
339
342
 
340
- def split_line(self):
343
+ def add_path_node(self):
341
344
  """
342
-
343
- :return:
345
+ Add a path to the container by adding a new graphical segment
344
346
  """
345
347
 
346
348
  if len(self.container.nodes_list) == 0:
347
349
  self.container.insert_new_node_at_position(0)
350
+
348
351
  elif len(self.container.nodes_list) == 1:
349
352
  if self.second == self.container.substation_to() or self.first == self.container.substation_to():
350
353
  self.container.insert_new_node_at_position(1)
@@ -353,24 +356,26 @@ class MapLineSegment(QGraphicsLineItem):
353
356
  else:
354
357
  if self.second == self.container.substation_to() or self.first == self.container.substation_to():
355
358
  self.container.insert_new_node_at_position(len(self.container.nodes_list))
359
+
356
360
  elif self.second == self.container.substation_from() or self.first == self.container.substation_from():
357
361
  self.container.insert_new_node_at_position(0)
362
+
358
363
  else:
359
364
  if self.first.index > self.second.index:
360
365
  self.container.insert_new_node_at_position(self.second.index)
366
+
361
367
  elif self.first.index < self.second.index:
362
368
  self.container.insert_new_node_at_position(self.second.index)
363
369
 
364
- # TODO implement
365
- # self.editor.split_line(line_graphics=self)
366
- pass
367
-
368
- def split_line_in_out(self):
370
+ def add_substation_here(self):
369
371
  """
370
372
  Split the line
371
373
  :return:
372
374
  """
373
- # TODO implement
375
+ # TODO implement:
376
+ # The container of this segment must be split into two new containers
377
+ # and in the middle, we need to create a substation object
378
+
374
379
  # self.editor.split_line_in_out(line_graphics=self)
375
380
  pass
376
381