GridCal 5.1.31__tar.gz → 5.1.33__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 (282) hide show
  1. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +7 -5
  2. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Branches}/new_line_dialogue.py +14 -5
  3. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/blue_marble.py +2 -1
  4. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/cartodb.py +2 -1
  5. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/mapbox.py +2 -1
  6. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/mapquest.py +2 -1
  7. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/open_street_map.py +2 -1
  8. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/stamen_toner.py +2 -1
  9. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/stamen_transport.py +2 -1
  10. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/stamen_watercolor.py +2 -1
  11. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +4 -1
  12. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +17 -16
  13. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +173 -24
  14. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +1 -2
  15. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/base_diagram_widget.py +18 -1
  16. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/GridCalMain.py +1 -0
  17. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +43 -10
  18. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Results/results.py +1 -1
  19. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -1
  20. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/base_gui.py +1 -1
  21. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/io.py +2 -8
  22. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/simulations.py +52 -32
  23. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/session.py +47 -55
  24. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/__version__.py +1 -1
  25. {GridCal-5.1.31/GridCal/Gui → GridCal-5.1.33/GridCal}/plugins.py +31 -22
  26. {GridCal-5.1.31 → GridCal-5.1.33}/PKG-INFO +1 -1
  27. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ExecuteGridCal.py +0 -0
  28. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  29. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  30. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  31. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  32. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  33. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  34. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/__init__.py +0 -0
  35. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/gui.py +0 -0
  36. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  37. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  38. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  39. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  40. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  41. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  42. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  43. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ConsoleWidget.py +0 -0
  44. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  45. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  46. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  47. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  48. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  49. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  50. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  51. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  52. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  53. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  54. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  55. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  56. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  57. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  58. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  59. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  60. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  61. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
  62. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  63. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  64. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  65. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/__init__.py +0 -0
  66. {GridCal-5.1.31/GridCal/Gui/Diagrams/MapWidget → GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/Tiles}/TileProviders/gmt_local.py +0 -0
  67. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  68. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  69. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  70. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  71. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  72. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  73. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  74. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
  75. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
  76. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  77. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  78. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  79. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  80. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  81. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  82. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  83. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  84. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  85. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  86. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  87. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  88. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  89. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  90. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  91. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  92. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  93. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  94. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  95. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  96. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  97. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  98. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  99. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  100. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  101. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  102. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  103. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  104. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  105. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  106. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  107. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  108. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  109. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  110. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  111. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  112. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  113. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  114. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  115. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  116. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/__init__.py +0 -0
  117. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  118. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  119. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  120. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GeneralDialogues.py +0 -0
  121. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  122. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  123. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GridGenerator/gui.py +0 -0
  124. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  125. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  126. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/GuiFunctions.py +0 -0
  127. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  128. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  129. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  130. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  131. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  132. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  133. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  134. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  135. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  136. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  137. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  138. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  139. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/MainWindow.py +0 -0
  140. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  141. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  142. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  143. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  144. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  145. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  146. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  147. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  148. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  149. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  150. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  151. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  152. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  153. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/__init__.py +0 -0
  154. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/icons_rc.py +0 -0
  155. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/object_select_window.py +0 -0
  156. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Main/update_gui_file.py +0 -0
  157. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  158. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  159. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  160. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  161. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  162. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  163. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  164. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  165. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  166. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  167. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  168. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  169. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  170. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  171. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  172. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  173. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  174. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  175. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  176. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  177. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  178. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  179. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  180. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  181. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  182. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  183. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  184. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  185. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  186. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  187. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  188. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  189. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  190. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  191. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  192. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  193. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  194. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  195. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  196. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  197. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  198. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  199. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  200. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  201. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  202. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  203. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  204. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  205. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  206. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Visualization/__init__.py +0 -0
  207. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Visualization/visualization.py +0 -0
  208. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Widgets/__init__.py +0 -0
  209. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  210. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  211. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  212. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  213. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  214. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  215. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  216. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/__init__.py +0 -0
  217. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/associations_model.py +0 -0
  218. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/messages.py +0 -0
  219. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/object_model.py +0 -0
  220. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/pandas_model.py +0 -0
  221. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/plot_config.py +0 -0
  222. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/profiles_model.py +0 -0
  223. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/table_view_header_wrap.py +0 -0
  224. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/themes.py +0 -0
  225. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/update_gui_all.py +0 -0
  226. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Gui/update_gui_common.py +0 -0
  227. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/LICENSE.txt +0 -0
  228. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/__init__.py +0 -0
  229. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/export_results_driver.py +0 -0
  230. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/file_handler.py +0 -0
  231. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/results_model.py +0 -0
  232. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/server_driver.py +0 -0
  233. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/Session/synchronization_driver.py +0 -0
  234. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/__init__.py +0 -0
  235. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  236. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  237. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  238. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  239. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  240. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  241. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  242. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  243. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  244. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  245. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  246. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  247. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  248. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  249. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  250. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  251. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  252. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  253. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  254. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  255. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  256. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  257. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  258. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  259. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  260. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  261. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  262. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  263. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  264. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  265. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  266. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  267. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  268. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  269. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  270. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  271. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  272. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  273. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/__init__.py +0 -0
  274. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/data/__init__.py +0 -0
  275. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/data/cables.csv +0 -0
  276. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/data/sequence_lines.csv +0 -0
  277. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/data/transformers.csv +0 -0
  278. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/data/wires.csv +0 -0
  279. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/templates.py +0 -0
  280. {GridCal-5.1.31 → GridCal-5.1.33}/GridCal/update.py +0 -0
  281. {GridCal-5.1.31 → GridCal-5.1.33}/setup.cfg +0 -0
  282. {GridCal-5.1.31 → GridCal-5.1.33}/setup.py +0 -0
