GridCal 5.1.25__tar.gz → 5.1.26__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/AnalysisDialogue.py +3 -3
  2. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/object_plot_analysis.py +28 -0
  3. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +2 -17
  4. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/MainWindow.py +176 -170
  5. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +6 -0
  6. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +28 -10
  7. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/profile_dialogue.py +107 -56
  8. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/plugins.py +42 -40
  9. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/__version__.py +1 -1
  10. {GridCal-5.1.25 → GridCal-5.1.26}/PKG-INFO +1 -1
  11. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ExecuteGridCal.py +0 -0
  12. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  13. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  14. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  15. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  16. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  17. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/__init__.py +0 -0
  18. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/gui.py +0 -0
  19. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  20. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  21. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  22. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  23. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  24. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  25. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ConsoleWidget.py +0 -0
  26. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  27. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  28. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  29. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  30. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  31. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  32. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  33. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  34. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  35. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  36. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  37. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  38. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  39. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  40. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  41. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  42. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  43. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  44. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
  45. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  46. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  47. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  48. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
  49. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +0 -0
  50. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +0 -0
  51. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
  52. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
  53. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
  54. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
  55. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
  56. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
  57. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
  58. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  59. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  60. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  61. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  62. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  63. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  64. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  65. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  66. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
  67. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
  68. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  69. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/new_line_dialogue.py +0 -0
  70. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
  71. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  72. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  73. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  74. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  75. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  76. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  77. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  78. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  79. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  80. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  81. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  82. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  83. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  84. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  85. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  86. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  87. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  88. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  89. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  90. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  91. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  92. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  93. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  94. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  95. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  96. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  97. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  98. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  99. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  100. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  101. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  102. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  103. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  104. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  105. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  106. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  107. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  108. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  109. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  110. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  111. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/__init__.py +0 -0
  112. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  113. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  114. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  115. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  116. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GeneralDialogues.py +0 -0
  117. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  118. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  119. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GridGenerator/gui.py +0 -0
  120. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  121. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  122. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/GuiFunctions.py +0 -0
  123. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  124. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  125. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  126. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  127. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  128. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  129. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  130. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  131. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  132. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  133. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  134. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  135. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/GridCalMain.py +0 -0
  136. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  137. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  138. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  139. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  140. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  141. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  142. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  143. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  144. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  145. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  146. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  147. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  148. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  149. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  150. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  151. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  152. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
  153. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/__init__.py +0 -0
  154. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/icons_rc.py +0 -0
  155. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/object_select_window.py +0 -0
  156. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Main/update_gui_file.py +0 -0
  157. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  158. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  159. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  160. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  161. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  162. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  163. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  164. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  165. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  166. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  167. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  168. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  169. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  170. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  171. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  172. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  173. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  174. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  175. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  176. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  177. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  178. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  179. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  180. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  181. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  182. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  183. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  184. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  185. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  186. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  187. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  188. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  189. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  190. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  191. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  192. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  193. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  194. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  195. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  196. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  197. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  198. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  199. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  200. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  201. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  202. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  203. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  204. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  205. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Visualization/__init__.py +0 -0
  206. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Visualization/visualization.py +0 -0
  207. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Widgets/__init__.py +0 -0
  208. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  209. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  210. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  211. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  212. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  213. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  214. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  215. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/__init__.py +0 -0
  216. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/associations_model.py +0 -0
  217. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/messages.py +0 -0
  218. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/object_model.py +0 -0
  219. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/pandas_model.py +0 -0
  220. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/plot_config.py +0 -0
  221. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/profiles_model.py +0 -0
  222. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/table_view_header_wrap.py +0 -0
  223. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/themes.py +0 -0
  224. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/update_gui_all.py +0 -0
  225. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Gui/update_gui_common.py +0 -0
  226. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/LICENSE.txt +0 -0
  227. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/__init__.py +0 -0
  228. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/export_results_driver.py +0 -0
  229. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/file_handler.py +0 -0
  230. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/results_model.py +0 -0
  231. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/server_driver.py +0 -0
  232. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/session.py +0 -0
  233. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/Session/synchronization_driver.py +0 -0
  234. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/__init__.py +0 -0
  235. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  236. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  237. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  238. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  239. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  240. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  241. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  242. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  243. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  244. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  245. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  246. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  247. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  248. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  249. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  250. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  251. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  252. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  253. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  254. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  255. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  256. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  257. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  258. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  259. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  260. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  261. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  262. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  263. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  264. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  265. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  266. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  267. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  268. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  269. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  270. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  271. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  272. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  273. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/__init__.py +0 -0
  274. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/data/__init__.py +0 -0
  275. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/data/cables.csv +0 -0
  276. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/data/sequence_lines.csv +0 -0
  277. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/data/transformers.csv +0 -0
  278. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/data/wires.csv +0 -0
  279. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/templates.py +0 -0
  280. {GridCal-5.1.25 → GridCal-5.1.26}/GridCal/update.py +0 -0
  281. {GridCal-5.1.25 → GridCal-5.1.26}/setup.cfg +0 -0
  282. {GridCal-5.1.25 → GridCal-5.1.26}/setup.py +0 -0
@@ -27,7 +27,7 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
27
27
  """
28
28
  GridAnalysisGUI
29
29
  """
