GridCal 5.1.33__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 (283) hide show
  1. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/AnalysisDialogue.py +1 -1
  2. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/object_plot_analysis.py +26 -2
  3. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +1 -1
  4. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +1 -1
  5. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +2 -11
  6. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +4 -4
  7. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +6 -14
  8. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +2 -5
  9. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +26 -2
  10. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +46 -167
  11. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +1 -1
  12. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +1 -1
  13. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +1 -1
  14. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +1 -1
  15. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +29 -29
  16. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +1 -1
  17. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +1 -1
  18. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +1 -1
  19. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +1 -1
  20. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +1 -1
  21. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +1 -1
  22. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +1 -1
  23. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +4 -4
  24. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +1 -1
  25. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +2 -3
  26. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +1 -2
  27. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +1 -2
  28. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +1 -1
  29. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +1 -6
  30. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +1 -4
  31. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +2 -9
  32. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +1 -8
  33. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +1 -6
  34. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +21 -178
  35. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/base_diagram_widget.py +10 -5
  36. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +1 -1
  37. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +25 -3
  38. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/objects.py +4 -214
  39. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/time_events.py +2 -2
  40. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Results/results.py +2 -2
  41. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +14 -3
  42. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +2 -2
  43. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/base_gui.py +4 -4
  44. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/io.py +41 -24
  45. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/simulations.py +2 -2
  46. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profile_dialogue.py +1 -1
  47. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +1 -1
  48. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +2 -2
  49. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/system_scaler.py +1 -1
  50. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +1 -1
  51. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +1 -1
  52. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/associations_model.py +4 -20
  53. GridCal-5.1.33/GridCal/Gui/ConsoleWidget.py → GridCal-5.1.35/GridCal/Gui/console_widget.py +3 -3
  54. GridCal-5.1.33/GridCal/Gui/GeneralDialogues.py → GridCal-5.1.35/GridCal/Gui/general_dialogues.py +1 -1
  55. GridCal-5.1.33/GridCal/Gui/GuiFunctions.py → GridCal-5.1.35/GridCal/Gui/gui_functions.py +5 -2
  56. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/object_model.py +6 -25
  57. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/pandas_model.py +3 -19
  58. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/profiles_model.py +4 -20
  59. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/table_view_header_wrap.py +13 -14
  60. GridCal-5.1.35/GridCal/Gui/wrappable_table_model.py +47 -0
  61. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/results_model.py +3 -19
  62. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/__version__.py +1 -1
  63. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/plugins.py +6 -6
  64. {GridCal-5.1.33 → GridCal-5.1.35}/PKG-INFO +1 -1
  65. GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -106
  66. GridCal-5.1.33/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -161
  67. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ExecuteGridCal.py +0 -0
  68. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  69. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  70. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  71. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  72. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  73. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/__init__.py +0 -0
  74. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/gui.py +0 -0
  75. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  76. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  77. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  78. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  79. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  80. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  81. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  82. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  83. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  84. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  85. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  86. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  87. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  88. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  89. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  90. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  91. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  92. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  93. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  94. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  95. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  96. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  97. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  98. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  99. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  100. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  101. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  102. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  103. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  104. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  105. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  106. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  107. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  108. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  109. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  110. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  111. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  112. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  113. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  114. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  115. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  116. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  117. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  118. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  119. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  120. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  121. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  122. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  123. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  124. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  125. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  126. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  127. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  128. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  129. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  130. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  131. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  132. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  133. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/__init__.py +0 -0
  134. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  135. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  136. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  137. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  138. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  139. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/gui.py +0 -0
  140. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  141. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  142. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  143. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  144. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  145. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  146. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  147. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  148. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  149. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  150. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  151. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  152. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  153. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  154. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/GridCalMain.py +0 -0
  155. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/MainWindow.py +0 -0
  156. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  157. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  158. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  159. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  160. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  161. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  162. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  163. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  164. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  165. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/__init__.py +0 -0
  166. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/icons_rc.py +0 -0
  167. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/object_select_window.py +0 -0
  168. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Main/update_gui_file.py +0 -0
  169. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  170. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  171. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  172. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  173. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  174. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  175. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  176. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  177. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  178. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  179. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  180. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  181. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  182. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  183. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  184. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  185. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  186. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  187. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  188. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  189. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  190. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  191. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  192. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  193. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  194. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  195. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  196. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  197. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  198. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  199. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  200. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  201. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  202. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  203. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  204. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  205. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  206. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  207. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  208. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  209. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  210. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  211. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  212. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Visualization/__init__.py +0 -0
  213. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Visualization/visualization.py +0 -0
  214. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Widgets/__init__.py +0 -0
  215. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  216. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  217. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  218. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  219. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  220. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  221. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  222. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/__init__.py +0 -0
  223. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/messages.py +0 -0
  224. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/plot_config.py +0 -0
  225. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/themes.py +0 -0
  226. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/update_gui_all.py +0 -0
  227. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Gui/update_gui_common.py +0 -0
  228. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/LICENSE.txt +0 -0
  229. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/__init__.py +0 -0
  230. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/export_results_driver.py +0 -0
  231. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/file_handler.py +0 -0
  232. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/server_driver.py +0 -0
  233. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/session.py +0 -0
  234. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/Session/synchronization_driver.py +0 -0
  235. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/__init__.py +0 -0
  236. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  237. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  238. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  239. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  240. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  241. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  242. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  243. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  244. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  245. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  246. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  247. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  248. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  249. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  250. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  251. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  252. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  253. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  254. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  255. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  256. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  257. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  258. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  259. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  260. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  261. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  262. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  263. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  264. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  265. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  266. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  267. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  268. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  269. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  270. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  271. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  272. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  273. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  274. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/__init__.py +0 -0
  275. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/data/__init__.py +0 -0
  276. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/data/cables.csv +0 -0
  277. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/data/sequence_lines.csv +0 -0
  278. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/data/transformers.csv +0 -0
  279. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/data/wires.csv +0 -0
  280. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/templates.py +0 -0
  281. {GridCal-5.1.33 → GridCal-5.1.35}/GridCal/update.py +0 -0
  282. {GridCal-5.1.33 → GridCal-5.1.35}/setup.cfg +0 -0
  283. {GridCal-5.1.33 → GridCal-5.1.35}/setup.py +0 -0
