GridCal 5.1.35__tar.gz → 5.1.37__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +2 -1
  2. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +10 -3
  3. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +13 -8
  4. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +4 -4
  5. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +3 -3
  6. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +11 -21
  7. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +30 -31
  8. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +4 -2
  9. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/base_diagram_widget.py +1 -1
  10. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/MainWindow.py +226 -230
  11. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +50 -29
  12. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/simulations.py +8 -5
  13. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/icons_rc.py +2 -2
  14. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/__version__.py +1 -1
  15. {GridCal-5.1.35 → GridCal-5.1.37}/PKG-INFO +1 -1
  16. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ExecuteGridCal.py +0 -0
  17. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  18. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  19. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  20. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  21. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  22. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  23. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/__init__.py +0 -0
  24. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/gui.py +0 -0
  25. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  26. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  27. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  28. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  29. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  30. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  31. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  32. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  33. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  34. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  35. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  36. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  37. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  38. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  39. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  40. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  41. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  42. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  43. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  44. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  45. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  46. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  47. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  48. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  49. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  50. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
  51. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  52. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  53. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  54. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  55. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  56. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  57. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  58. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  59. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  60. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  61. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  62. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  63. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  64. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  65. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  66. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  67. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  68. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  69. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  70. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  71. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  72. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  73. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  74. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  75. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  76. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  77. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  78. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  79. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  80. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  81. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  82. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  83. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  84. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  85. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  86. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  87. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  88. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  89. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  90. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  91. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  92. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  93. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  94. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  95. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  96. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  97. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  98. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  99. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  100. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  101. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  102. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  103. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  104. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  105. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  106. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  107. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  108. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/__init__.py +0 -0
  109. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  110. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  111. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  112. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  113. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  114. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/GridGenerator/gui.py +0 -0
  115. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  116. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  117. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  118. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  119. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  120. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  121. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  122. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  123. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  124. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  125. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  126. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  127. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  128. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  129. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/GridCalMain.py +0 -0
  130. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  131. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  132. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  133. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  134. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  135. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  136. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  137. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  138. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  139. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  140. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  141. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  142. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  143. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  144. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  145. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  146. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  147. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/__init__.py +0 -0
  148. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/object_select_window.py +0 -0
  149. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Main/update_gui_file.py +0 -0
  150. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  151. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  152. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  153. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  154. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  155. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  156. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  157. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  158. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  159. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  160. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  161. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  162. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  163. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  164. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  165. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  166. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  167. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  168. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  169. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  170. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  171. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  172. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  173. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  174. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  175. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  176. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  177. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  178. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  179. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  180. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  181. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  182. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  183. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  184. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  185. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  186. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  187. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  188. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  189. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  190. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  191. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  192. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  193. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  194. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  195. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  196. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  197. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  198. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  199. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Visualization/__init__.py +0 -0
  200. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Visualization/visualization.py +0 -0
  201. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Widgets/__init__.py +0 -0
  202. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  203. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  204. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  205. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  206. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  207. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  208. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  209. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/__init__.py +0 -0
  210. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/associations_model.py +0 -0
  211. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/console_widget.py +0 -0
  212. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/general_dialogues.py +0 -0
  213. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/gui_functions.py +0 -0
  214. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/messages.py +0 -0
  215. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/object_model.py +0 -0
  216. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/pandas_model.py +0 -0
  217. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/plot_config.py +0 -0
  218. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/profiles_model.py +0 -0
  219. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/table_view_header_wrap.py +0 -0
  220. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/themes.py +0 -0
  221. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/update_gui_all.py +0 -0
  222. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/update_gui_common.py +0 -0
  223. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Gui/wrappable_table_model.py +0 -0
  224. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/LICENSE.txt +0 -0
  225. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/__init__.py +0 -0
  226. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/export_results_driver.py +0 -0
  227. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/file_handler.py +0 -0
  228. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/results_model.py +0 -0
  229. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/server_driver.py +0 -0
  230. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/session.py +0 -0
  231. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/Session/synchronization_driver.py +0 -0
  232. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/__init__.py +0 -0
  233. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  234. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  235. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  236. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  237. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  238. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  239. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  240. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  241. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  242. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  243. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  244. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  245. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  246. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  247. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  248. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  249. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  250. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  251. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  252. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  253. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  254. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  255. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  256. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  257. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  258. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  259. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  260. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  261. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  262. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  263. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  264. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  265. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  266. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  267. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  268. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  269. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  270. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  271. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/__init__.py +0 -0
  272. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/data/__init__.py +0 -0
  273. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/data/cables.csv +0 -0
  274. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/data/sequence_lines.csv +0 -0
  275. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/data/transformers.csv +0 -0
  276. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/data/wires.csv +0 -0
  277. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/plugins.py +0 -0
  278. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/templates.py +0 -0
  279. {GridCal-5.1.35 → GridCal-5.1.37}/GridCal/update.py +0 -0
  280. {GridCal-5.1.35 → GridCal-5.1.37}/setup.cfg +0 -0
  281. {GridCal-5.1.35 → GridCal-5.1.37}/setup.py +0 -0