@@ -411,14 +411,16 @@ class MapLineContainer(GenericDiagramWidget):
411
411
  :param index:
412
412
  :return:
413
413
  """
414
+ # TODO: Review this and possibly link to existing functions
414
415
  if 0 < index < len(self.api_object.locations.data) and len(self.api_object.locations.data) > 3:
415
416
 
416
- ln1 = Line()
417
- ln1.set_data_from(self.api_object)
418
- # ln1 = self.api_object.copy()
417
+ # ln1 = Line()
418
+ # ln1.set_data_from(self.api_object)
419
+ ln1 = self.api_object.copy()
419
420
 
420
- ln2 = Line()
421
- ln2.set_data_from(self.api_object)
421
+ # ln2 = Line()
422
+ # ln2.set_data_from(self.api_object)
423
+ ln2 = self.api_object.copy()
422
424
 
423
425
  first_list = self.api_object.locations.data[:index]
424
426
  second_list = self.api_object.locations.data[index:]
@@ -15,12 +15,15 @@
15
15
  # along with this program; if not, write to the Free Software Foundation,
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
 
18
- from PySide6.QtWidgets import (QApplication, QDialog, QVBoxLayout, QHBoxLayout, QLabel, QComboBox, QDialogButtonBox)
18
+ from PySide6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel, QComboBox, QDialogButtonBox)
19
19
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
20
20
  from GridCalEngine.Devices.Substation.substation import Substation
21
21
 
22
22
 
23
23
  class NewMapLineDialogue(QDialog):
24
+ """
25
+ NewMapLineDialogue
26
+ """
24
27
  def __init__(self, grid: MultiCircuit, se_from: Substation, se_to: Substation, parent=None):
25
28
  """
26
29
  Constructor
@@ -89,6 +92,10 @@ class NewMapLineDialogue(QDialog):
89
92
  self.setLayout(main_layout)
90
93
 
91
94
  def is_valid(self):
95
+ """
96
+
97
+ :return:
98
+ """
92
99
  return self._is_valid
93
100
 
94
101
  def bus_from(self):
@@ -114,12 +121,14 @@ class NewMapLineDialogue(QDialog):
114
121
  return None
115
122
 
116
123
  def accept(self):
