GridCal 5.1.34__tar.gz → 5.1.35__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.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/object_plot_analysis.py +26 -2
  2. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +3 -3
  3. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +3 -3
  4. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +46 -167
  5. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/io.py +39 -22
  6. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/__version__.py +1 -1
  7. {GridCal-5.1.34 → GridCal-5.1.35}/PKG-INFO +1 -1
  8. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ExecuteGridCal.py +0 -0
  9. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  10. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  11. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  12. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  13. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  14. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  15. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/__init__.py +0 -0
  16. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/gui.py +0 -0
  17. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  18. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  19. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  20. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  21. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  22. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  23. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  24. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  25. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  26. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  27. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  28. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  29. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  30. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  31. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  32. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  33. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  34. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  35. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  36. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  37. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  38. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  39. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  40. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  41. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  42. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  43. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  44. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  45. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  46. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  47. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  48. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  49. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  50. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  51. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  52. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  53. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  54. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  55. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  56. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  57. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  58. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  59. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  60. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  61. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  62. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
  63. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  64. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  65. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  66. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  67. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  68. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  69. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  70. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  71. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  72. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  73. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  74. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  75. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  76. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  77. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  78. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  79. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  80. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  81. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  82. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  83. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  84. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  85. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  86. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  87. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  88. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  89. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  90. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  91. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  92. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  93. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  94. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  95. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  96. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  97. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  98. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  99. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  100. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  101. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  102. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  103. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  104. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/__init__.py +0 -0
  105. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  106. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  107. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  108. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  109. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  110. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  111. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/gui.py +0 -0
  112. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  113. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  114. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  115. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  116. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  117. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  118. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  119. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  120. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  121. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  122. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  123. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  124. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  125. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  126. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/GridCalMain.py +0 -0
  127. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/MainWindow.py +0 -0
  128. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  129. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  130. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
  131. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  132. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  133. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  134. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  135. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  136. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  137. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  138. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  139. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  140. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  141. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  142. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  143. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  144. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  145. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  146. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/__init__.py +0 -0
  147. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/icons_rc.py +0 -0
  148. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/object_select_window.py +0 -0
  149. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Main/update_gui_file.py +0 -0
  150. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  151. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  152. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  153. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  154. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  155. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  156. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  157. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  158. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  159. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  160. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  161. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  162. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  163. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  164. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  165. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  166. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  167. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  168. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  169. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  170. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  171. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  172. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  173. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  174. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  175. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  176. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  177. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  178. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  179. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  180. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  181. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  182. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  183. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  184. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  185. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  186. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  187. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  188. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  189. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  190. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  191. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  192. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  193. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  194. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  195. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  196. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  197. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  198. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  199. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Visualization/__init__.py +0 -0
  200. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Visualization/visualization.py +0 -0
  201. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Widgets/__init__.py +0 -0
  202. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  203. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  204. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  205. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  206. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  207. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  208. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  209. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/__init__.py +0 -0
  210. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/associations_model.py +0 -0
  211. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/console_widget.py +0 -0
  212. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/general_dialogues.py +0 -0
  213. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/gui_functions.py +0 -0
  214. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/messages.py +0 -0
  215. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/object_model.py +0 -0
  216. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/pandas_model.py +0 -0
  217. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/plot_config.py +0 -0
  218. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/profiles_model.py +0 -0
  219. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/table_view_header_wrap.py +0 -0
  220. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/themes.py +0 -0
  221. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/update_gui_all.py +0 -0
  222. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/update_gui_common.py +0 -0
  223. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Gui/wrappable_table_model.py +0 -0
  224. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/LICENSE.txt +0 -0
  225. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/__init__.py +0 -0
  226. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/export_results_driver.py +0 -0
  227. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/file_handler.py +0 -0
  228. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/results_model.py +0 -0
  229. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/server_driver.py +0 -0
  230. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/session.py +0 -0
  231. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/Session/synchronization_driver.py +0 -0
  232. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/__init__.py +0 -0
  233. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  234. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  235. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  236. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  237. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  238. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  239. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  240. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  241. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  242. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  243. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  244. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  245. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  246. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  247. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  248. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  249. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  250. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  251. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  252. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  253. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  254. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  255. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  256. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  257. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  258. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  259. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  260. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  261. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  262. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  263. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  264. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  265. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  266. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  267. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  268. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  269. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  270. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  271. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/__init__.py +0 -0
  272. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/data/__init__.py +0 -0
  273. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/data/cables.csv +0 -0
  274. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/data/sequence_lines.csv +0 -0
  275. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/data/transformers.csv +0 -0
  276. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/data/wires.csv +0 -0
  277. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/plugins.py +0 -0
  278. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/templates.py +0 -0
  279. {GridCal-5.1.34 → GridCal-5.1.35}/GridCal/update.py +0 -0
  280. {GridCal-5.1.34 → GridCal-5.1.35}/setup.cfg +0 -0
  281. {GridCal-5.1.34 → GridCal-5.1.35}/setup.py +0 -0