@@ -282,7 +282,8 @@ class MapLineSegment(QGraphicsLineItem):
282
282
  templates.append(temp)
283
283
 
284
284
  current_template = self.api_object.template
285
- dlg = LineEditor(self.api_object, Sbase, templates, current_template)
285
+ dlg = LineEditor(line=self.api_object, Sbase=Sbase, frequency=self.editor.circuit.fBase,
286
+ templates=templates, current_template=current_template)
286
287
  if dlg.exec_():
287
288
  pass
288
289
 
@@ -10,14 +10,21 @@ from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
10
10
  class OsmTiles(Tiles):
11
11
  """An object to source server tiles for pySlipQt."""
12
12
 
13
- def __init__(self, tiles_dir='open_street_map_tiles', http_proxy=None):
13
+ def __init__(self, name: str = 'OpenStreetMap Tiles', tiles_dir='open_street_map_tiles', http_proxy=None, tile_servers=None):
14
+ """
15
+
16
+ :param name:
17
+ :param tiles_dir:
18
+ :param http_proxy:
19
+ :param tile_servers:
20
+ """
14
21
  """Override the base class for these tiles.
15
22
 
16
23
  Basically, just fill in the BaseTiles class with values from above
17
24
  and provide the Geo2Tile() and Tile2Geo() methods.
18
25
  """
19
26
 
20
- super().__init__(TilesetName='OpenStreetMap Tiles',
27
+ super().__init__(TilesetName=name,
21
28
  TilesetShortName='OSM Tiles',
22
29
  TilesetVersion='1.0',
23
30
  levels=list(range(17)),
@@ -30,7 +37,7 @@ class OsmTiles(Tiles):
30
37
  # 'https://a.tile.openstreetmap.org',
31
38
  # 'https://b.tile.openstreetmap.org',
32
39
  # 'https://c.tile.openstreetmap.org',
33
- ],
40
+ ] if tile_servers is None else tile_servers,
34
41
  url_path='/{Z}/{X}/{Y}.png',
35
42
  max_server_requests=2,
36
43
  max_lru=10000,
@@ -6,7 +6,8 @@ For example, see osm_tiles.py.
6
6
  """
7
7
  import queue
8
8
  import ssl
9
- from urllib import request
9
+ # from urllib import request
10
+ from urllib.request import Request, urlopen
10
11
  from collections.abc import Callable
11
12
  from PySide6.QtGui import QPixmap
12
13
  from PySide6.QtCore import QThread
@@ -27,7 +28,7 @@ class TileWorker(QThread):
27
28
  id_num: int,
28
29
  server: str,
29
30
  tilepath: str,
30
- requests: queue.Queue,
31
+ requests_cue: queue.Queue,
31
32
  callback: Callable[[int, float, float, QPixmap, bool], None], # level, x, y, pixmap, error
32
33
  error_tile: QPixmap,
33
34
  content_type: str,
@@ -40,7 +41,7 @@ class TileWorker(QThread):
40
41
  :param id_num: a unique numer identifying the worker instance
41
42
  :param server: server URL
42
43
  :param tilepath: path to tile on server
43
- :param requests: the request queue
44
+ :param requests_cue: the request queue
44
45
  :param callback: function to call after tile available
45
46
  :param error_tile: image of error tile
46
47
  :param content_type: expected Content-Type string
@@ -54,7 +55,7 @@ class TileWorker(QThread):
54
55
  self.id_num = id_num
55
56
  self.server = server
56
57
  self.tilepath = tilepath
57
- self.requests = requests
58
+ self.requests_cue = requests_cue
58
59
  self.callback: Callable[[int, float, float, QPixmap, bool], None] = callback
59
60
  self.error_tile_image = error_tile
60
61
  self.content_type = content_type
@@ -70,15 +71,19 @@ class TileWorker(QThread):
70
71
  """