117
- selected_option1 = self.combo_box_from.currentText()
118
- selected_option2 = self.combo_box_to.currentText()
119
- # print(f"Accepted: {selected_option1}, {selected_option2}")
124
+ """
125
+ accept
126
+ """
120
127
  super().accept()
121
128
 
122
129
  def reject(self):
130
+ """
131
+ reject
132
+ """
123
133
  self._is_valid = False
124
- # print("Canceled")
125
134
  super().reject()
@@ -34,7 +34,8 @@ class BlueMarbleTiles(Tiles):
34
34
  servers=['https://s3.amazonaws.com', ],
35
35
  url_path='/com.modestmaps.bluemarble/{Z}-r{Y}-c{X}.jpg',
36
36
  max_server_requests=2,
37
- http_proxy=http_proxy)
37
+ http_proxy=http_proxy,
38
+ attribution="© NASA Blue Marble, © OpenStreetMap contributors")
38
39
 
39
40
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
40
41
  """Convert geo to tile fractional coordinates for level in use.
@@ -38,7 +38,8 @@ class CartoDbTiles(Tiles):
38
38
  url_path='/{Z}/{X}/{Y}.png',
39
39
  max_server_requests=2,
40
40
  max_lru=10000,
41
- http_proxy=http_proxy)
41
+ http_proxy=http_proxy,
42
+ attribution="© CARTO, © OpenStreetMap contributors")
42
43
  # TODO: implement map wrap-around
43
44
  # self.wrap_x = True
44
45
  # self.wrap_y = False
@@ -29,7 +29,8 @@ class MapboxTiles(Tiles):
29
29
  ],
30
30
  url_path='/v3/examples.map-szwdot65/{Z}/{X}/{Y}.png',
31
31
  max_server_requests=2,
32
- http_proxy=http_proxy)
32
+ http_proxy=http_proxy,
33
+ attribution="© Mapbox © OpenStreetMap contributors")
33
34
 
34
35
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
35
36
  """Convert geo to tile fractional coordinates for level in use.
@@ -32,7 +32,8 @@ class MapquestTiles(Tiles):
32
32
  max_server_requests=2,
33
33
  max_lru=10000,
34
34
  tiles_dir=tiles_dir,
35
- http_proxy=http_proxy)
35
+ http_proxy=http_proxy,
36
+ attribution="© MapQuest, © OpenStreetMap contributors")
36
37
 
37
38
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
38
39
  """
@@ -34,7 +34,8 @@ class OsmTiles(Tiles):
34
34
  url_path='/{Z}/{X}/{Y}.png',
35
35
  max_server_requests=2,
36
36
  max_lru=10000,
37
- http_proxy=http_proxy)
37
+ http_proxy=http_proxy,
38
+ attribution="© OpenStreetMap contributors")
38
39
  # TODO: implement map wrap-around
39
40
  # self.wrap_x = True
40
41
  # self.wrap_y = False
@@ -31,7 +31,8 @@ class StamenTonerTiles(Tiles):
31
31
  url_path='/toner/{Z}/{X}/{Y}.png',
32
32
  max_server_requests=2,
33
33
  max_lru=10000,
34
- http_proxy=http_proxy)
34
+ http_proxy=http_proxy,
35
+ attribution="Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.")
35
36
 
36
37
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
37
38
  """Convert geo to tile fractional coordinates for level in use.
@@ -34,7 +34,8 @@ class StamenTransportTiles(Tiles):
34
34
  max_server_requests=2,
35
35
  max_lru=10000,
36
36
  tiles_dir=tiles_dir,
37
- http_proxy=http_proxy)
37
+ http_proxy=http_proxy,
38
+ attribution="Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.")
38
39
 
39
40
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
40
41
  """Convert geo to tile fractional coordinates for level in use.
@@ -30,7 +30,8 @@ class StamenWatercolorTiles(Tiles):
30
30
  max_server_requests=2,
31
31
  max_lru=10000,
32
32
  tiles_dir=tiles_dir,
33
- http_proxy=http_proxy)
33
+ http_proxy=http_proxy,
34
+ attribution="Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.")
34
35
 
35
36
  def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
36
37
  """
