GridCal 5.3.3__tar.gz → 5.3.5__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 (288) hide show
  1. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +1 -7
  2. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +1 -2
  3. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +7 -5
  4. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +8 -4
  5. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +26 -7
  6. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +3 -1
  7. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +8 -8
  8. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +34 -18
  9. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +12 -15
  10. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -68
  11. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +31 -47
  12. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +29 -203
  13. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +178 -172
  14. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +1 -1
  15. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +12 -2
  16. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +5 -0
  17. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +2 -2
  18. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +6 -8
  19. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/__version__.py +1 -1
  20. {gridcal-5.3.3 → gridcal-5.3.5}/PKG-INFO +1 -1
  21. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -153
  22. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -90
  23. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -93
  24. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_infra_map.py +0 -102
  25. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -103
  26. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -91
  27. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -94
  28. gridcal-5.3.3/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -92
  29. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ExecuteGridCal.py +0 -0
  30. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  31. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  32. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  33. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  34. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  35. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  36. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/__init__.py +0 -0
  37. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/gui.py +0 -0
  38. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  39. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  40. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  41. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  42. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  43. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  44. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  45. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  46. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  47. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  48. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  49. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  50. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  51. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  52. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  53. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  54. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  55. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  56. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  57. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  58. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  59. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  60. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  61. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  62. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  63. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  64. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  65. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  66. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  67. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  68. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  69. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  70. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  71. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  72. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  73. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  74. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  75. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  76. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  77. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  78. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  79. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  80. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  81. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  82. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  83. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  84. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  85. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  86. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  87. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  88. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  89. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  90. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  91. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  92. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  93. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  94. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  95. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  96. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  97. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  98. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  99. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  100. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  101. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  102. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  103. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  104. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  105. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  106. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/__init__.py +0 -0
  107. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  108. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  109. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  110. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  111. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  112. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  113. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/gui.py +0 -0
  114. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  115. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  116. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  117. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  118. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  119. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  120. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  121. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  122. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  123. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  124. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  125. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  126. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  127. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  128. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/GridCalMain.py +0 -0
  129. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/MainWindow.py +0 -0
  130. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  131. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  132. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  133. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  134. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  135. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  136. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  137. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  138. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  139. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  140. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  141. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  142. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  143. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  144. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  145. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  146. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  147. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  148. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/__init__.py +0 -0
  149. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/icons_rc.py +0 -0
  150. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/object_select_window.py +0 -0
  151. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Main/update_gui_file.py +0 -0
  152. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  153. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  154. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  155. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  156. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  157. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  158. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  159. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  160. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  161. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  162. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  163. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  164. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  165. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  166. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  167. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  168. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  169. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  170. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  171. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  172. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  173. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  174. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  175. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  176. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  177. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  178. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  179. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  180. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  181. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  182. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  183. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  184. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  185. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  186. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  187. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  188. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  189. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  190. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  191. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  192. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  193. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  194. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  195. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  196. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  197. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  198. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  199. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  200. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  201. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  202. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  203. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  204. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Visualization/__init__.py +0 -0
  205. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Visualization/visualization.py +0 -0
  206. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Widgets/__init__.py +0 -0
  207. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  208. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  209. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  210. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  211. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  212. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  213. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  214. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/__init__.py +0 -0
  215. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/associations_model.py +0 -0
  216. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/console_widget.py +0 -0
  217. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/general_dialogues.py +0 -0
  218. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/gui_functions.py +0 -0
  219. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/messages.py +0 -0
  220. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/object_model.py +0 -0
  221. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/pandas_model.py +0 -0
  222. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/plot_config.py +0 -0
  223. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/profiles_model.py +0 -0
  224. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/results_model.py +0 -0
  225. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/table_view_header_wrap.py +0 -0
  226. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/themes.py +0 -0
  227. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/update_gui_all.py +0 -0
  228. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/update_gui_common.py +0 -0
  229. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Gui/wrappable_table_model.py +0 -0
  230. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/LICENSE.txt +0 -0
  231. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/__init__.py +0 -0
  232. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/export_results_driver.py +0 -0
  233. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/file_handler.py +0 -0
  234. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/server_driver.py +0 -0
  235. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/session.py +0 -0
  236. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/Session/synchronization_driver.py +0 -0
  237. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/__init__.py +0 -0
  238. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  239. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  240. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  241. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  242. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  243. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  244. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  245. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  246. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  247. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  248. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  249. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  250. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  251. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  252. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  253. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  254. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  255. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  256. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  257. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  258. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  259. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  260. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  261. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  262. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  263. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  264. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  265. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  266. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  267. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  268. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  269. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  270. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  271. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  272. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  273. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  274. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  275. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  276. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/__init__.py +0 -0
  277. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/GridCal.ico +0 -0
  278. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/GridCal.svg +0 -0
  279. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/__init__.py +0 -0
  280. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/cables.csv +0 -0
  281. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/sequence_lines.csv +0 -0
  282. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/transformers.csv +0 -0
  283. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/data/wires.csv +0 -0
  284. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/plugins.py +0 -0
  285. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/templates.py +0 -0
  286. {gridcal-5.3.3 → gridcal-5.3.5}/GridCal/update.py +0 -0
  287. {gridcal-5.3.3 → gridcal-5.3.5}/setup.cfg +0 -0
  288. {gridcal-5.3.3 → gridcal-5.3.5}/setup.py +0 -0