71
72
  while True:
72
73
  # get zoom level and tile coordinates to retrieve
73
- (level, x, y) = self.requests.get()
74
+ (level, x, y) = self.requests_cue.get()
74
75
 
75
76
  # try to retrieve the image
76
77
  error = False
77
78
  pixmap = self.error_image
78
79
  try:
79
80
  tile_url = self.server + self.tilepath.format(Z=level, X=x, Y=y)
80
- response = request.urlopen(tile_url)
81
+
82
+ # Create a Request object with the desired headers
83
+ response = urlopen(Request(tile_url, headers={'User-Agent': 'GridCal 5'}))
84
+
81
85
  content_type = response.info().get_content_type()
86
+
82
87
  if content_type == self.content_type:
83
88
  data = response.read()
84
89
  pixmap = QPixmap()
@@ -88,11 +93,11 @@ class TileWorker(QThread):
88
93
  error = True
89
94
  except Exception as e:
90
95
  error = True
91
- log('%s exception getting tile (%d,%d,%d)' % (type(e).__name__, level, x, y))
96
+ log(f"{e} exception getting tile ({level},{x},{y}) with {tile_url}")
92
97
 
93
98
  # call the callback function passing level, x, y and pixmap data
94
99
  # error is False if we want to cache this tile on-disk
95
100
  self.callback(level, x, y, pixmap, error)
96
101
 
97
102
  # finally, removes request from queue
98
- self.requests.task_done()
103
+ self.requests_cue.task_done()
@@ -147,9 +147,9 @@ class Tiles(BaseTiles):
147
147
  # test for firewall - use proxy (if supplied)
148
148
  test_url = self.servers[0] + self.url_path.format(Z=0, X=0, Y=0)
149
149
  try:
150
- # r = request.Request(test_url, headers={'User-Agent': 'Nokia (PyQt) Graphics Dojo 1.0'})
151
- # response = request.urlopen(r).read()
152
- request.urlopen(test_url)
150
+ r = request.Request(test_url, headers={'User-Agent': 'GridCal 5'})
151
+ response = request.urlopen(r).read()
152
+ # request.urlopen(test_url)
153
153
  except HTTPError as e:
154
154
  # if it's fatal, log it and die, otherwise try a proxy
155
155
  status_code = e.code