@@ -59,7 +59,8 @@ class Tiles(BaseTiles):
59
59
  url_path: str,
60
60
  max_server_requests: int,
61
61
  http_proxy,
62
- refetch_days: int = 60):
62
+ refetch_days: int = 60,
63
+ attribution: str = ""):
63
64
  """
64
65
  Initialise a Tiles instance.
65
66
  :param levels: a list of level numbers that are to be served
@@ -77,6 +78,8 @@ class Tiles(BaseTiles):
77
78
  self.TilesetShortName = TilesetShortName
78
79
  self.TilesetVersion = TilesetVersion
79
80
 
81
+ self.attribution_string = attribution
82
+
80
83
  # prepare the tile cache directory, if required
81
84
  # we have to do this *before* the base class initialization!
82
85
  for level in levels:
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software Foundation,
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  import os
18
- from typing import Union, List, Tuple, Dict
18
+ from typing import Union, List, Tuple
19
19
  import numpy as np
20
20
  import math
21
21
  from PySide6.QtWidgets import QGraphicsItem
@@ -39,7 +39,7 @@ from GridCalEngine.Devices.Substation.voltage_level import VoltageLevel
39
39
  from GridCalEngine.Devices.Branches.line_locations import LineLocation
40
40
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
41
41
  from GridCalEngine.enumerations import DeviceType
42
- from GridCalEngine.Devices.types import ALL_DEV_TYPES, INJECTION_DEVICE_TYPES, FLUID_TYPES
42
+ from GridCalEngine.Devices.types import ALL_DEV_TYPES
43
43
  from GridCalEngine.basic_structures import Logger
44
44
 
45
45
  from GridCal.Gui.Diagrams.MapWidget.Branches.map_ac_line import MapAcLine
@@ -50,7 +50,7 @@ from GridCal.Gui.Diagrams.MapWidget.Substation.node_graphic_item import NodeGrap
50
50
  from GridCal.Gui.Diagrams.MapWidget.Substation.substation_graphic_item import SubstationGraphicItem
51
51
  from GridCal.Gui.Diagrams.MapWidget.Substation.voltage_level_graphic_item import VoltageLevelGraphicItem
52
52
  from GridCal.Gui.Diagrams.MapWidget.map_widget import MapWidget
53
- from GridCal.Gui.Diagrams.MapWidget.new_line_dialogue import NewMapLineDialogue
53
+ from GridCal.Gui.Diagrams.MapWidget.Branches.new_line_dialogue import NewMapLineDialogue
54
54
  import GridCal.Gui.Visualization.visualization as viz
55
55
  import GridCalEngine.Devices.Diagrams.palettes as palettes
56
56
  from GridCal.Gui.Diagrams.graphics_manager import ALL_MAP_GRAPHICS
@@ -212,14 +212,16 @@ class GridMapWidget(BaseDiagramWidget):
212
212
  call_delete_db_element_func: Callable[["GridMapWidget", ALL_DEV_TYPES], None] = None,
213
213
  call_new_substation_diagram_func: Callable[[Substation], None] = None, ):
214
214
  """