@@ -144,7 +144,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
144
144
  x = pos.x() - self.rect().width() / 2
145
145
  y = pos.y() - self.rect().height() / 2
146
146
  self.setRect(x, y, self.rect().width(), self.rect().height())
147
- self.set_callabacks(pos.x(), pos.y())
147
+ self.set_callbacks(pos.x(), pos.y())
148
148
 
149
149
  if self.hovered and self.enabled:
150
150
  self.update_position()
@@ -232,13 +232,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
232
232
  # Implement the functionality for Action 1 here
233
233
  self.editor.remove_line_location_graphic(self)
234
234
 
235
- def MergeFunction(self):
236
- """
237
235
 
238
- :return:
239
- """
240
- self.editor.merge_lines()
241
- pass
242
236
 
243
237
  def setNodeColor(self, inner_color: QColor, border_color: QColor = None) -> None:
244
238
  """
@@ -47,7 +47,6 @@ class MapLineContainer(GenericDiagramWidget):
47
47
  self.nodes_list: List[LineLocationGraphicItem] = list()
48
48
  self.segments_list: List[MapLineSegment] = list()
49
49
  self.enabled = True
50
- self.original = True # TODO: Que es esto?
51
50
 
52
51
  def set_width_scale(self, branch_scale: float, arrow_scale: float):
53
52
  """
@@ -469,7 +468,7 @@ class MapLineContainer(GenericDiagramWidget):
469
468
  for line in self.segments_list:
470
469
  line.set_enable(val=False)
471
470
 
472
- def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
471
+ def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
473
472
  """
474
473
 
475
474
  :param Sf:
@@ -63,7 +63,7 @@ class MapLineSegment(QGraphicsLineItem):
63
63
  self.first.add_position_change_callback(self.set_from_side_coordinates)
64
64
  self.second.add_position_change_callback(self.set_to_side_coordinates)
65
65
 
66
- self.set_colour(self.color, self.style)
66
+ self._pen = self.set_colour(self.color, self.style)
67
67
  self.update_endings()
68
68
  self.needsUpdate = True
69
69
  self.setZValue(0)
@@ -93,9 +93,9 @@ class MapLineSegment(QGraphicsLineItem):
93
93
  :param width:
94
94
  :return:
95
95
  """
96
- pen = self.pen()
97
- pen.setWidthF(width)
98
- self.setPen(pen)
96
+ if self._pen.widthF() != width: # Only update if width changes
97
+ self._pen.setWidthF(width)
98
+ self.setPen(self._pen)
99
99
 
100
100
  def set_arrow_scale(self, width: float):
101
101
  """
@@ -124,6 +124,8 @@ class MapLineSegment(QGraphicsLineItem):
124
124
  self.arrow_p_to.set_colour(color, self.arrow_p_to.w, style)
125
125
  self.arrow_q_to.set_colour(color, self.arrow_q_to.w, style)
126
126
 
127
+ return pen
128
+
127
129
  def set_from_side_coordinates(self, x: float, y: float):
128
130
  """
129
131
 
@@ -383,7 +385,7 @@ class MapLineSegment(QGraphicsLineItem):
383
385
  self.editor.circuit.delete_branch(obj=self.api_object)
384
386
  self.editor.delete_diagram_element(device=self.api_object)
385
387
 