@@ -20,7 +20,7 @@ from PySide6 import QtWidgets
20
20
  from GridCal.Gui.Analysis.gui import Ui_MainWindow
21
21
  from GridCal.Gui.Analysis.object_plot_analysis import grid_analysis, GridErrorLog, FixableErrorOutOfRange
22
22
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
23
- from GridCal.Gui.GeneralDialogues import LogsDialogue, Logger
23
+ from GridCal.Gui.general_dialogues import LogsDialogue, Logger
24
24
 
25
25
 
26
26
  class GridAnalysisGUI(QtWidgets.QMainWindow):
@@ -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
 
@@ -22,7 +22,7 @@ from GridCal.Gui.ContingencyPlanner.gui import Ui_MainWindow
22
22
  import GridCalEngine.Devices as dev
23
23
  from GridCalEngine.enumerations import DeviceType
24
24
  from GridCalEngine.Devices.multi_circuit import MultiCircuit
25
- import GridCal.Gui.GuiFunctions as gf
25
+ import GridCal.Gui.gui_functions as gf
26
26
  from GridCalEngine.Simulations.ContingencyAnalysis.contingency_plan import generate_automatic_contingency_plan
27
27
 
28
28
 
@@ -5,7 +5,7 @@ from PySide6 import QtGui, QtCore, QtWidgets
5
5
  from typing import List, Tuple, Union
6
6
  from GridCal.Gui.CoordinatesInput.gui import Ui_Dialog
7
7
  from GridCal.Gui.ProfilesInput.excel_dialog import ExcelDialog