215
-
216
- :param tile_src:
217
- :param start_level:
218
- :param longitude:
219
- :param latitude:
220
- :param name:
221
- :param diagram:
222
- :param call_delete_db_element_func:
215
+ GridMapWidget
216
+ :param tile_src: Tiles instance
217
+ :param start_level: starting level
218
+ :param longitude: Center point Longitude (deg)
219
+ :param latitude: Center point Latitude (deg)
220
+ :param name: Name of the diagram
221
+ :param circuit: MultiCircuit instance
222
+ :param diagram: Diagram instance (optional)
223
+ :param call_delete_db_element_func: function pointer to call on delete (optional)
224
+ :param call_new_substation_diagram_func: function pointer to call on new_substation (optional)
223
225
  """
224
226
 
225
227
  BaseDiagramWidget.__init__(self,
@@ -237,8 +239,6 @@ class GridMapWidget(BaseDiagramWidget):
237
239
  self.map = MapWidget(parent=self,
238
240
  tile_src=tile_src,
239
241
  start_level=start_level,
240
- startLat=latitude,
241
- startLon=longitude,
242
242
  editor=self,
243
243
  zoom_callback=self.zoom_callback,
244
244
  position_callback=self.position_callback)
@@ -458,9 +458,11 @@ class GridMapWidget(BaseDiagramWidget):
458
458
  if it1 == it2:
459
459
  return 0
460
460
 
461
- new_line = Line()
462
- new_line.set_data_from(it1.line_container.api_object)
461
+ # TODO: Review this and possibly link to existing functions
462
+ # new_line = Line()
463
+ # new_line.set_data_from(it1.line_container.api_object)
463
464
  # ln1 = self.api_object.copy()
465
+ new_line = it1.line_container.api_object.copy()
464
466
 
465
467
  better_first, better_second, bus_from, bus_to = compare_options(it1, it2)
466
468
 
@@ -956,7 +958,6 @@ class GridMapWidget(BaseDiagramWidget):
956
958
 
957
959
  voltage_cmap = viz.get_voltage_color_map()
958
960
  loading_cmap = viz.get_loading_color_map()
959
- bus_types = ['', 'PQ', 'PV', 'Slack', 'PQV', 'P']
960
961
 
961
962
  vmin = 0
962
963
  vmax = 1.2
@@ -34,8 +34,8 @@ 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, QVBoxLayout,
38
- QGraphicsSceneMouseEvent, QGraphicsItem)
37
+ from PySide6.QtWidgets import (QSizePolicy, QWidget, QGraphicsScene, QGraphicsView, QStackedLayout, QVBoxLayout,
38
+ QGraphicsSceneMouseEvent, QGraphicsItem, QLabel, QGraphicsProxyWidget)
39
39
 
40
40
  from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
41
41
 
@@ -114,6 +114,19 @@ class MapView(QGraphicsView):
114
114
 
115
115
  self.map_widget = map_widget
116
116
 
117
+ # Create a QLabel
118
+ self.label = QLabel("Bottom Left Label")
119
+ self.label.setStyleSheet("background-color: rgba(255, 255, 0, 150);") # Semi-transparent yellow
120
+
121
+ # Create a QGraphicsProxyWidget for the QLabel
122
+ self.proxy_widget = QGraphicsProxyWidget()
123
+ self.proxy_widget.setWidget(self.label)
124
+ # Position the QLabel within the scene
125
+ self.proxy_widget.setPos(0, scene.sceneRect().height() - self.label.height()) # Bottom-left position
126
+
127
+ # Add the proxy widget to the scene
128
+ self._scene.addItem(self.proxy_widget)
129
+
117
130
  self.mouse_x = None
118
131
  self.mouse_y = None
119
132
 
@@ -269,6 +282,8 @@ class MapView(QGraphicsView):
269
282
 
270
283
  self.map_widget.resizeEvent(event=event)
271
284
 
285
+ self.proxy_widget.setPos(0, self._scene.sceneRect().height() - self.label.height()) # Bottom-left position
286
+
272
287
  def setSizeDiagram(self) -> None:
273
288
  """
274
289
 
@@ -349,6 +364,142 @@ class MapView(QGraphicsView):
349
364
  self.map_widget.view.centerOn(point)
350
365
 
351
366
 