386
- def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
388
+ def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
387
389
  """
388
390
  Set the arrow directions
389
391
  :param Sf: Complex power from
@@ -5,7 +5,7 @@
5
5
  from __future__ import annotations
6
6
  from typing import Union, TYPE_CHECKING, List, Callable
7
7
  from PySide6.QtCore import QPointF
8
- from PySide6.QtGui import QBrush, QColor
8
+ from PySide6.QtGui import QBrush
9
9
 
10
10
  from GridCal.Gui.Diagrams.generic_graphics import GenericDiagramWidget
11
11
 
@@ -24,10 +24,15 @@ class NodeTemplate(GenericDiagramWidget):
24
24
  api_object: ALL_DEV_TYPES = None,
25
25
  editor: Union[GridMapWidget, None] = None,
26
26
  draw_labels: bool = True,
27
- needsUpdate: bool = True,
28
27
  lat: float = 0.0,
29
28
  lon: float = 0.0):
30
29
  """
30
+
31
+ :param api_object: any GridCal device object
32
+ :param editor: GridMapWidget
33
+ :param draw_labels:
34
+ :param lat:
35
+ :param lon:
31
36
  """
32
37
  GenericDiagramWidget.__init__(self,
33
38
  parent=None,
@@ -35,7 +40,6 @@ class NodeTemplate(GenericDiagramWidget):
35
40
  editor=editor,
36
41
  draw_labels=draw_labels)
37
42
 
38
- self.needs_update: bool = needsUpdate
39
43
  self.lat = lat
40
44
  self.lon = lon
41
45
 
@@ -52,7 +56,7 @@ class NodeTemplate(GenericDiagramWidget):
52
56
  """
53
57
  self._callbacks.append(fcn)
54
58
 
55
- def set_callabacks(self, x: float, y: float) -> None:
59
+ def set_callbacks(self, x: float, y: float) -> None:
56
60
  """
57
61
  Call all callback functions with x, y
58
62
  :param x: x position
@@ -62,8 +62,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
62
62
  self.api_object: Substation = api_object # reassign for the types to be clear
63
63
 
64
64
  self.radius = r
65
- x, y = self.editor.to_x_y(lat=lat, lon=lon)
66
- self.setRect(x, y, self.radius, self.radius)
65
+ r2 = r / 2
66
+ x, y = self.editor.to_x_y(lat=lat, lon=lon) # upper left corner
67
+ self.setRect(
68
+ x - r2,
69
+ y - r2,
70
+ self.radius,
71
+ self.radius
72
+ )
67
73
 
68
74
  # Enable hover events for the item
69
75
  self.setAcceptHoverEvents(True)
@@ -113,7 +119,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
113
119
  r3 = r / 2
114
120
  xc = new_x + r3
115
121
  yc = new_y + r3
116
- self.set_callabacks(xc, yc)
122
+ self.set_callbacks(xc, yc)
117
123
 
118
124
  for vl_graphics in self.voltage_level_graphics:
119
125
  vl_graphics.center_on_substation()
@@ -155,8 +161,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
155
161
  :param lon:
156
162
  :return: x, y
157
163
  """
158
- x, y = self.editor.to_x_y(lat=lat, lon=lon)
159
- self.setRect(x, y, self.rect().width(), self.rect().height())
164
+ x, y = self.editor.to_x_y(lat=lat, lon=lon) # upper left corner
165
+
166
+ self.setRect(
167
+ x - self.rect().width() / 2,
168
+ y - self.rect().height() / 2,
169
+ self.rect().width(),
170
+ self.rect().height()
171
+ )
160
172
 
161
173
  for vl in self.voltage_level_graphics:
162
174
  vl.center_on_substation()
@@ -224,13 +236,20 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
224
236
  x = pos.x() - self.rect().width() / 2
225
237
  y = pos.y() - self.rect().height() / 2
226
238
  self.setRect(x, y, self.rect().width(), self.rect().height())
227
- self.set_callabacks(pos.x(), pos.y())
239
+ self.set_callbacks(pos.x(), pos.y())
228
240
 
229
241
  for vl_graphics in self.voltage_level_graphics:
230
242
  vl_graphics.center_on_substation()
231
243
 
232
244
  self.update_position_at_the_diagram() # always update
233
245
 
246
+ # QGraphicsRectItem.mouseMoveEvent(self, event)
247
+ # pos = self.mapToParent(event.pos())
248
+ # x = pos.x() + self.rect().width() / 2
249
+ # y = pos.y() + self.rect().height() / 2
250
+ # self.set_callbacks(x, y)
251
+ # self.update_position_at_the_diagram() # always update
252
+
234
253
  def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