8
- from GridCal.Gui.GeneralDialogues import LogsDialogue
8
+ from GridCal.Gui.general_dialogues import LogsDialogue
9
9
  from GridCalEngine.Devices.Substation import Bus
10
10
  from GridCalEngine.basic_structures import Logger
11
11
  from GridCal.Gui.messages import error_msg
@@ -21,7 +21,7 @@ from PySide6.QtGui import QPen, QColor, QCursor
21
21
  from PySide6.QtWidgets import QMenu, QGraphicsSceneContextMenuEvent
22
22
  from PySide6.QtWidgets import QGraphicsLineItem, QGraphicsSceneMouseEvent
23
23
 
24
- from GridCal.Gui.GuiFunctions import add_menu_entry
24
+ from GridCal.Gui.gui_functions import add_menu_entry
25
25
  from GridCal.Gui.messages import yes_no_question
26
26
  from GridCal.Gui.Diagrams.generic_graphics import ACTIVE, DEACTIVATED, OTHER
27
27
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_editor import LineEditor
@@ -99,10 +99,6 @@ class MapLineSegment(QGraphicsLineItem):
99
99
  pen.setWidthF(w)
100
100
 
101
101
  self.setPen(pen)
102
- # self.arrow_from_1.set_colour(color, w, style)
103
- # self.arrow_from_2.set_colour(color, w, style)
104
- # self.arrow_to_1.set_colour(color, w, style)
105
- # self.arrow_to_2.set_colour(color, w, style)
106
102
 
107
103
  def set_from_side_coordinates(self, x: float, y: float):
108
104
  """
@@ -152,12 +148,7 @@ class MapLineSegment(QGraphicsLineItem):
152
148
  :return:
153
149
  """
154
150
  if self.api_object is not None:
155
- self.editor.set_editor_model(api_object=self.api_object,
156
- dictionary_of_lists={
157
- DeviceType.BusDevice: self.editor.circuit.get_buses(),
158
- DeviceType.ConnectivityNodeDevice: self.editor.circuit.get_connectivity_nodes(),
159
- DeviceType.BranchGroupDevice: self.editor.circuit.get_branch_groups()
160
- })
151
+ self.editor.set_editor_model(api_object=self.api_object)
161
152
 
162
153
  def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
163
154
  """
@@ -17,7 +17,7 @@
17
17
  from __future__ import annotations
18
18
  from typing import Tuple, TYPE_CHECKING
19
19
  from PySide6.QtWidgets import QApplication, QMenu, QGraphicsSceneContextMenuEvent
20
- from GridCal.Gui.GuiFunctions import add_menu_entry
20
+ from GridCal.Gui.gui_functions import add_menu_entry
21
21
  from PySide6 import QtWidgets
22
22
  from PySide6.QtCore import Qt, QPointF
23
23
  from PySide6.QtGui import QBrush, QColor, QCursor
@@ -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()
@@ -22,9 +22,9 @@ from PySide6.QtWidgets import (QApplication, QMenu, QGraphicsSceneContextMenuEve
22
22
  from PySide6.QtCore import Qt, QPointF
23
23
  from PySide6.QtGui import QBrush, QColor, QCursor
24
24
  from GridCal.Gui.Diagrams.MapWidget.Substation.node_template import NodeTemplate
25
- from GridCal.Gui.GuiFunctions import add_menu_entry
25
+ from GridCal.Gui.gui_functions import add_menu_entry
26
26
  from GridCal.Gui.messages import yes_no_question
27
- from GridCal.Gui.GeneralDialogues import InputNumberDialogue
27
+ from GridCal.Gui.general_dialogues import InputNumberDialogue
28
28
 
29
29
  from GridCalEngine.Devices.Substation.bus import Bus
30
30
  from GridCalEngine.Devices import VoltageLevel
@@ -190,18 +190,10 @@ 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
- self.editor.set_editor_model(api_object=self.api_object,
197
- dictionary_of_lists={
198
- DeviceType.CountryDevice: self.editor.circuit.get_countries(),
199
- DeviceType.CommunityDevice: self.editor.circuit.get_communities(),
200
- DeviceType.RegionDevice: self.editor.circuit.get_regions(),
201
- DeviceType.MunicipalityDevice: self.editor.circuit.get_municipalities(),
202
- DeviceType.AreaDevice: self.editor.circuit.get_areas(),
203
- DeviceType.ZoneDevice: self.editor.circuit.get_zones(),
204
- })
196
+ self.editor.set_editor_model(api_object=self.api_object)
205
197
 
206
198
  def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent):
207
199
  """