367
+ class NoticeWidget(QWidget):
368
+ """
369
+ MapView
370
+ """
371
+
372
+ def __init__(self, map_widget: "MapWidget"):
373
+ """
374
+
375
+ :param map_widget:
376
+ """
377
+ QWidget.__init__(self)
378
+
379
+ # Enable drop functionality
380
+ self.setAcceptDrops(True)
381
+
382
+ self.map_widget = map_widget
383
+
384
+ # add a label to display copyright stuff
385
+ self.notice_label = QLabel("some notice")
386
+ self.notice_label.setAlignment(Qt.AlignLeft | Qt.AlignBottom)
387
+ self.notice_label.setStyleSheet("background-color: rgba(255, 255, 255, 0);"
388
+ "font-size: 8pt;"
389
+ "color: rgba(100, 100, 100, 255);")
390
+
391
+ # Create a container for the label and position it at the bottom-left
392
+ self.label_container = QWidget()
393
+ self.label_layout = QVBoxLayout(self.label_container)
394
+ self.label_layout.addWidget(self.notice_label)
395
+ self.label_layout.setAlignment(Qt.AlignLeft | Qt.AlignBottom)
396
+ self.label_layout.setContentsMargins(1, 1, 1, 1) # Optional margin
397
+
398
+ self.setLayout(self.label_layout)
399
+
400
+ def set_notice(self, val: str) -> None:
401
+ """
402
+ Set the notification text
403
+ :param val: some text
404
+ """
405
+ self.notice_label.setText(val)
406
+
407
+ def mousePressEvent(self, event: QMouseEvent):
408
+ """
409
+
410
+ :param event:
411
+ :return:
412
+ """
413
+ self.map_widget.view.mousePressEvent(event)
414
+ super().mousePressEvent(event)
415
+
416
+ def mouseReleaseEvent(self, event: QMouseEvent):
417
+ """
418
+
419
+ :param event:
420
+ :return:
421
+ """
422
+ self.map_widget.view.mouseReleaseEvent(event)
423
+ super().mouseReleaseEvent(event)
424
+
425
+ def mouseDoubleClickEvent(self, event: QMouseEvent):
426
+ """
427
+
428
+ :param event:
429
+ :return:
430
+ """
431
+ self.map_widget.view.mouseDoubleClickEvent(event)
432
+ super().mouseDoubleClickEvent(event)
433
+
434
+ def mouseMoveEvent(self, event: QMouseEvent):
435
+ """
436
+
437
+ :param event:
438
+ :return:
439
+ """
440
+ self.map_widget.view.mouseMoveEvent(event)
441
+ super().mouseMoveEvent(event)
442
+
443
+ def keyPressEvent(self, event: QKeyEvent):
444
+ """
445
+
446
+ :param event:
447
+ :return:
448
+ """
449
+ self.map_widget.view.keyPressEvent(event)
450
+
451
+ def keyReleaseEvent(self, event: QKeyEvent):
452
+ """
453
+
454
+ :param event:
455
+ :return:
456
+ """
457
+ self.map_widget.view.keyReleaseEvent(event)
458
+
459
+ def wheelEvent(self, event: QWheelEvent):
460
+ """
461
+
462
+ :param event:
463
+ :return:
464
+ """
465
+ super().wheelEvent(event)
466
+ self.map_widget.view.wheelEvent(event)
467
+
468
+ def dragEnterEvent(self, event: QDragEnterEvent):
469
+ """
470
+
471
+ :param event:
472
+ :return:
473
+ """
474
+ if event.mimeData().hasFormat('component/name'):
475
+ event.accept()
476
+
477
+ def dragMoveEvent(self, event: QDragMoveEvent):
478
+ """
479
+
480
+ :param event:
481
+ :return:
482
+ """
483
+ super().dragMoveEvent(event)
484
+ self.map_widget.view.dragMoveEvent(event)
485
+
486
+ def dropEvent(self, event: QDropEvent):
487
+ """
488
+
489
+ :param event:
490
+ :return:
491
+ """
492
+ super().dropEvent(event)
493
+ self.map_widget.view.dropEvent(event)
494
+
495
+ def resizeEvent(self, event: QResizeEvent = None):
496
+ """
497
+ Widget resized, recompute some state.
498
+ """
499
+ super().resizeEvent(event)
500
+ self.map_widget.view.resizeEvent(event=event)
501
+
502
+
352
503
  class MapWidget(QWidget):