235
254
  """
236
255
  Event handler for mouse press events.
@@ -369,7 +388,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
369
388
 
370
389
  if ok:
371
390
  x, y = self.move_to(lat=self.api_object.latitude, lon=self.api_object.longitude) # this moves the vl too
372
- self.set_callabacks(x, y)
391
+ self.set_callbacks(x, y)
373
392
 
374
393
  def new_substation_diagram(self):
375
394
  """
@@ -203,6 +203,8 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
203
203
  icon_path="",
204
204
  function_ptr=self.add_bus)
205
205
 
206
+ menu.exec_(event.screenPos())
207
+
206
208
  def set_color(self, inner_color: QColor = None, border_color: QColor = None) -> None:
207
209
  """
208
210
 
@@ -238,7 +240,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
238
240
  :param width: New pen width.
239
241
  """
240
242
  pen = self.pen()
241
- pen.setWidth(width)
243
+ pen.setWidth(width) # keep this and do not change to setWidthF
242
244
  self.setPen(pen)
243
245
 
244
246
  def add_bus(self):
@@ -45,9 +45,9 @@ class BlueMarbleTiles(Tiles):
45
45
  """
46
46
 
47
47
  Tiles.__init__(self,
48
- TilesetName=name,
49
- TilesetShortName='BM Tiles',
50
- TilesetVersion='1.0',
48
+ tile_set_name=name,
49
+ tile_set_short_name='BM Tiles',
50
+ tile_set_version='1.0',
51
51
  levels=list(range(10)),
52
52
  tile_width=256,
53
53
  tile_height=256,
@@ -66,7 +66,7 @@ class BlueMarbleTiles(Tiles):
66
66
 
67
67
  Note that we assume the point *is* on the map!
68
68
 
69
- Code taken from [http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
69
+ Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
70
70
  """
71
71
 
72
72
  lat_rad = math.radians(latitude)
@@ -76,18 +76,18 @@ class BlueMarbleTiles(Tiles):
76
76
 
77
77
  return xtile, ytile
78
78
 
79
- def Tile2Geo(self, xtile: float, ytile: float) -> Tuple[float, float]:
79
+ def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
80
80
  """Convert tile fractional coordinates to geo for level in use.
81
81
 
82
82
  tile a tupl;e (xtile,ytile) of tile fractional coordinates
83
83
 
84
84
  Note that we assume the point *is* on the map!
85
85
 
86
- Code taken from [http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
86
+ Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
87
87
  """
88
88
  n = 2.0 ** self.level
89
- xgeo = xtile / n * 360.0 - 180.0
90
- yrad = math.atan(math.sinh(math.pi * (1 - 2 * ytile / n)))
89
+ xgeo = x_tile / n * 360.0 - 180.0
90
+ yrad = math.atan(math.sinh(math.pi * (1 - 2 * y_tile / n)))
91
91
  ygeo = math.degrees(yrad)
92
92
 
93
93
  return xgeo, ygeo
@@ -23,7 +23,6 @@
23
23
  """
24
24
  A tile source that serves OpenStreetMap tiles from server(s).
25
25
  """
26
-
27
26
  import math
28
27
  from typing import Tuple
29
28
  from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
@@ -46,16 +45,15 @@ class CartoDbTiles(Tiles):
46
45
  :param tile_servers:
47
46
  """
48
47
 
49
- super().__init__(TilesetName=name,
50
- TilesetShortName='CartoDb Dark Matter',
51
- TilesetVersion='1.0',
48
+ super().__init__(tile_set_name=name,
49
+ tile_set_short_name='CartoDb Dark Matter',
50
+ tile_set_version='1.0',
52
51
  levels=list(range(22)),
53
52
  tile_width=256,
54
53
  tile_height=256,
55
54
  tiles_dir=tiles_dir,
56
55
  servers=[
57
- "http://basemaps.cartocdn.com/dark_all/"
58
- # http://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png
56
+ "https://basemaps.cartocdn.com/dark_all/"
59
57
  ] if tile_servers is None else tile_servers,
60
58
  url_path='/{Z}/{X}/{Y}.png',
61
59
  max_server_requests=2,
@@ -73,28 +71,46 @@ class CartoDbTiles(Tiles):
73
71
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
74
72
  """
75
73
  Convert geo to tile fractional coordinates for level in use.