@@ -216,7 +208,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
216
208
  """
217
209
  Event handler for when the mouse enters the item.
218
210
  """
219
- self.editor.map.view.inItem = True
211
+ # self.editor.map.view.in_item = True
220
212
  self.setNodeColor(QColor(Qt.red), QColor(Qt.red))
221
213
  self.hovered = True
222
214
  QApplication.instance().setOverrideCursor(Qt.PointingHandCursor)
@@ -225,7 +217,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
225
217
  """
226
218
  Event handler for when the mouse leaves the item.
227
219
  """
228
- self.editor.map.view.inItem = False
220
+ # self.editor.map.view.in_item = False
229
221
  self.hovered = False
230
222
  self.setDefaultColor()
231
223
  QApplication.instance().restoreOverrideCursor()
@@ -22,7 +22,7 @@ from PySide6.QtGui import QBrush, QColor
22
22
  from PySide6.QtWidgets import (QMenu, QGraphicsSceneContextMenuEvent, QGraphicsSceneMouseEvent, QGraphicsEllipseItem)
23
23
 
24
24
  from GridCal.Gui.Diagrams.generic_graphics import GenericDiagramWidget
25
- from GridCal.Gui.GuiFunctions import add_menu_entry
25
+ from GridCal.Gui.gui_functions import add_menu_entry
26
26
 
27
27
  from GridCalEngine.Devices.Substation.voltage_level import VoltageLevel
28
28
  from GridCalEngine.Devices.Substation.bus import Bus
@@ -148,10 +148,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
148
148
  self.updateDiagram() # always update
149
149
 
150
150
  if self.api_object is not None:
151
- self.editor.set_editor_model(api_object=self.api_object,
152
- dictionary_of_lists={
153
- DeviceType.SubstationDevice: self.editor.circuit.get_substations(),
154
- })
151
+ self.editor.set_editor_model(api_object=self.api_object)
155
152
 
156
153
  def mouseReleaseEvent(self, event):
157
154
  """
@@ -16,14 +16,15 @@
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
  import os
18
18
  from typing import Union, List, Tuple
19
+ import json
19
20
  import numpy as np
20
21
  import math
21
22
  from PySide6.QtWidgets import QGraphicsItem
22
23
  from collections.abc import Callable
23
24
  from PySide6.QtSvg import QSvgGenerator
24
25
  from PySide6.QtCore import (Qt, QSize, QRect, QMimeData, QIODevice, QByteArray, QDataStream, QModelIndex)
25
- from PySide6.QtGui import (QIcon, QPixmap, QImage, QPainter, QStandardItemModel, QStandardItem, QColor, QDropEvent,
26
- QWheelEvent)
26
+ from PySide6.QtGui import (QIcon, QPixmap, QImage, QPainter, QStandardItemModel, QStandardItem, QColor,
27
+ QDropEvent, QWheelEvent)
27
28
 
28
29
  from GridCalEngine.Devices.Diagrams.map_location import MapLocation
29
30
  from GridCalEngine.Devices.Substation import Bus
@@ -1169,6 +1170,29 @@ class GridMapWidget(BaseDiagramWidget):
1169
1170
  else:
1170
1171
  print("call_new_substation_diagram_func is None :( ")
1171
1172
 
1173
+ def copy(self) -> "GridMapWidget":
1174
+ """
1175
+ Deep copy of this widget
1176
+ :return: GridMapWidget
1177
+ """
1178
+ d_copy = MapDiagram(name=self.diagram.name + '_copy')
1179
+ j_data = json.dumps(self.diagram.get_data_dict(), indent=4)
1180
+ d_copy.parse_data(data=json.loads(j_data),
1181
+ obj_dict=self.circuit.get_all_elements_dict_by_type(add_locations=True),
1182
+ logger=self.logger)
1183
+
1184
+ return GridMapWidget(
1185
+ tile_src=self.map.tile_src,
1186
+ start_level=self.diagram.start_level,
1187
+ longitude=self.diagram.longitude,
1188
+ latitude=self.diagram.latitude,
1189
+ name=self.diagram.name,
1190
+ circuit=self.circuit,
1191
+ diagram=self.diagram,
1192
+ call_new_substation_diagram_func=self.call_new_substation_diagram_func,
1193
+ call_delete_db_element_func=self.call_delete_db_element_func
1194
+ )
1195
+
1172
1196
 
1173
1197
  def generate_map_diagram(substations: List[Substation],
1174
1198
  voltage_levels: List[VoltageLevel],
@@ -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
  """