@@ -100,6 +100,22 @@ class GridErrorLog:
100
100
  """
101
101
  self.logs.clear()
102
102
 
103
+ def add_normal_logger(self, logger: Logger):
104
+ """
105
+ Add normal logger
106
+ :param logger: Logger
107
+ """
108
+ for l in logger.entries:
109
+ self.add(object_type=l.device_class,
110
+ element_name=l.device,
111
+ element_index=0,
112
+ severity=l.severity,
113
+ propty=l.device_property,
114
+ message=l.msg,
115
+ val=l.value,
116
+ lower=l.expected_object_value,
117
+ upper=l.expected_value)
118
+
103
119
  def get_model(self) -> "QtGui.QStandardItemModel":
104
120
  """
105
121
  Get TreeView Model
@@ -1043,7 +1059,7 @@ def analyze_batteries(elements: List[Battery],
1043
1059
 
1044
1060
  def analyze_static_gen(elements: List[StaticGenerator],
1045
1061
  time_profile,
1046
- logger: GridErrorLog,):
1062
+ logger: GridErrorLog, ):
1047
1063
  """
1048
1064
 
1049
1065
  :param elements:
@@ -1076,7 +1092,7 @@ def analyze_static_gen(elements: List[StaticGenerator],
1076
1092
 
1077
1093
  def analyze_load(elements: List[Load],
1078
1094
  time_profile,
1079
- logger: GridErrorLog,):
1095
+ logger: GridErrorLog, ):
1080
1096
  """
1081
1097
 
1082
1098
  :param elements:
@@ -1137,6 +1153,12 @@ def grid_analysis(circuit: MultiCircuit,
1137
1153
  :param eps_min: Min epsylon value for comparison
1138
1154
  :return: list of fixable error objects
1139
1155
  """
1156
+
1157
+ # check for duplicated uuid's
1158
+ duplicates_logger = Logger()
1159
+ _, ok_dict = circuit.get_all_elements_dict(logger=duplicates_logger)
1160
+ logger.add_normal_logger(duplicates_logger)
1161
+
1140
1162
  if circuit.time_profile is not None:
1141
1163
  nt = len(circuit.time_profile)
1142
1164
  else:
@@ -1288,6 +1310,8 @@ def grid_analysis(circuit: MultiCircuit,
1288
1310
  val=Ql_prof[t],
1289
1311
  upper=str(Qmax))
1290
1312
 
1313
+
1314
+
1291
1315
  return fixable_errors
1292
1316
 
1293
1317
 
@@ -176,7 +176,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
176
176
  if len(selected_items) < 2:
177
177
  self.setSelected(True)
178
178
  if self.enabled:
179
- self.editor.map.view.disableMove = True
179
+ self.editor.map.view.disable_move = True
180
180
  if event.button() == Qt.RightButton:
181
181
  pass
182
182
 
@@ -197,7 +197,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
197
197
  """
198
198
  Event handler for when the mouse enters the item.
199
199
  """
200
- self.editor.map.view.inItem = True
200
+ # self.editor.map.view.in_item = True
201
201
  self.hovered = True
202
202
  self.setNodeColor(QColor(Qt.red), QColor(Qt.red))
203
203
  QApplication.instance().setOverrideCursor(Qt.PointingHandCursor)
@@ -206,7 +206,7 @@ class NodeGraphicItem(QtWidgets.QGraphicsRectItem, NodeTemplate):
206
206
  """
207
207
  Event handler for when the mouse leaves the item.
208
208
  """
209
- self.editor.map.view.inItem = False
209
+ # self.editor.map.view.in_item = False
210
210
  self.hovered = False
211
211
  self.setDefaultColor()
212
212
  QApplication.instance().restoreOverrideCursor()
@@ -190,7 +190,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
190
190
  self.setSelected(True)
191
191
 
192
192
  event.setAccepted(True)
193
- self.editor.map.view.disableMove = True
193
+ self.editor.map.view.disable_move = True
194
194
 
195
195
  if self.api_object is not None:
196
196
  self.editor.set_editor_model(api_object=self.api_object)
@@ -208,7 +208,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
208
208
  """
209
209
  Event handler for when the mouse enters the item.
210
210
  """
211
- self.editor.map.view.inItem = True
211
+ # self.editor.map.view.in_item = True
212
212
  self.setNodeColor(QColor(Qt.red), QColor(Qt.red))
213
213
  self.hovered = True
214
214
  QApplication.instance().setOverrideCursor(Qt.PointingHandCursor)
@@ -217,7 +217,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
217
217
  """
218
218
  Event handler for when the mouse leaves the item.
219
219
  """
220
- self.editor.map.view.inItem = False
220
+ # self.editor.map.view.in_item = False
221
221
  self.hovered = False
222
222
  self.setDefaultColor()
223
223
  QApplication.instance().restoreOverrideCursor()
@@ -116,16 +116,20 @@ class MapView(QGraphicsView):
116
116
 
117
117
  # Create a QLabel
118
118
  self.label = QLabel("Bottom Left Label")
119
- self.label.setStyleSheet("background-color: rgba(255, 255, 0, 150);") # Semi-transparent yellow
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
120
122
 
121
123
  # Create a QGraphicsProxyWidget for the QLabel
122
- self.proxy_widget = QGraphicsProxyWidget()
123
- self.proxy_widget.setWidget(self.label)
124
+ self.label_proxy_widget = QGraphicsProxyWidget()
125
+ self.label_proxy_widget.setWidget(self.label)
126
+
124
127
  # Position the QLabel within the scene
125
- self.proxy_widget.setPos(0, scene.sceneRect().height() - self.label.height()) # Bottom-left position
128
+ self.label_proxy_widget.setPos(0, scene.sceneRect().height() - self.label.height()) # Bottom-left position
129
+ self.label_proxy_widget.setFlag(QGraphicsItem.ItemIgnoresTransformations)
126
130
 
127
131
  # Add the proxy widget to the scene
128
- self._scene.addItem(self.proxy_widget)
132
+ self._scene.addItem(self.label_proxy_widget)
129
133
 
130
134
  self.mouse_x = None
131
135
  self.mouse_y = None
@@ -133,9 +137,9 @@ class MapView(QGraphicsView):
133
137
  self.diagram_w = 25000
134
138
  self.diagram_H = 25000
135
139
 
136
- self.inItem = False
140
+ # self.in_item = False # looks that it is written but never used
137
141
  self.pressed = False
138
- self.disableMove = False
142
+ self.disable_move = False
139
143
 
140
144
  # updated later
141
145
  self.view_width = self.width()
@@ -147,6 +151,14 @@ class MapView(QGraphicsView):
147
151
 
148
152
  self.scale(initial_zoom_factor, initial_zoom_factor)
149
153
 
154
+ def set_notice(self, val: str):
155
+ """
156
+
157
+ :param val:
158
+ :return:
159
+ """
160
+ self.label.setText(val)
161
+
150
162
  def selected_items(self) -> List[QGraphicsItem]:
151
163
  """
152
164
  Get the selected items
@@ -162,7 +174,7 @@ class MapView(QGraphicsView):
162
174
  """
163
175
  self.map_widget.mousePressEvent(event)
164
176
  self.pressed = True
165
- self.disableMove = False
177
+ self.disable_move = False
166
178
 
167
179
  super().mousePressEvent(event)
168
180
 
@@ -174,7 +186,7 @@ class MapView(QGraphicsView):
174
186
  """
175
187
  self.map_widget.mouseReleaseEvent(event)
176
188
  self.pressed = False
177
- self.disableMove = True
189
+ self.disable_move = True
178
190
  super().mouseReleaseEvent(event)
179
191
 
180
192
  def mouseDoubleClickEvent(self, event: QMouseEvent):
@@ -192,11 +204,12 @@ class MapView(QGraphicsView):
192
204
  :param event:
193
205
  :return:
194
206
  """
195
- if not self.disableMove:
207
+ if not self.disable_move:
196
208
  self.map_widget.mouseMoveEvent(event)
197
- self.centerSchema()
209
+ self.center_schema()
198
210
 
199
211
  super().mouseMoveEvent(event)
212
+ self.update_label_position()
200
213
 
201
214
  def keyPressEvent(self, event: QKeyEvent):
202
215
  """
@@ -247,7 +260,8 @@ class MapView(QGraphicsView):
247
260
 
248
261
  self.map_widget.wheelEvent(event)
249
262
 
250
- self.centerSchema()
263
+ self.center_schema()
264
+ self.update_label_position()
251
265
 
252
266
  def dragEnterEvent(self, event: QDragEnterEvent):
253
267
  """
@@ -280,21 +294,29 @@ class MapView(QGraphicsView):
280
294
  Widget resized, recompute some state.
281
295
  """
282
296
 
297
+ super().resizeEvent(event)
283
298
  self.map_widget.resizeEvent(event=event)
284
299
 
285
- self.proxy_widget.setPos(0, self._scene.sceneRect().height() - self.label.height()) # Bottom-left position
300
+ def update_label_position(self):
301
+ """
302
+ Updates the position of the label to the bottom-left corner of the viewport.
303
+ """
304
+ view_width = self.viewport().width()
305
+ view_height = self.viewport().height()
306
+
307
+ # 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()))
286
309
 
287
- def setSizeDiagram(self) -> None:
310
+ def set_size_diagram(self) -> None:
288
311
  """
289
312
 
290
313
  :return:
291
314
  """
292
315
  # new widget size
293
- # TODO: These vars must be declared in init
294
316
  self.view_width = self.width()
295
317
  self.view_height = self.height()
296
318
 
297
- def setSceneRectDiagram(self) -> None:
319
+ def set_scene_rect_diagram(self) -> None:
298
320
  """
299
321
 
300
322
  :return:
@@ -306,12 +328,9 @@ class MapView(QGraphicsView):
306
328
  yToDiagram = -(used_height / 2)
307
329
 
308
330
  # Adjust the scene rect if needed
309
- self.setSceneRect(xToDiagram,
310
- yToDiagram,
311
- used_width,
312
- used_height)
331
+ self.setSceneRect(xToDiagram, yToDiagram, used_width, used_height)
313
332
 
314
- self.centerSchema()
333
+ self.center_schema()
315
334
 
316
335
  def to_lat_lon(self, x: float, y: float) -> Tuple[float, float]:
317
336
  """
@@ -347,7 +366,7 @@ class MapView(QGraphicsView):
347
366
 
348
367
  return x, y
349
368
 
350
- def centerSchema(self) -> None:
369
+ def center_schema(self) -> None:
351
370
  """
352
371
  This function centers the schema relative to the map according to lat. and long.
353
372
  """
@@ -364,142 +383,6 @@ class MapView(QGraphicsView):
364
383
  self.map_widget.view.centerOn(point)
365
384
 
366
385
 
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
-
503
386
  class MapWidget(QWidget):
504
387
  """
505
388
  Map widget
@@ -541,16 +424,13 @@ class MapWidget(QWidget):
541
424
  self.view = MapView(scene=self.diagram_scene, map_widget=self)
542
425
  self.view.setBackgroundBrush(Qt.transparent)
543
426
 
544
- # notification widget
545
- self.notice_widget = NoticeWidget(map_widget=self)
546
-
547
427
  # -------------------------------------------------------------------------
548
428
  # Internal vars
549
429
  # -------------------------------------------------------------------------
550
430
  # remember the tile source object
551
431
  self._tile_src: Tiles = tile_src
552
432
  self._tile_src.setCallback(self.on_tile_available)
553
- self.notice_widget.set_notice(val=self._tile_src.attribution_string)
433
+ self.view.set_notice(val=self._tile_src.attribution_string)
554
434
 
555
435
  # the tile coordinates
556
436
  self.level: int = start_level
@@ -635,11 +515,11 @@ class MapWidget(QWidget):
635
515
  if tile_src.TilesetName != self._tile_src.TilesetName: # avoid changing tilesets to themselves
636
516
  self._tile_src: Tiles = tile_src
637
517
  self._tile_src.setCallback(self.on_tile_available)
638
- self.notice_widget.set_notice(val=self._tile_src.attribution_string)
518
+ self.view.set_notice(val=self._tile_src.attribution_string)
639
519
 
640
520
  if self.GotoLevel(level):
641
521
  self.GotoLevelAndPosition(level=level, longitude=longitude, latitude=latitude)
642
- self.view.centerSchema()
522
+ self.view.center_schema()
643
523
  else:
644
524
  while abs(self.view.schema_zoom - 0.015625) > 0.00001:
645
525
  self.view.schema_zoom = self.view.schema_zoom / self.view.map_widget.zoom_factor
@@ -928,14 +808,13 @@ class MapWidget(QWidget):
928
808
  Widget resized, recompute some state.
929
809
  """
930
810
  if updateDiagram:
931
- self.view.setSizeDiagram()
811
+ self.view.set_size_diagram()
932
812
 
933
813
  # recalculate the "key" tile stuff
934
814
  self.rectify_key_tile()
935
815
 
936
816
  if updateDiagram:
937
- self.view.setSceneRectDiagram()
938
-
817
+ self.view.set_scene_rect_diagram()
939
818
 
940
819
  def enterEvent(self, event: QEnterEvent):
941
820
  """
@@ -23,7 +23,7 @@ from PySide6 import QtWidgets
23
23
  import GridCal.Gui.gui_functions as gf
24
24
  import GridCal.Session.export_results_driver as exprtdrv
25
25
  import GridCal.Session.file_handler as filedrv
26
- from GridCalEngine.Devices.multi_circuit import MultiCircuit
26
+
27
27
  from GridCal.Gui.CoordinatesInput.coordinates_dialogue import CoordinatesInputGUI
28
28
  from GridCal.Gui.general_dialogues import LogsDialogue, CustomQuestionDialogue
29
29
  from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
@@ -32,10 +32,12 @@ from GridCal.Gui.GridGenerator.grid_generator_dialogue import GridGeneratorGUI
32
32
  from GridCal.Gui.RosetaExplorer.RosetaExplorer import RosetaExplorerGUI
33
33
  from GridCal.Gui.Main.SubClasses.Settings.configuration import ConfigurationMain
34
34
 
35
+ from GridCalEngine.Devices.multi_circuit import MultiCircuit
35
36
  from GridCalEngine.Compilers.circuit_to_newton_pa import NEWTON_PA_AVAILABLE
36
37
  from GridCalEngine.Compilers.circuit_to_pgm import PGM_AVAILABLE
37
38
  from GridCalEngine.DataStructures.numerical_circuit import compile_numerical_circuit_at
38
39
  from GridCalEngine.enumerations import CGMESVersions, SimulationTypes
40
+ from GridCalEngine.basic_structures import Logger
39
41
  from GridCalEngine.IO.gridcal.contingency_parser import import_contingencies_from_json, export_contingencies_json_file
40
42
  from GridCalEngine.IO.cim.cgmes.cgmes_enums import cgmesProfile
41
43
  from GridCalEngine.IO.gridcal.remote import RemoteInstruction
@@ -521,9 +523,17 @@ class IoMain(ConfigurationMain):
521
523
  """
522
524
  Prompt to add another circuit
523
525
  """
524
- self.open_file_threaded(post_function=self.post_create_circuit_differential,
525
- allow_diff_file_format=True,
526
- title="Load base grid to compare...")
526
+ # check that this circuit is ok
527
+ logger = Logger()
528
+ _, ok = self.circuit.get_all_elements_dict(logger=logger)
529
+
530
+ if ok:
531
+ self.open_file_threaded(post_function=self.post_create_circuit_differential,
532
+ allow_diff_file_format=True,
533
+ title="Load base grid to compare...")
534
+ else:
535
+ dlg = LogsDialogue('This circuit has duplicated idtags :(', logger)
536
+ dlg.exec_()
527
537
 
528
538
  def post_create_circuit_differential(self):
529
539
  """
@@ -548,30 +558,37 @@ class IoMain(ConfigurationMain):
548
558
  # diff the circuit
549
559
  new_circuit = self.open_file_thread_object.circuit
550
560
 
551
- # create the differential
552
- ok, diff_logger, dgrid = self.circuit.differentiate_circuits(new_circuit)
561
+ dict_logger = Logger()
562
+ _, dict_ok = new_circuit.get_all_elements_dict(logger=dict_logger)
553
563
 
554
- if diff_logger.has_logs():
555
- dlg = LogsDialogue('Grid differences', diff_logger)
556
- dlg.exec_()
564
+ if dict_ok:
565
+ # create the differential
566
+ ok, diff_logger, dgrid = self.circuit.differentiate_circuits(new_circuit)
557
567
 
558
- # select the file to save
559
- filename, type_selected = QtWidgets.QFileDialog.getSaveFileName(self, 'Save file',
560
- dgrid.name,
561
- "GridCal diff (*.dgridcal)")
568
+ if diff_logger.has_logs():
569
+ dlg = LogsDialogue('Grid differences', diff_logger)
570
+ dlg.exec_()
562
571
 
563
- if filename != '':
572
+ # select the file to save
573
+ filename, type_selected = QtWidgets.QFileDialog.getSaveFileName(self, 'Save file',
574
+ dgrid.name,
575
+ "GridCal diff (*.dgridcal)")
564
576
 
565
- # if the user did not enter the extension, add it automatically
566
- name, file_extension = os.path.splitext(filename)
577
+ if filename != '':
567
578
 
568
- if file_extension == '':
569
- filename = name + ".dgridcal"
579
+ # if the user did not enter the extension, add it automatically
580
+ name, file_extension = os.path.splitext(filename)
570
581
 
571
- # we were able to compose the file correctly, now save it
572
- self.save_file_now(filename=filename,
573
- type_selected=type_selected,
574
- grid=dgrid)
582
+ if file_extension == '':
583
+ filename = name + ".dgridcal"
584
+
585
+ # we were able to compose the file correctly, now save it
586
+ self.save_file_now(filename=filename,
587
+ type_selected=type_selected,
588
+ grid=dgrid)
589
+ else:
590
+ dlg = LogsDialogue('The base circuit has duplicated idtags :(', dict_logger)
591
+ dlg.exec()
575
592
 
576
593
  def save_file_as(self):
577
594
  """
@@ -16,7 +16,7 @@ import datetime
16
16
  _current_year_ = datetime.datetime.now().year
17
17
 
18
18
  # do not forget to keep a three-number version!!!
19
- __GridCal_VERSION__ = "5.1.34"
19
+ __GridCal_VERSION__ = "5.1.35"
20
20
 
21
21
  url = 'https://github.com/SanPen/GridCal'
22
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GridCal
3
- Version: 5.1.34
3
+ Version: 5.1.35
4
4
  Summary: GridCal is a Power Systems simulation program intended for professional use and research
5
5
  Home-page: https://github.com/SanPen/GridCal
6
6
  Author: Santiago Peñate Vera et. Al.