76
- geo tuple of geo coordinates (xgeo, ygeo)
74
+ geo tuple of geo coordinates (longitude, latitude)
77
75
  Note that we assume the point *is* on the map!
78
- Code taken from [http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
76
+ Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
77
+
78
+ Lon./lat. to tile numbers:
79
+ n = 2 ^ zoom
80
+ x_tile = n * ((lon_deg + 180) / 360)
81
+ y_tile = n * (1 - (log(tan(lat_rad) + sec(lat_rad)) / π)) / 2
82
+
83
+ :return: This code returns the coordinate of the upper left point of the tile. (x_tile, y_tile)
79
84
  """
80
85
  lat_rad = math.radians(latitude)
81
- n = 2.0 ** self.level
82
- xtile = (longitude + 180.0) / 360.0 * n
83
- ytile = ((1.0 - math.log(math.tan(lat_rad) + (1.0 / math.cos(lat_rad))) / math.pi) / 2.0) * n
86
+ n = math.pow(2.0, self.level)
87
+ x_tile = (longitude + 180.0) / 360.0 * n
88
+ y_tile = ((1.0 - math.log(math.tan(lat_rad) + (1.0 / math.cos(lat_rad))) / math.pi) / 2.0) * n
84
89
 
85
- return xtile, ytile
90
+ return x_tile, y_tile
86
91
 
87
- def Tile2Geo(self, xtile: float, ytile: float) -> Tuple[float, float]:
92
+ def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
88
93
  """
89
94
  Convert tile fractional coordinates to geo for level in use.
90
- tile a tuple (xtile,ytile) of tile fractional coordinates
95
+ tile a tuple (x_tile, y_tile) of tile fractional coordinates
91
96
  Note that we assume the point *is* on the map!
92
- Code taken from [http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
97
+ Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
98
+
99
+ n = 2 ^ zoom
100
+ lon_deg = x_tile / n * 360.0 - 180.0
101
+ lat_rad = arctan(sinh(π * (1 - 2 * y_tile / n)))
102
+ lat_deg = lat_rad * 180.0 / π
103
+
104
+ This returns the NW-corner of the square.
105
+ Use the function with x_tile+1 and/or y_tile+1 to get the other corners.
106
+ With x_tile+0.5 & y_tile+0.5 it will return the center of the tile.
107
+
108
+ :return: This code returns the coordinate of the upper left point of the tile. (longitude, latitude)
93
109
  """
94
110
 
95
111
  n = 2.0 ** self.level
96
- longitude = xtile / n * 360.0 - 180.0
97
- yrad = math.atan(math.sinh(math.pi * (1 - 2 * ytile / n)))
98
- latitude = math.degrees(yrad)
112
+ longitude = x_tile / n * 360.0 - 180.0
113
+ y_rad = math.atan(math.sinh(math.pi * (1 - 2 * y_tile / n)))
114
+ latitude = math.degrees(y_rad)
99
115
 
100
116
  return longitude, latitude
@@ -72,8 +72,8 @@ class BaseTiles(object):
72
72
  self.ppd_y = 0
73
73
 
74
74
  # TODO: implement map wrap-around
75
- # self.wrap_x = False
76
- # self.wrap_y = False
75
+ self.wrap_x = False
76
+ self.wrap_y = False
77
77
 
78
78
  # setup the tile cache
79
79
  self.cache = TilesCache(tiles_dir=tiles_dir, max_lru=max_lru)
@@ -207,13 +207,13 @@ class BaseTiles(object):
207
207
  Tile coordinates are measured from map top-left.
208
208
  """
209
209
 
210
- # # if we are wrapping X or Y, get wrapped tile coords
211
- # if self.wrap_x:
212
- # x = (x + self.num_tiles_x*self.tile_size_x) % self.num_tiles_x
213
- # if self.wrap_y:
214
- # y = (y + self.num_tiles_y*self.tile_size_y) % self.num_tiles_y
210
+ # if we are wrapping X or Y, get wrapped tile coords
211
+ if self.wrap_x:
212
+ x = (x + self.num_tiles_x * self.tile_size_x) % self.num_tiles_x
213
+ if self.wrap_y:
214
+ y = (y + self.num_tiles_y * self.tile_size_y) % self.num_tiles_y
215
215
 
216
- # retrieve the tile
216
+ # retrieve the tile
217
217
  try:
218
218
  # get tile from cache
219
219
  return self.cache[(self.level, x, y)]
@@ -254,7 +254,6 @@ class BaseTiles(object):
254
254
  """
255
255
  Return True if tile at (level, x, y) is on-disk.
256
256
  """
257
-
258
257
  raise Exception('You must override BaseTiles.tile_on_disk(level, x, y))')
259
258
 
260
259
  def setCallback(self, callback: Callable[[int, float, float, QPixmap, bool], None]):
@@ -262,9 +261,7 @@ class BaseTiles(object):
262
261
  Set the "tile available" callback function.
263
262
  Only used with internet tiles. See "tiles_net.py".
264
263
  """
265
-
266
- pass
267
- # raise Exception('You must override BaseTiles.setCallback(callback))')
264
+ raise Exception('You must override BaseTiles.setCallback(callback))')
268
265
 
269
266
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[int, int]:
270
267
  """
@@ -277,12 +274,12 @@ class BaseTiles(object):
277
274
 
278
275
  raise Exception('You must override BaseTiles.Geo2Tile(xgeo, ygeo)')
279
276
 
280
- def Tile2Geo(self, xtile: float, ytile: float) -> Tuple[float, float]:
277
+ def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
281
278
  """
282
279
  Convert tile fractional coordinates to geo for level in use.
283
280
 
284
- xtile tile fractional X coordinate
285
- ytile tile fractional Y coordinate
281
+ :param x_tile: tile fractional X coordinate
282
+ :param y_tile: tile fractional Y coordinate
286
283
 
287
284
  Note that we assume the point *is* on the map!
288
285
  """
@@ -42,74 +42,6 @@ def log(val: str):
42
42
  print(val)
43
43
 
44
44
 
45
-
46
-
47
- # class OsmHandler(osm.SimpleHandler):
48
- # def __init__(self):
49
- # super().__init__()
50
- # self.nodes = []
51
- # self.ways = []
52
- #
53
- # def node(self, n):
54
- # self.nodes.append((n.location.lat, n.location.lon))
55
- #
56
- # def way(self, w):
57
- # self.ways.append([node.ref for node in w.nodes])
58
- #
59
- #
60
- # def render_pbf_to_pixmap(pbf_file: str, width=800, height=800) -> QPixmap:
61
- # """
62
- #
63
- # :param pbf_file:
64
- # :param width:
65
- # :param height:
66
- # :return:
67
- # """
68
- # # Parse the .pbf file
69
- # handler = OsmHandler()
70
- # handler.apply_file(pbf_file)
71
- #
72
- # # Setup Mercator projection
73
- # mercator_proj = Proj("epsg:3857")
74
- #
75
- # # Create a QPixmap and painter
76
- # pixmap = QPixmap(width, height)
77
- # pixmap.fill(Qt.GlobalColor.white)
78
- # painter = QPainter(pixmap)
79
- # painter.setPen(QPen(Qt.GlobalColor.black, 1))
80
- #
81
- # # Scale coordinates to fit the pixmap
82
- # bounds = {
83
- # 'min_x': float('inf'), 'max_x': float('-inf'),
84
- # 'min_y': float('inf'), 'max_y': float('-inf')
85
- # }
86
- # transformed_nodes = []
87
- #
88
- # for lat, lon in handler.nodes:
89
- # x, y = mercator_proj(lon, lat)
90
- # transformed_nodes.append((x, y))
91
- # bounds['min_x'] = min(bounds['min_x'], x)
92
- # bounds['max_x'] = max(bounds['max_x'], x)
93
- # bounds['min_y'] = min(bounds['min_y'], y)
94
- # bounds['max_y'] = max(bounds['max_y'], y)
95
- #
96
- # x_range = bounds['max_x'] - bounds['min_x']
97
- # y_range = bounds['max_y'] - bounds['min_y']
98
- # scale_x = width / x_range if x_range else 1
99
- # scale_y = height / y_range if y_range else 1
100
- # scale = min(scale_x, scale_y)
101
- #
102
- # # Render nodes as points
103
- # for x, y in transformed_nodes:
104
- # scaled_x = int((x - bounds['min_x']) * scale)
105
- # scaled_y = int((y - bounds['min_y']) * scale)
106
- # painter.drawPoint(scaled_x, height - scaled_y) # Flip y-axis for Qt's coordinate system
107
- #
108
- # # Close the painter
109
- # painter.end()
110
- # return pixmap
111
-
112
-
113
45
  class TileWorker(QThread):
114
46
  """Thread class that gets request from queue, loads tile, calls callback."""
115
47