30
- def __init__(self, circuit: MultiCircuit = None):
30
+ def __init__(self, circuit: MultiCircuit):
31
31
  """
32
32
 
33
33
  :param circuit: MultiCircuit
@@ -72,7 +72,8 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
72
72
  branch_connection_voltage_tolerance=self.ui.lineNominalVoltageToleranceSpinBox.value() / 100.0,
73
73
  min_vcc=self.ui.transformerVccMinSpinBox.value(),
74
74
  max_vcc=self.ui.transformerVccMaxSpinBox.value(),
75
- logger=self.log)
75
+ logger=self.log
76
+ )
76
77
 
77
78
  # set logs
78
79
  self.ui.logsTreeView.setModel(self.log.get_model())
@@ -82,7 +83,6 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
82
83
  Fix all detected fixable errors
83
84
  :return:
84
85
  """
85
- print('Fixing issues...')
86
86
  logger = Logger()
87
87
  for fixable_err in self.fixable_errors:
88
88
  fixable_err.fix(logger=logger,
@@ -379,6 +379,14 @@ def analyze_lines(elements: List[Line],
379
379
  propty="bus_to",
380
380
  message="The bus to is None")
381
381
 
382
+ if elm.bus_to == elm.bus_from:
383
+ logger.add(object_type=elm.device_type.value,
384
+ element_name=elm,
385
+ element_index=i,
386
+ severity=LogSeverity.Error,
387
+ propty="bus_from, bus_to",
388
+ message="Branch connected in loop (bus_from = bus_to)")
389
+
382
390
  if V1 > 0 and V2 > 0:
383
391
  per = V1 / V2
384
392
  if per < (1.0 - branch_connection_voltage_tolerance):
@@ -530,6 +538,14 @@ def analyze_transformers(elements: List[Transformer2W],
530
538
  propty="bus_to",
531
539
  message="The bus to is None")
532
540
 
541
+ if elm.bus_to == elm.bus_from:
542
+ logger.add(object_type=elm.device_type.value,
543
+ element_name=elm,
544
+ element_index=i,
545
+ severity=LogSeverity.Error,
546
+ propty="bus_from, bus_to",
547
+ message="Branch connected in loop (bus_from = bus_to)")
548
+
533
549
  if elm.name == '':
534
550
  logger.add(object_type=object_type.value,
535
551
  element_name=elm.name,
@@ -1168,6 +1184,18 @@ def grid_analysis(circuit: MultiCircuit,
1168
1184
  logger=logger,
1169
1185
  fixable_errors=fixable_errors)
1170
1186
 
1187
+ analyze_transformers(elements=circuit.get_windings(),
1188
+ object_type=DeviceType.WindingDevice,
1189
+ transformer_virtual_tap_tolerance=transformer_virtual_tap_tolerance,
1190
+ eps_min=eps_min,
1191
+ eps_max=eps_max,
1192
+ min_vcc=min_vcc,
1193
+ max_vcc=max_vcc,
1194
+ tap_min=tap_min,
1195
+ tap_max=tap_max,
1196
+ logger=logger,
1197
+ fixable_errors=fixable_errors)
1198
+
1171
1199
  Pgg, Pgg_prof = analyze_generators(elements=circuit.get_generators(),
1172
1200
  object_type=DeviceType.GeneratorDevice,
1173
1201
  time_profile=circuit.get_time_array(),
@@ -4386,21 +4386,6 @@ def generate_schematic_diagram(buses: List[Bus],
4386
4386
  add_devices_list(cls="fluid_paths", dev_lst=fluid_paths)
4387
4387
 
4388
4388
  # --------------------------------------------------------------------------------------------------------------
4389
- # if text_func is not None:
4390
- # text_func('Creating schematic transformer3w devices')
4391
- #
4392
- # nn = len(transformers3w)
4393
- # for i, elm in enumerate(transformers3w):
4394
- #
4395
- # if prog_func is not None:
4396
- # prog_func((i + 1) / nn * 100.0)
4397
- #
4398
- # x = int(elm.x * explode_factor)
4399
- # y = int(elm.y * explode_factor)
4400
- # diagram.set_point(device=elm, location=GraphicLocation(x=x, y=y))
4401
- # diagram.set_point(device=elm.winding1, location=GraphicLocation())
4402
- # diagram.set_point(device=elm.winding2, location=GraphicLocation())
4403
- # diagram.set_point(device=elm.winding3, location=GraphicLocation())
4404
4389
 
4405
4390
  return diagram
4406
4391
 
@@ -4434,7 +4419,7 @@ List[FluidPath]]:
4434
4419
  bus_dict = circuit.get_bus_index_dict()
4435
4420
 
4436
4421
  # get all Branches
4437
- all_branches = circuit.get_branches()
4422
+ all_branches = circuit.get_branches() + circuit.get_switches()
4438
4423
  branch_dict = {b: i for i, b in enumerate(all_branches)}
4439
4424
 
4440
4425
  # create a pool of buses
@@ -4519,7 +4504,7 @@ List[FluidPath]]:
4519
4504
  switches.append(obj)
4520
4505
 
4521
4506
  else:
4522
- raise Exception('Unrecognized branch type ' + obj.device_type.value)
4507
+ raise Exception(f'Unrecognized branch type {obj.device_type.value}')
4523
4508
 
4524
4509
  return (list(buses), list(busbars), list(cns), lines, dc_lines, transformers2w, transformers3w,
4525
4510
  windings, hvdc_lines, vsc_converters, upfc_devices, series_reactances, switches,
@@ -3582,62 +3582,35 @@ class Ui_mainWindow(object):
3582
3582
  self.gridLayout_21 = QGridLayout(self.frame_18)
3583
3583
  self.gridLayout_21.setObjectName(u"gridLayout_21")
3584
3584
  self.gridLayout_21.setContentsMargins(-1, 0, -1, -1)
3585
- self.investment_evaluation_method_ComboBox = QComboBox(self.frame_18)
3586
- self.investment_evaluation_method_ComboBox.setObjectName(u"investment_evaluation_method_ComboBox")
3587
- self.investment_evaluation_method_ComboBox.setFont(font1)
3588
-
3589
- self.gridLayout_21.addWidget(self.investment_evaluation_method_ComboBox, 24, 2, 1, 1)
3590
-
3591
- self.label_94 = QLabel(self.frame_18)
3592
- self.label_94.setObjectName(u"label_94")
3593
- self.label_94.setMinimumSize(QSize(24, 24))
3594
- self.label_94.setMaximumSize(QSize(24, 24))
3595
- self.label_94.setPixmap(QPixmap(u":/Icons/icons/clustering.svg"))
3596
- self.label_94.setScaledContents(True)
3597
-
3598
- self.gridLayout_21.addWidget(self.label_94, 8, 0, 1, 1)
3599
-
3600
- self.label_61 = QLabel(self.frame_18)
3601
- self.label_61.setObjectName(u"label_61")
3602
- self.label_61.setFont(font1)
3585
+ self.label_31 = QLabel(self.frame_18)
3586
+ self.label_31.setObjectName(u"label_31")
3603
3587
 
3604
- self.gridLayout_21.addWidget(self.label_61, 17, 0, 1, 2)
3588
+ self.gridLayout_21.addWidget(self.label_31, 20, 0, 1, 1)
3605
3589
 
3606
- self.label_121 = QLabel(self.frame_18)
3607
- self.label_121.setObjectName(u"label_121")
3590
+ self.line_24 = QFrame(self.frame_18)
3591
+ self.line_24.setObjectName(u"line_24")
3608
3592
  palette28 = QPalette()
3609
- palette28.setBrush(QPalette.Active, QPalette.WindowText, brush)
3610
- palette28.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
3593
+ palette28.setBrush(QPalette.Active, QPalette.WindowText, brush3)
3594
+ palette28.setBrush(QPalette.Inactive, QPalette.WindowText, brush3)
3611
3595
  palette28.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3612
- self.label_121.setPalette(palette28)
3613
- self.label_121.setFont(font4)
3614
- self.label_121.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
3596
+ self.line_24.setPalette(palette28)
3597
+ self.line_24.setFrameShadow(QFrame.Plain)
3598
+ self.line_24.setLineWidth(4)
3599
+ self.line_24.setFrameShape(QFrame.Shape.HLine)
3615
3600
 
3616
- self.gridLayout_21.addWidget(self.label_121, 21, 1, 1, 2)
3601
+ self.gridLayout_21.addWidget(self.line_24, 14, 0, 1, 3)
3617
3602
 
3618
- self.label_89 = QLabel(self.frame_18)
3619
- self.label_89.setObjectName(u"label_89")
3603
+ self.label_121 = QLabel(self.frame_18)
3604
+ self.label_121.setObjectName(u"label_121")
3620
3605
  palette29 = QPalette()
3621
3606
  palette29.setBrush(QPalette.Active, QPalette.WindowText, brush)
3622
3607
  palette29.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
3623
3608
  palette29.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3624
- self.label_89.setPalette(palette29)
3625
- self.label_89.setFont(font4)
3626
- self.label_89.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
3627
-
3628
- self.gridLayout_21.addWidget(self.label_89, 13, 1, 1, 2)
3629
-
3630
- self.label_33 = QLabel(self.frame_18)
3631
- self.label_33.setObjectName(u"label_33")
3632
- self.label_33.setFont(font1)
3633
-
3634
- self.gridLayout_21.addWidget(self.label_33, 10, 0, 1, 2)
3635
-
3636
- self.label_3 = QLabel(self.frame_18)
3637
- self.label_3.setObjectName(u"label_3")
3638
- self.label_3.setFont(font1)
3609
+ self.label_121.setPalette(palette29)
3610
+ self.label_121.setFont(font4)
3611
+ self.label_121.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
3639
3612
 
3640
- self.gridLayout_21.addWidget(self.label_3, 24, 0, 1, 2)
3613
+ self.gridLayout_21.addWidget(self.label_121, 21, 1, 1, 2)
3641
3614
 
3642
3615
  self.line_29 = QFrame(self.frame_18)
3643
3616
  self.line_29.setObjectName(u"line_29")
@@ -3652,41 +3625,91 @@ class Ui_mainWindow(object):
3652
3625
 
3653
3626
  self.gridLayout_21.addWidget(self.line_29, 9, 0, 1, 3)
3654
3627
 
3628
+ self.node_distances_elements_spinBox = QSpinBox(self.frame_18)
3629
+ self.node_distances_elements_spinBox.setObjectName(u"node_distances_elements_spinBox")
3630
+ self.node_distances_elements_spinBox.setFont(font1)
3631
+ self.node_distances_elements_spinBox.setMinimum(1)
3632
+ self.node_distances_elements_spinBox.setMaximum(99999)
3633
+ self.node_distances_elements_spinBox.setValue(2)
3634
+
3635
+ self.gridLayout_21.addWidget(self.node_distances_elements_spinBox, 17, 2, 1, 1)
3636
+
3637
+ self.label_89 = QLabel(self.frame_18)
3638
+ self.label_89.setObjectName(u"label_89")
3639
+ palette31 = QPalette()
3640
+ palette31.setBrush(QPalette.Active, QPalette.WindowText, brush)
3641
+ palette31.setBrush(QPalette.Inactive, QPalette.WindowText, brush)
3642
+ palette31.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3643
+ self.label_89.setPalette(palette31)
3644
+ self.label_89.setFont(font4)
3645
+ self.label_89.setAlignment(Qt.AlignBottom|Qt.AlignLeading|Qt.AlignLeft)
3646
+
3647
+ self.gridLayout_21.addWidget(self.label_89, 13, 1, 1, 2)
3648
+
3649
+ self.internal_investment_methods_radioButton = QRadioButton(self.frame_18)
3650
+ self.internal_investment_methods_radioButton.setObjectName(u"internal_investment_methods_radioButton")
3651
+ self.internal_investment_methods_radioButton.setFont(font1)
3652
+ self.internal_investment_methods_radioButton.setChecked(True)
3653
+
3654
+ self.gridLayout_21.addWidget(self.internal_investment_methods_radioButton, 25, 0, 1, 3)
3655
+
3656
+ self.label_88 = QLabel(self.frame_18)
3657
+ self.label_88.setObjectName(u"label_88")
3658
+ self.label_88.setMinimumSize(QSize(24, 24))
3659
+ self.label_88.setMaximumSize(QSize(24, 24))
3660
+ self.label_88.setPixmap(QPixmap(u":/Icons/icons/color_grid.svg"))
3661
+ self.label_88.setScaledContents(True)
3662
+
3663
+ self.gridLayout_21.addWidget(self.label_88, 13, 0, 1, 1)
3664
+
3665
+ self.cluster_number_spinBox = QSpinBox(self.frame_18)
3666
+ self.cluster_number_spinBox.setObjectName(u"cluster_number_spinBox")
3667
+ self.cluster_number_spinBox.setFont(font1)
3668
+ self.cluster_number_spinBox.setMinimum(1)
3669
+ self.cluster_number_spinBox.setMaximum(999999)
3670
+ self.cluster_number_spinBox.setValue(200)
3671
+
3672
+ self.gridLayout_21.addWidget(self.cluster_number_spinBox, 10, 2, 1, 1)
3673
+
3655
3674
  self.label_44 = QLabel(self.frame_18)
3656
3675
  self.label_44.setObjectName(u"label_44")
3657
3676
 
3658
3677
  self.gridLayout_21.addWidget(self.label_44, 18, 0, 1, 2)
3659
3678
 
3660
- self.line_30 = QFrame(self.frame_18)
3661
- self.line_30.setObjectName(u"line_30")
3662
- palette31 = QPalette()
3663
- palette31.setBrush(QPalette.Active, QPalette.WindowText, brush3)
3664
- palette31.setBrush(QPalette.Inactive, QPalette.WindowText, brush3)
3665
- palette31.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3666
- self.line_30.setPalette(palette31)
3667
- self.line_30.setFrameShadow(QFrame.Plain)
3668
- self.line_30.setLineWidth(4)
3669
- self.line_30.setFrameShape(QFrame.Shape.HLine)
3679
+ self.plugins_investment_methods_radioButton = QRadioButton(self.frame_18)
3680
+ self.plugins_investment_methods_radioButton.setObjectName(u"plugins_investment_methods_radioButton")
3681
+ self.plugins_investment_methods_radioButton.setFont(font1)
3670
3682
 
3671
- self.gridLayout_21.addWidget(self.line_30, 22, 0, 1, 3)
3683
+ self.gridLayout_21.addWidget(self.plugins_investment_methods_radioButton, 29, 0, 1, 3)
3672
3684
 
3673
- self.label_31 = QLabel(self.frame_18)
3674
- self.label_31.setObjectName(u"label_31")
3685
+ self.label_7 = QLabel(self.frame_18)
3686
+ self.label_7.setObjectName(u"label_7")
3675
3687
 
3676
- self.gridLayout_21.addWidget(self.label_31, 20, 0, 1, 1)
3688
+ self.gridLayout_21.addWidget(self.label_7, 12, 0, 1, 2)
3677
3689
 
3678
- self.node_distances_sigma_doubleSpinBox = QDoubleSpinBox(self.frame_18)
3679
- self.node_distances_sigma_doubleSpinBox.setObjectName(u"node_distances_sigma_doubleSpinBox")
3680
- self.node_distances_sigma_doubleSpinBox.setFont(font1)
3681
- self.node_distances_sigma_doubleSpinBox.setDecimals(6)
3682
- self.node_distances_sigma_doubleSpinBox.setSingleStep(0.010000000000000)
3683
- self.node_distances_sigma_doubleSpinBox.setValue(0.750000000000000)
3690
+ self.label_153 = QLabel(self.frame_18)
3691
+ self.label_153.setObjectName(u"label_153")
3692
+ self.label_153.setFont(font1)
3684
3693
 
3685
- self.gridLayout_21.addWidget(self.node_distances_sigma_doubleSpinBox, 16, 2, 1, 1)
3694
+ self.gridLayout_21.addWidget(self.label_153, 28, 0, 1, 2)
3686
3695
 
3687
- self.verticalSpacer_16 = QSpacerItem(20, 250, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
3696
+ self.plugins_investment_evaluation_method_ComboBox = QComboBox(self.frame_18)
3697
+ self.plugins_investment_evaluation_method_ComboBox.setObjectName(u"plugins_investment_evaluation_method_ComboBox")
3698
+ self.plugins_investment_evaluation_method_ComboBox.setFont(font1)
3688
3699
 
3689
- self.gridLayout_21.addItem(self.verticalSpacer_16, 31, 1, 1, 1)
3700
+ self.gridLayout_21.addWidget(self.plugins_investment_evaluation_method_ComboBox, 30, 2, 1, 1)
3701
+
3702
+ self.label_33 = QLabel(self.frame_18)
3703
+ self.label_33.setObjectName(u"label_33")
3704
+ self.label_33.setFont(font1)
3705
+
3706
+ self.gridLayout_21.addWidget(self.label_33, 10, 0, 1, 2)
3707
+
3708
+ self.investment_evaluation_objfunc_ComboBox = QComboBox(self.frame_18)
3709
+ self.investment_evaluation_objfunc_ComboBox.setObjectName(u"investment_evaluation_objfunc_ComboBox")
3710
+ self.investment_evaluation_objfunc_ComboBox.setFont(font1)
3711
+
3712
+ self.gridLayout_21.addWidget(self.investment_evaluation_objfunc_ComboBox, 28, 2, 1, 1)
3690
3713
 
3691
3714
  self.frame_59 = QFrame(self.frame_18)
3692
3715
  self.frame_59.setObjectName(u"frame_59")
@@ -3710,72 +3733,67 @@ class Ui_mainWindow(object):
3710
3733
 
3711
3734
  self.gridLayout_21.addWidget(self.frame_59, 8, 1, 1, 1)
3712
3735
 
3713
- self.node_distances_elements_spinBox = QSpinBox(self.frame_18)
3714
- self.node_distances_elements_spinBox.setObjectName(u"node_distances_elements_spinBox")
3715
- self.node_distances_elements_spinBox.setFont(font1)
3716
- self.node_distances_elements_spinBox.setMinimum(1)
3717
- self.node_distances_elements_spinBox.setMaximum(99999)
3718
- self.node_distances_elements_spinBox.setValue(2)
3719
-
3720
- self.gridLayout_21.addWidget(self.node_distances_elements_spinBox, 17, 2, 1, 1)
3721
-
3722
- self.label_38 = QLabel(self.frame_18)
3723
- self.label_38.setObjectName(u"label_38")
3724
- self.label_38.setFont(font1)
3736
+ self.node_distances_sigma_doubleSpinBox = QDoubleSpinBox(self.frame_18)
3737
+ self.node_distances_sigma_doubleSpinBox.setObjectName(u"node_distances_sigma_doubleSpinBox")
3738
+ self.node_distances_sigma_doubleSpinBox.setFont(font1)
3739
+ self.node_distances_sigma_doubleSpinBox.setDecimals(6)
3740
+ self.node_distances_sigma_doubleSpinBox.setSingleStep(0.010000000000000)
3741
+ self.node_distances_sigma_doubleSpinBox.setValue(0.750000000000000)
3725
3742
 
3726
- self.gridLayout_21.addWidget(self.label_38, 16, 0, 1, 2)
3743
+ self.gridLayout_21.addWidget(self.node_distances_sigma_doubleSpinBox, 16, 2, 1, 1)
3727
3744
 
3728
- self.label_7 = QLabel(self.frame_18)
3729
- self.label_7.setObjectName(u"label_7")
3745
+ self.label_61 = QLabel(self.frame_18)
3746
+ self.label_61.setObjectName(u"label_61")
3747
+ self.label_61.setFont(font1)
3730
3748
 
3731
- self.gridLayout_21.addWidget(self.label_7, 12, 0, 1, 2)
3749
+ self.gridLayout_21.addWidget(self.label_61, 17, 0, 1, 2)
3732
3750
 
3733
- self.line_24 = QFrame(self.frame_18)
3734
- self.line_24.setObjectName(u"line_24")
3735
- palette33 = QPalette()
3736
- palette33.setBrush(QPalette.Active, QPalette.WindowText, brush3)
3737
- palette33.setBrush(QPalette.Inactive, QPalette.WindowText, brush3)
3738
- palette33.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3739
- self.line_24.setPalette(palette33)
3740
- self.line_24.setFrameShadow(QFrame.Plain)
3741
- self.line_24.setLineWidth(4)
3742
- self.line_24.setFrameShape(QFrame.Shape.HLine)
3751
+ self.max_investments_evluation_number_spinBox = QSpinBox(self.frame_18)
3752
+ self.max_investments_evluation_number_spinBox.setObjectName(u"max_investments_evluation_number_spinBox")
3753
+ self.max_investments_evluation_number_spinBox.setFont(font1)
3754
+ self.max_investments_evluation_number_spinBox.setMinimum(1)
3755
+ self.max_investments_evluation_number_spinBox.setMaximum(999999999)
3756
+ self.max_investments_evluation_number_spinBox.setValue(4)
3743
3757
 
3744
- self.gridLayout_21.addWidget(self.line_24, 14, 0, 1, 3)
3758
+ self.gridLayout_21.addWidget(self.max_investments_evluation_number_spinBox, 23, 2, 1, 1)
3745
3759
 
3746
- self.investment_evaluation_objfunc_ComboBox = QComboBox(self.frame_18)
3747
- self.investment_evaluation_objfunc_ComboBox.setObjectName(u"investment_evaluation_objfunc_ComboBox")
3748
- self.investment_evaluation_objfunc_ComboBox.setFont(font1)
3760
+ self.label_94 = QLabel(self.frame_18)
3761
+ self.label_94.setObjectName(u"label_94")
3762
+ self.label_94.setMinimumSize(QSize(24, 24))
3763
+ self.label_94.setMaximumSize(QSize(24, 24))
3764
+ self.label_94.setPixmap(QPixmap(u":/Icons/icons/clustering.svg"))
3765
+ self.label_94.setScaledContents(True)
3749
3766
 
3750
- self.gridLayout_21.addWidget(self.investment_evaluation_objfunc_ComboBox, 26, 2, 1, 1)
3767
+ self.gridLayout_21.addWidget(self.label_94, 8, 0, 1, 1)
3751
3768
 
3752
- self.cluster_number_spinBox = QSpinBox(self.frame_18)
3753
- self.cluster_number_spinBox.setObjectName(u"cluster_number_spinBox")
3754
- self.cluster_number_spinBox.setFont(font1)
3755
- self.cluster_number_spinBox.setMinimum(1)
3756
- self.cluster_number_spinBox.setMaximum(999999)
3757
- self.cluster_number_spinBox.setValue(200)
3769
+ self.verticalSpacer_16 = QSpacerItem(20, 250, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
3758
3770
 
3759
- self.gridLayout_21.addWidget(self.cluster_number_spinBox, 10, 2, 1, 1)
3771
+ self.gridLayout_21.addItem(self.verticalSpacer_16, 33, 1, 1, 1)
3760
3772
 
3761
- self.label_51 = QLabel(self.frame_18)
3762
- self.label_51.setObjectName(u"label_51")
3763
- self.label_51.setFont(font1)
3773
+ self.label_83 = QLabel(self.frame_18)
3774
+ self.label_83.setObjectName(u"label_83")
3775
+ self.label_83.setFont(font1)
3764
3776
 
3765
- self.gridLayout_21.addWidget(self.label_51, 29, 0, 1, 2)
3777
+ self.gridLayout_21.addWidget(self.label_83, 30, 0, 1, 2)
3766
3778
 
3767
- self.internal_investment_methods_radioButton = QRadioButton(self.frame_18)
3768
- self.internal_investment_methods_radioButton.setObjectName(u"internal_investment_methods_radioButton")
3769
- self.internal_investment_methods_radioButton.setFont(font1)
3770
- self.internal_investment_methods_radioButton.setChecked(True)
3779
+ self.line_30 = QFrame(self.frame_18)
3780
+ self.line_30.setObjectName(u"line_30")
3781
+ palette33 = QPalette()
3782
+ palette33.setBrush(QPalette.Active, QPalette.WindowText, brush3)
3783
+ palette33.setBrush(QPalette.Inactive, QPalette.WindowText, brush3)
3784
+ palette33.setBrush(QPalette.Disabled, QPalette.WindowText, brush1)
3785
+ self.line_30.setPalette(palette33)
3786
+ self.line_30.setFrameShadow(QFrame.Plain)
3787
+ self.line_30.setLineWidth(4)
3788
+ self.line_30.setFrameShape(QFrame.Shape.HLine)
3771
3789
 
3772
- self.gridLayout_21.addWidget(self.internal_investment_methods_radioButton, 23, 0, 1, 3)
3790
+ self.gridLayout_21.addWidget(self.line_30, 22, 0, 1, 3)
3773
3791
 
3774
- self.label_153 = QLabel(self.frame_18)
3775
- self.label_153.setObjectName(u"label_153")
3776
- self.label_153.setFont(font1)
3792
+ self.label_38 = QLabel(self.frame_18)
3793
+ self.label_38.setObjectName(u"label_38")
3794
+ self.label_38.setFont(font1)
3777
3795
 
3778
- self.gridLayout_21.addWidget(self.label_153, 26, 0, 1, 2)
3796
+ self.gridLayout_21.addWidget(self.label_38, 16, 0, 1, 2)
3779
3797
 
3780
3798
  self.label_120 = QLabel(self.frame_18)
3781
3799
  self.label_120.setObjectName(u"label_120")
@@ -3786,41 +3804,28 @@ class Ui_mainWindow(object):
3786
3804
 
3787
3805
  self.gridLayout_21.addWidget(self.label_120, 21, 0, 1, 1)
3788
3806
 
3789
- self.max_investments_evluation_number_spinBox = QSpinBox(self.frame_18)
3790
- self.max_investments_evluation_number_spinBox.setObjectName(u"max_investments_evluation_number_spinBox")
3791
- self.max_investments_evluation_number_spinBox.setFont(font1)
3792
- self.max_investments_evluation_number_spinBox.setMinimum(1)
3793
- self.max_investments_evluation_number_spinBox.setMaximum(999999999)
3794
- self.max_investments_evluation_number_spinBox.setValue(4)
3795
-
3796
- self.gridLayout_21.addWidget(self.max_investments_evluation_number_spinBox, 29, 2, 1, 1)
3797
-
3798
- self.label_88 = QLabel(self.frame_18)
3799
- self.label_88.setObjectName(u"label_88")
3800
- self.label_88.setMinimumSize(QSize(24, 24))
3801
- self.label_88.setMaximumSize(QSize(24, 24))
3802
- self.label_88.setPixmap(QPixmap(u":/Icons/icons/color_grid.svg"))
3803
- self.label_88.setScaledContents(True)
3807
+ self.label_3 = QLabel(self.frame_18)
3808
+ self.label_3.setObjectName(u"label_3")
3809
+ self.label_3.setFont(font1)
3804
3810
 
3805
- self.gridLayout_21.addWidget(self.label_88, 13, 0, 1, 1)
3811
+ self.gridLayout_21.addWidget(self.label_3, 26, 0, 1, 2)
3806
3812
 
3807
- self.plugins_investment_methods_radioButton = QRadioButton(self.frame_18)
3808
- self.plugins_investment_methods_radioButton.setObjectName(u"plugins_investment_methods_radioButton")
3809
- self.plugins_investment_methods_radioButton.setFont(font1)
3813
+ self.investment_evaluation_method_ComboBox = QComboBox(self.frame_18)
3814
+ self.investment_evaluation_method_ComboBox.setObjectName(u"investment_evaluation_method_ComboBox")
3815
+ self.investment_evaluation_method_ComboBox.setFont(font1)
3810
3816
 
3811
- self.gridLayout_21.addWidget(self.plugins_investment_methods_radioButton, 27, 0, 1, 3)
3817
+ self.gridLayout_21.addWidget(self.investment_evaluation_method_ComboBox, 26, 2, 1, 1)
3812
3818
 
3813
- self.label_83 = QLabel(self.frame_18)
3814
- self.label_83.setObjectName(u"label_83")
3815
- self.label_83.setFont(font1)
3819
+ self.label_87 = QLabel(self.frame_18)
3820
+ self.label_87.setObjectName(u"label_87")
3816
3821
 
3817
- self.gridLayout_21.addWidget(self.label_83, 28, 0, 1, 2)
3822
+ self.gridLayout_21.addWidget(self.label_87, 24, 0, 1, 2)
3818
3823
 
3819
- self.plugins_investment_evaluation_method_ComboBox = QComboBox(self.frame_18)
3820
- self.plugins_investment_evaluation_method_ComboBox.setObjectName(u"plugins_investment_evaluation_method_ComboBox")
3821
- self.plugins_investment_evaluation_method_ComboBox.setFont(font1)
3824
+ self.label_51 = QLabel(self.frame_18)
3825
+ self.label_51.setObjectName(u"label_51")
3826
+ self.label_51.setFont(font1)
3822
3827
 
3823
- self.gridLayout_21.addWidget(self.plugins_investment_evaluation_method_ComboBox, 28, 2, 1, 1)
3828
+ self.gridLayout_21.addWidget(self.label_51, 23, 0, 1, 2)
3824
3829
 
3825
3830
 
3826
3831
  self.horizontalLayout_6.addWidget(self.frame_18)
@@ -5576,22 +5581,8 @@ class Ui_mainWindow(object):
5576
5581
  #if QT_CONFIG(tooltip)
5577
5582
  self.ml_tab.setToolTip(QCoreApplication.translate("mainWindow", u"Machine-learning related settings", None))
5578
5583
  #endif // QT_CONFIG(tooltip)
5579
- #if QT_CONFIG(tooltip)
5580
- self.investment_evaluation_method_ComboBox.setToolTip(QCoreApplication.translate("mainWindow", u"Select the investment evaluation method", None))
5581
- #endif // QT_CONFIG(tooltip)
5582
- self.label_94.setText("")
5583
- self.label_61.setText(QCoreApplication.translate("mainWindow", u"Min. group size", None))
5584
- self.label_121.setText(QCoreApplication.translate("mainWindow", u"Investment evaluation", None))
5585
- self.label_89.setText(QCoreApplication.translate("mainWindow", u"Node grouping", None))
5586
- self.label_33.setText(QCoreApplication.translate("mainWindow", u"Number of clusters", None))
5587
- self.label_3.setText(QCoreApplication.translate("mainWindow", u"Method", None))
5588
- self.label_44.setText("")
5589
5584
  self.label_31.setText("")
5590
- #if QT_CONFIG(tooltip)
5591
- self.node_distances_sigma_doubleSpinBox.setToolTip(QCoreApplication.translate("mainWindow", u"M\u00e1ximum standard deviation to determine the groups", None))
5592
- #endif // QT_CONFIG(tooltip)
5593
- self.node_distances_sigma_doubleSpinBox.setSuffix(QCoreApplication.translate("mainWindow", u" \u03c3", None))
5594
- self.label_93.setText(QCoreApplication.translate("mainWindow", u"Clustering", None))
5585
+ self.label_121.setText(QCoreApplication.translate("mainWindow", u"Investment evaluation", None))
5595
5586
  #if QT_CONFIG(tooltip)
5596
5587
  self.node_distances_elements_spinBox.setToolTip(QCoreApplication.translate("mainWindow", u"Minimum size of the group", None))
5597
5588
  #endif // QT_CONFIG(tooltip)
@@ -5599,23 +5590,38 @@ class Ui_mainWindow(object):
5599
5590
  self.node_distances_elements_spinBox.setStatusTip("")
5600
5591
  #endif // QT_CONFIG(statustip)
5601
5592
  self.node_distances_elements_spinBox.setSuffix(QCoreApplication.translate("mainWindow", u" elements", None))
5602
- self.label_38.setText(QCoreApplication.translate("mainWindow", u"Nodal distances", None))
5603
- self.label_7.setText("")
5593
+ self.label_89.setText(QCoreApplication.translate("mainWindow", u"Node grouping", None))
5594
+ self.internal_investment_methods_radioButton.setText(QCoreApplication.translate("mainWindow", u"Internal method", None))
5595
+ self.label_88.setText("")
5604
5596
  #if QT_CONFIG(tooltip)
5605
5597
  self.cluster_number_spinBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p>Number of clusters, this affects all the simulations that deal with clustering</p></body></html>", None))
5606
5598
  #endif // QT_CONFIG(tooltip)
5607
5599
  self.cluster_number_spinBox.setSuffix(QCoreApplication.translate("mainWindow", u" Clusters", None))
5608
- self.label_51.setText(QCoreApplication.translate("mainWindow", u"Maximum evaluations", None))
5609
- self.internal_investment_methods_radioButton.setText(QCoreApplication.translate("mainWindow", u"Internal method", None))
5600
+ self.label_44.setText("")
5601
+ self.plugins_investment_methods_radioButton.setText(QCoreApplication.translate("mainWindow", u"Plugin method", None))
5602
+ self.label_7.setText("")
5610
5603
  self.label_153.setText(QCoreApplication.translate("mainWindow", u"Objective function", None))
5611
- self.label_120.setText("")
5604
+ self.label_33.setText(QCoreApplication.translate("mainWindow", u"Number of clusters", None))
5605
+ self.label_93.setText(QCoreApplication.translate("mainWindow", u"Clustering", None))
5606
+ #if QT_CONFIG(tooltip)
5607
+ self.node_distances_sigma_doubleSpinBox.setToolTip(QCoreApplication.translate("mainWindow", u"M\u00e1ximum standard deviation to determine the groups", None))
5608
+ #endif // QT_CONFIG(tooltip)
5609
+ self.node_distances_sigma_doubleSpinBox.setSuffix(QCoreApplication.translate("mainWindow", u" \u03c3", None))
5610
+ self.label_61.setText(QCoreApplication.translate("mainWindow", u"Min. group size", None))
5612
5611
  #if QT_CONFIG(tooltip)
5613
5612
  self.max_investments_evluation_number_spinBox.setToolTip(QCoreApplication.translate("mainWindow", u"Number of maximum evaluations for the optimization methods", None))
5614
5613
  #endif // QT_CONFIG(tooltip)
5615
5614
  self.max_investments_evluation_number_spinBox.setSuffix(QCoreApplication.translate("mainWindow", u" x number of investments", None))
5616
- self.label_88.setText("")
5617
- self.plugins_investment_methods_radioButton.setText(QCoreApplication.translate("mainWindow", u"Plugin method", None))
5618
- self.label_83.setText(QCoreApplication.translate("mainWindow", u"Plugin", None))
5615
+ self.label_94.setText("")
5616
+ self.label_83.setText(QCoreApplication.translate("mainWindow", u"Method", None))
5617
+ self.label_38.setText(QCoreApplication.translate("mainWindow", u"Nodal distances", None))
5618
+ self.label_120.setText("")
5619
+ self.label_3.setText(QCoreApplication.translate("mainWindow", u"Method", None))
5620
+ #if QT_CONFIG(tooltip)
5621
+ self.investment_evaluation_method_ComboBox.setToolTip(QCoreApplication.translate("mainWindow", u"Select the investment evaluation method", None))
5622
+ #endif // QT_CONFIG(tooltip)
5623
+ self.label_87.setText("")
5624
+ self.label_51.setText(QCoreApplication.translate("mainWindow", u"Maximum evaluations", None))
5619
5625
  self.label_55.setText(QCoreApplication.translate("mainWindow", u"Method", None))
5620
5626
  self.label_78.setText("")
5621
5627
  self.label_79.setText(QCoreApplication.translate("mainWindow", u"Cascading", None))
@@ -1025,6 +1025,12 @@ class DiagramsMain(CompiledArraysMain):
1025
1025
  elif isinstance(sel_obj, dev.UPFC):
1026
1026
  root_bus = sel_obj.bus_from
1027
1027
 
1028
+ elif isinstance(sel_obj, dev.Switch):
1029
+ root_bus = sel_obj.bus_from
1030
+
1031
+ else:
1032
+ root_bus = None
1033
+
1028
1034
  if root_bus is not None:
1029
1035
 
1030
1036
  dlg = InputNumberDialogue(min_value=1, max_value=99,
@@ -436,6 +436,10 @@ class ConfigurationMain(ResultsMain):
436
436
 
437
437
  self.circuit.snapshot_time = date_time_value
438
438
 
439
+ def plugin_main_function_triggered(self, arg):
440
+
441
+ print(arg)
442
+
439
443
  def add_plugins(self):
440
444
  """
441
445
  Add the plugins information and create the menu entries
@@ -457,19 +461,33 @@ class ConfigurationMain(ResultsMain):
457
461
  # maybe add the main function
458
462
  if plugin_info.main_fcn.function_ptr is not None:
459
463
 
460
- add_menu_entry(menu=self.ui.menuplugins,
461
- text=plugin_info.name,
462
- icon_path=":/Icons/icons/plugin.svg",
463
- icon_pixmap=plugin_info.icon,
464
- function_ptr=lambda: plugin_info.main_fcn.function_ptr(self))
465
-
466
- else:
467
- pass
468
- # print(f"{plugin_info.name} has no function_ptr, see trace for errors :/")
464
+ """
465
+ Really hard core magic to avoid lambdas shadow each other due to late binding
466
+
467
+ lambda e, func=func: func(self)
468
+
469
+ explanation:
470
+ - e is a bool parameter that the QAction sends when triggered
471
+ - func=func is there for the lambda to force the usage of the value of func
472
+ during the iteration and not after the loop
473
+ - func(self) is then what I wanted to lambda in the first place
474
+ """
475
+ # func = plugin_info.main_fcn.function_ptr
476
+ # lmbd = lambda e, func=func: func(self) # This is not an error, it is correct
477
+
478
+ action = add_menu_entry(
479
+ menu=self.ui.menuplugins,
480
+ text=plugin_info.name,
481
+ icon_path=":/Icons/icons/plugin.svg",
482
+ icon_pixmap=plugin_info.icon,
483
+ function_ptr=plugin_info.main_fcn.get_pointer_lambda(gui_instance=self)
484
+ )
469
485
 
470
486
  # maybe add the investments function
471
487
  if plugin_info.investments_fcn.function_ptr is not None:
472
- self.plugins_investment_evaluation_method_dict[plugin_info.investments_fcn.name] = plugin_info.investments_fcn.function_ptr
488
+ self.plugins_investment_evaluation_method_dict[
489
+ plugin_info.investments_fcn.alias
490
+ ] = plugin_info.investments_fcn.function_ptr
473
491
 
474
492
  # create combobox model for the plugin investments
475
493
  lst = list(self.plugins_investment_evaluation_method_dict.keys())