@@ -20,7 +20,7 @@ import numpy as np
20
20
  from PySide6.QtCore import Qt
21
21
  from PySide6.QtGui import QIcon, QPixmap
22
22
  from PySide6.QtWidgets import QMenu, QLabel, QDoubleSpinBox, QPushButton, QVBoxLayout, QComboBox, QDialog, QGraphicsScene
23
- from GridCal.Gui.GuiFunctions import get_list_model, add_menu_entry
23
+ from GridCal.Gui.gui_functions import get_list_model, add_menu_entry
24
24
  from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
25
25
  from GridCalEngine.Devices.Branches.line import SequenceLineType, OverheadLineType, UndergroundLineType
26
26
  from GridCalEngine.Devices.Branches.dc_line import DcLine
@@ -18,7 +18,7 @@ from __future__ import annotations
18
18
  from typing import TYPE_CHECKING, Union
19
19
  from PySide6.QtGui import QIcon, QPixmap
20
20
  from PySide6.QtWidgets import QMenu
21
- from GridCal.Gui.GuiFunctions import add_menu_entry
21
+ from GridCal.Gui.gui_functions import add_menu_entry
22
22
  from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
23
23
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_graphics_template import LineGraphicTemplateItem
24
24
  from GridCalEngine.Devices.Branches.hvdc_line import HvdcLine
@@ -19,7 +19,7 @@ import numpy as np
19
19
  from typing import Union, List
20
20
  from PySide6.QtCore import Qt
21
21
  from PySide6.QtWidgets import QPushButton, QVBoxLayout, QDialog, QLabel, QDoubleSpinBox, QComboBox, QCheckBox
22
- from GridCal.Gui.GuiFunctions import get_list_model
22
+ from GridCal.Gui.gui_functions import get_list_model
23
23
  from GridCal.Gui.messages import error_msg
24
24
  from GridCalEngine.Devices.Branches.line import Line, SequenceLineType, OverheadLineType, UndergroundLineType
25
25
 
@@ -19,7 +19,7 @@ from typing import TYPE_CHECKING, Union
19
19
  from PySide6.QtCore import Qt, QRectF
20
20
  from PySide6.QtGui import QPen, QBrush
21
21
  from PySide6.QtWidgets import QMenu, QGraphicsRectItem, QGraphicsSceneContextMenuEvent
22
- from GridCal.Gui.GuiFunctions import add_menu_entry
22
+ from GridCal.Gui.gui_functions import add_menu_entry
23
23
  from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import BarTerminalItem, RoundTerminalItem
24
24
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.line_editor import LineEditor
25
25
  from GridCal.Gui.messages import yes_no_question, warning_msg