@@ -188,7 +188,7 @@ class Tiles(BaseTiles):
188
188
  worker = TileWorker(id_num=num_thread,
189
189
  server=server,
190
190
  tilepath=self.url_path,
191
- requests=self.request_queue,
191
+ requests_cue=self.request_queue,
192
192
  callback=self.tile_is_available,
193
193
  error_tile=self.error_tile,
194
194
  content_type=self.content_type,
@@ -1126,10 +1126,10 @@ class GridMapWidget(BaseDiagramWidget):
1126
1126
  #
1127
1127
  # painter = QPainter(image)
1128
1128
  # painter.setRenderHint(QPainter.Antialiasing)
1129
- # # self.view.render(painter) # self.view stores the grid widgets
1130
- # self.render(painter)
1129
+ # self.map.view.render(painter) # self.view stores the grid widgets
1130
+ # # self.render(painter)
1131
1131
  # painter.end()
1132
- image = self.grab().toImage()
1132
+ image = self.map.grab().toImage()
1133
1133
 
1134
1134
  return image, w, h
1135
1135
 
@@ -34,7 +34,7 @@ from PySide6.QtCore import Qt, QTimer, QEvent, QPointF
34
34
  from PySide6.QtGui import (QPainter, QColor, QPixmap, QCursor,
35
35
  QMouseEvent, QKeyEvent, QWheelEvent,
36
36
  QResizeEvent, QEnterEvent, QPaintEvent, QDragEnterEvent, QDragMoveEvent, QDropEvent)
37
- from PySide6.QtWidgets import (QSizePolicy, QWidget, QGraphicsScene, QGraphicsView, QStackedLayout, QVBoxLayout,
37
+ from PySide6.QtWidgets import (QSizePolicy, QWidget, QGraphicsScene, QGraphicsView, QStackedLayout,
38
38
  QGraphicsSceneMouseEvent, QGraphicsItem, QLabel, QGraphicsProxyWidget)
39
39
 
40
40
  from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
@@ -77,7 +77,7 @@ class MapScene(QGraphicsScene):
77
77
  # print(f"Scene pressed at {event.scenePos()}")
78
78
  super().mousePressEvent(event)
79
79
 
80
- def mouseReleaseEvent(self, event):
80
+ def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent) -> None:
81
81
  """
82
82
 
83
83
  :param event:
@@ -113,20 +113,19 @@ class MapView(QGraphicsView):
113
113
  self._scene = scene
114
114
 
115
115
  self.map_widget = map_widget
116
+ self.setStyleSheet("QGraphicsView { border: none; }")
116
117
 
117
118
  # Create a QLabel
118
- self.label = QLabel("Bottom Left Label")
119
- self.label.setStyleSheet("background-color: rgba(0, 0, 0, 0);"
120
- "color: rgba(150, 150, 150, 180);"
121
- "font-size:9pt") # Semi-transparent yellow
119
+ self.attribution_label = QLabel("Bottom Left Label")
120
+ self.attribution_label.setStyleSheet("background-color: rgba(0, 0, 0, 0);"
121
+ "color: rgba(150, 150, 150, 180);"
122
+ "font-size:9pt") # Semi-transparent yellow
122
123
 
123
124
  # Create a QGraphicsProxyWidget for the QLabel
124
125
  self.label_proxy_widget = QGraphicsProxyWidget()
125
- self.label_proxy_widget.setWidget(self.label)
126
-
127
- # Position the QLabel within the scene
128
- self.label_proxy_widget.setPos(0, scene.sceneRect().height() - self.label.height()) # Bottom-left position
126
+ self.label_proxy_widget.setWidget(self.attribution_label)
129
127
  self.label_proxy_widget.setFlag(QGraphicsItem.ItemIgnoresTransformations)
128
+ self.update_label_position()
130
129
 
131
130
  # Add the proxy widget to the scene
132
131
  self._scene.addItem(self.label_proxy_widget)
@@ -157,7 +156,7 @@ class MapView(QGraphicsView):
157
156
  :param val:
158
157
  :return:
159
158
  """
160
- self.label.setText(val)
159
+ self.attribution_label.setText(val)
161
160
 
162
161
  def selected_items(self) -> List[QGraphicsItem]:
163
162
  """
@@ -305,7 +304,7 @@ class MapView(QGraphicsView):
305
304
  view_height = self.viewport().height()
306
305
 
307
306
  # Set position relative to the bottom-left corner of the viewport
308
- self.label_proxy_widget.setPos(self.mapToScene(0, view_height - self.label.height()))
307
+ self.label_proxy_widget.setPos(self.mapToScene(0, view_height - self.attribution_label.height()))
309
308
 
310
309
  def set_size_diagram(self) -> None:
311
310
  """
@@ -1879,15 +1878,6 @@ class MapWidget(QWidget):
1879
1878
  # self.tile_size_y = tile_src.tile_size_y
1880
1879
  self.level = level
1881
1880
 
1882
- result = self.tile_src.GetInfo(level)
1883
- (num_tiles_x, num_tiles_y, ppd_x, ppd_y) = result
1884
- # self.map_width = self.tile_size_x * num_tiles_x
1885
- # self.map_height = self.tile_size_y * num_tiles_y
1886
-
1887
- # set tile levels stuff - allowed levels, etc
1888
- # self.tiles_max_level = max(tile_src.levels)
1889
- # self.tiles_min_level = min(tile_src.levels)
1890
-
1891
1881
  # set callback from Tile source object when tile(s) available
1892
1882
  self.tile_src.setCallback(self.on_tile_available)
1893
1883
 
@@ -29,8 +29,10 @@ class LineEditor(QDialog):
29
29
  LineEditor
30
30
  """
31
31
 
32
- def __init__(self, line: Line,
32
+ def __init__(self,
33
+ line: Line,
33
34
  Sbase=100,
35
+ frequency=50,
34
36
  templates: Union[List[Union[SequenceLineType, OverheadLineType, UndergroundLineType]], None] = None,
35
37
  current_template=None):
36
38
  """
@@ -46,6 +48,8 @@ class LineEditor(QDialog):
46
48
 
47
49
  self.Sbase = Sbase
48
50
 
51
+ self.frequency = frequency
52
+
49
53
  self.templates = templates
50
54
 
51
55
  self.current_template = current_template
@@ -130,6 +134,7 @@ class LineEditor(QDialog):
130
134
  self.l_spinner.setMaximum(9999999)
131
135
  self.l_spinner.setDecimals(6)
132
136
  self.l_spinner.setValue(length)
137
+ self.l_spinner.setSuffix(' Km')
133
138
 
134
139
  # Max current
135
140
  self.i_spinner = QDoubleSpinBox()
@@ -137,6 +142,7 @@ class LineEditor(QDialog):
137
142
  self.i_spinner.setMaximum(9999999)
138
143
  self.i_spinner.setDecimals(2)
139
144
  self.i_spinner.setValue(I)
145
+ self.i_spinner.setSuffix(' KA')
140
146
 
141
147
  # R
142
148
  self.r_spinner = QDoubleSpinBox()
@@ -144,6 +150,7 @@ class LineEditor(QDialog):
144
150
  self.r_spinner.setMaximum(9999999)
145
151
  self.r_spinner.setDecimals(6)
146
152
  self.r_spinner.setValue(R)
153
+ self.r_spinner.setSuffix(' Ω/Km')
147
154
 
148
155
  # X
149
156
  self.x_spinner = QDoubleSpinBox()
@@ -151,6 +158,7 @@ class LineEditor(QDialog):
151
158
  self.x_spinner.setMaximum(9999999)
152
159
  self.x_spinner.setDecimals(6)
153
160
  self.x_spinner.setValue(X)
161
+ self.x_spinner.setSuffix(' Ω/Km')
154
162
 
155
163
  # B
156
164
  self.b_spinner = QDoubleSpinBox()
@@ -158,6 +166,7 @@ class LineEditor(QDialog):
158
166
  self.b_spinner.setMaximum(9999999)
159
167
  self.b_spinner.setDecimals(6)
160
168
  self.b_spinner.setValue(B)
169
+ self.b_spinner.setSuffix(" uS/Km")
161
170
 
162
171
  # apply to profile
163
172
  self.apply_to_profile = QCheckBox()
@@ -177,19 +186,19 @@ class LineEditor(QDialog):
177
186
  self.layout.addWidget(self.load_template_btn)
178
187
  self.layout.addWidget(QLabel(""))
179
188
 
180
- self.layout.addWidget(QLabel("L: Line length [Km]"))
189
+ self.layout.addWidget(QLabel("L: Line length"))
181
190
  self.layout.addWidget(self.l_spinner)
182
191
 
183
- self.layout.addWidget(QLabel("Imax: Max. current [KA] @" + str(int(Vf)) + " [KV]"))
192
+ self.layout.addWidget(QLabel("Imax: Max. current @" + str(int(Vf)) + " [KV]"))
184
193
  self.layout.addWidget(self.i_spinner)
185
194
 
186
- self.layout.addWidget(QLabel("R: Resistance [Ohm/Km]"))
195
+ self.layout.addWidget(QLabel("R: Resistance"))
187
196
  self.layout.addWidget(self.r_spinner)
188
197
 
189
- self.layout.addWidget(QLabel("X: Inductance [Ohm/Km]"))
198
+ self.layout.addWidget(QLabel("X: Inductance"))
190
199
  self.layout.addWidget(self.x_spinner)
191
200
 
192
- self.layout.addWidget(QLabel("B: Susceptance [uS/Km]"))
201
+ self.layout.addWidget(QLabel("S: Susceptance"))
193
202
  self.layout.addWidget(self.b_spinner)
194
203
 
195
204
  self.layout.addWidget(self.apply_to_profile)
@@ -210,37 +219,27 @@ class LineEditor(QDialog):
210
219
  self.line.length = self.l_spinner.value()
211
220
  self.line.apply_template(self.selected_template, Sbase=self.Sbase)
212
221
  else:
213
- length = self.l_spinner.value()
214
- I = self.i_spinner.value()
215
- R = self.r_spinner.value() * length
216
- X = self.x_spinner.value() * length
217
- B = self.b_spinner.value() * length
218
-
219
- Vf = self.line.get_max_bus_nominal_voltage()
220
-
221
- Zbase = (Vf * Vf) / self.Sbase
222
- Ybase = 1.0 / Zbase
223
-
224
- self.line.R = np.round(R / Zbase, 6)
225
- self.line.X = np.round(X / Zbase, 6)
226
- self.line.B = np.round(B * 1e-6 / Ybase, 6)
227
- old_rate = float(self.line.rate)
228
- new_rate = np.round(I * Vf * 1.73205080757, 6) # nominal power in MVA = kA * kV * sqrt(3)
229
- self.line.rate = new_rate
230
- self.line.length = length
231
-
232
- if self.apply_to_profile.isChecked():
233
- prof_old = self.line.rate_prof.toarray()
234
- self.line.rate_prof.set(prof_old * new_rate / old_rate)
222
+ wf = 2 * np.pi * self.frequency
223
+ self.line.fill_design_properties(
224
+ r_ohm=self.r_spinner.value(), # ohm / km
225
+ x_ohm=self.x_spinner.value(), # ohm / km
226
+ c_nf=self.b_spinner.value() * 1e3 / wf, # nF / km
227
+ length=self.l_spinner.value(), # km
228
+ Imax=self.i_spinner.value(), # kA
229
+ freq=self.frequency, # Hz
230
+ Sbase=self.Sbase, # MVA
231
+ apply_to_profile=self.apply_to_profile.isChecked()
232
+ )
235
233
 
236
234
  self.accept()
237
235
 
238
- def load_template(self, template):
236
+ def load_template(self, template: Union[SequenceLineType, OverheadLineType, UndergroundLineType]):
239
237
  """
240
-
241
- :param template:
238
+ Load a template in the editor
239
+ :param template: line compatible template
242
240
  :return:
243
241
  """
242
+
244
243
  if isinstance(template, SequenceLineType):
245
244
  self.i_spinner.setValue(template.Imax)
246
245
  self.r_spinner.setValue(template.R)
@@ -245,7 +245,8 @@ class LineGraphicItem(LineGraphicTemplateItem):
245
245
  templates.append(temp)
246
246
 
247
247
  current_template = self.api_object.template
248
- dlg = LineEditor(self.api_object, Sbase, templates, current_template)
248
+ dlg = LineEditor(line=self.api_object, Sbase=Sbase, frequency=self.editor.circuit.fBase,
249
+ templates=templates, current_template=current_template)
249
250
  if dlg.exec_():
250
251
  pass
251
252
 
@@ -256,7 +257,8 @@ class LineGraphicItem(LineGraphicTemplateItem):
256
257
  """
257
258
  Sbase = self.editor.circuit.Sbase
258
259
 
259
- dlg = LineEditor(self.api_object, Sbase)
260
+ dlg = LineEditor(line=self.api_object, Sbase=Sbase, frequency=self.editor.circuit.fBase,
261
+ templates=None, current_template=None)
260
262
  if dlg.exec_():
261
263
  pass
262
264
 
@@ -40,7 +40,7 @@ from GridCalEngine.Devices.Diagrams.schematic_diagram import SchematicDiagram
40
40
  from GridCalEngine.Devices.Diagrams.map_diagram import MapDiagram
41
41
  from GridCalEngine.Simulations.types import DRIVER_OBJECTS
42
42
  from GridCalEngine.basic_structures import Logger
43
- from GridCalEngine.enumerations import DeviceType, SimulationTypes
43
+ from GridCalEngine.enumerations import SimulationTypes
44
44
 
45
45
  from GridCal.Gui.Diagrams.graphics_manager import GraphicsManager
46
46
  import GridCalEngine.Devices.Diagrams.palettes as palettes