353
504
  """
354
505
  Map widget
@@ -358,8 +509,6 @@ class MapWidget(QWidget):
358
509
  parent: Union[None, QWidget],
359
510
  tile_src: Tiles,
360
511
  start_level: int,
361
- startLat: float,
362
- startLon: float,
363
512
  editor: GridMapWidget,
364
513
  zoom_callback: Callable[[int], None],
365
514
  position_callback: Callable[[float, float, int, int], None]):
@@ -368,10 +517,8 @@ class MapWidget(QWidget):
368
517
  :param parent: the GUI parent widget
369
518
  :param tile_src: a Tiles object, source of tiles
370
519
  :param start_level: level to initially display
371
- :param startLat:
372
- :param startLon:
373
- :param zoom_callback:
374
- :param position_callback:
520
+ :param zoom_callback: zoom change callback function
521
+ :param position_callback: position change change callback function
375
522
  """
376
523
 
377
524
  QWidget.__init__(self, parent) # inherit all parent object setup
@@ -381,35 +528,29 @@ class MapWidget(QWidget):
381
528
  # -------------------------------------------------------------------------
382
529
  self.diagram_scene = MapScene(self)
383
530
 
531
+ # pointer to the editor
384
532
  self.editor: GridMapWidget = editor
385
533
 
386
- self.view = MapView(scene=self.diagram_scene, map_widget=self)
387
-
388
- self.view.setBackgroundBrush(Qt.transparent)
389
-
390
- # re-map events, because otherwise the view shadows the base widget events
391
- # self.view.mousePressEvent = self.mousePressEvent
392
- # self.view.mouseReleaseEvent = self.mouseReleaseEvent
393
- # self.view.mouseDoubleClickEvent = self.mouseDoubleClickEvent
394
- # self.view.mouseMoveEvent = self.mouseMoveEvent
395
- # self.view.wheelEvent = self.wheelEvent
396
- # self.view.keyPressEvent = self.keyPressEvent
397
- # self.view.keyReleaseEvent = self.keyReleaseEvent
398
-
399
534
  # Create a layout for the view
400
- self.layout = QVBoxLayout()
401
- self.layout.addWidget(self.view) # Add the QGraphicsView to the layout
402
- self.setLayout(self.layout) # Set the layout for the MapWidget
535
+ self.layout = QStackedLayout()
403
536
  self.layout.setContentsMargins(0, 0, 0, 0)
404
537
  self.layout.setSpacing(0)
405
538
  self.setStyleSheet("background-color: transparent;")
406
539
 
540
+ # the view is the transparent layer used to draw stuff
541
+ self.view = MapView(scene=self.diagram_scene, map_widget=self)
542
+ self.view.setBackgroundBrush(Qt.transparent)
543
+
544
+ # notification widget
545
+ self.notice_widget = NoticeWidget(map_widget=self)
546
+
407
547
  # -------------------------------------------------------------------------
408
548
  # Internal vars
409
549
  # -------------------------------------------------------------------------
410
550
  # remember the tile source object
411
551
  self._tile_src: Tiles = tile_src
412
552
  self._tile_src.setCallback(self.on_tile_available)
553
+ self.notice_widget.set_notice(val=self._tile_src.attribution_string)
413
554
 
414
555
  # the tile coordinates
415
556
  self.level: int = start_level
@@ -468,6 +609,12 @@ class MapWidget(QWidget):
468
609
  longitude=0,
469
610
  latitude=40)
470
611
 
612
+ # add the widgets in a leyered manner
613
+ # self.layout.addWidget(self.notice_widget)
614
+ self.layout.addWidget(self.view) # Add the QGraphicsView to the layout
615
+
616
+ self.setLayout(self.layout) # Set the layout for the MapWidget
617
+
471
618
  @property
472
619
  def tile_src(self) -> Tiles:
473
620
  """
@@ -488,6 +635,7 @@ class MapWidget(QWidget):
488
635
  if tile_src.TilesetName != self._tile_src.TilesetName: # avoid changing tilesets to themselves
489
636
  self._tile_src: Tiles = tile_src
490
637
  self._tile_src.setCallback(self.on_tile_available)
638
+ self.notice_widget.set_notice(val=self._tile_src.attribution_string)
491
639
 
492
640
  if self.GotoLevel(level):
493
641
  self.GotoLevelAndPosition(level=level, longitude=longitude, latitude=latitude)
@@ -788,6 +936,7 @@ class MapWidget(QWidget):
788
936
  if updateDiagram:
789
937
  self.view.setSceneRectDiagram()
790
938
 
939
+
791
940
  def enterEvent(self, event: QEnterEvent):
792
941
  """
793
942
 
@@ -33,7 +33,7 @@ from PySide6.QtGui import (QIcon, QPixmap, QImage, QPainter, QStandardItemModel,
33
33
  from PySide6.QtWidgets import (QGraphicsView, QMessageBox, QGraphicsScene, QGraphicsSceneMouseEvent, QGraphicsItem)
34
34
  from PySide6.QtSvg import QSvgGenerator
35
35
 
36
- from GridCalEngine.Devices.types import ALL_DEV_TYPES, INJECTION_DEVICE_TYPES, FLUID_TYPES
36
+ from GridCalEngine.Devices.types import ALL_DEV_TYPES, INJECTION_DEVICE_TYPES, FLUID_TYPES, BRANCH_TYPES
37
37
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
38
38
  from GridCalEngine.Devices.Substation.bus import Bus
39
39
  from GridCalEngine.Devices.Substation.busbar import BusBar
@@ -53,7 +53,6 @@ from GridCalEngine.Devices.Diagrams.schematic_diagram import SchematicDiagram
53
53
  from GridCalEngine.Devices.Diagrams.graphic_location import GraphicLocation
54
54
  from GridCalEngine.enumerations import DeviceType, SimulationTypes
55
55
  from GridCalEngine.basic_structures import Vec, CxVec, IntVec, Logger
56
- from GridCalEngine.Devices.types import BRANCH_TYPES
57
56
 
58
57
  from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
59
58
  from GridCal.Gui.Diagrams.SchematicWidget.Substation.bus_graphics import BusGraphicItem
@@ -52,6 +52,18 @@ if TYPE_CHECKING:
52
52
  from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicLibraryModel, SchematicWidget
53
53
 
54
54
 
55
+ def change_font_size(obj, font_size: int):
56
+ """
57
+
58
+ :param obj:
59
+ :param font_size:
60
+ :return:
61
+ """
62
+ font1 = obj.font()
63
+ font1.setPointSize(font_size)
64
+ obj.setFont(font1)
65
+
66
+
55
67
  class BaseDiagramWidget(QSplitter):
56
68
  """
57
69
  Common diagram widget to host common functions
@@ -79,13 +91,18 @@ class BaseDiagramWidget(QSplitter):
79
91
  # --------------------------------------------------------------------------------------------------------------
80
92
  # Widget layout and child widgets:
81
93
  self.horizontal_layout = QHBoxLayout(self)
94
+
95
+ # Table to display object's properties
82
96
  self.object_editor_table = QTableView(self)
97
+ change_font_size(self.object_editor_table, 9)
98
+ change_font_size(self.object_editor_table.verticalHeader(), 9)
99
+ change_font_size(self.object_editor_table.horizontalHeader(), 9)
83
100
 
84
101
  # Actual libraryView object
85
102
  self.library_view = QListView(self)
86
-
87
103
  self.library_view.setViewMode(self.library_view.ViewMode.ListMode)
88
104
  self.library_view.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
105
+ change_font_size(self.library_view, 9)
89
106
 
90
107
  # library model
91
108
  self.library_model = library_model
@@ -87,6 +87,7 @@ class MainGUI(ScriptingMain):
87
87
  self.add_complete_bus_branch_diagram()
88
88
  self.add_map_diagram(ask=False)
89
89
  self.set_diagram_widget(self.diagram_widgets_list[0])
90
+ self.update_available_results()
90
91
 
91
92
  def save_all_config(self) -> None:
92
93
  """