GridCal 5.1.27__tar.gz → 5.1.29__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.
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/MainWindow.py +26 -16
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Model/objects.py +10 -10
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Model/time_events.py +1 -1
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/base_gui.py +32 -32
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/io.py +4 -4
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/simulations.py +45 -30
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/plugins.py +1 -1
- GridCal-5.1.29/GridCal/Session/export_results_driver.py +80 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/__version__.py +1 -1
- {GridCal-5.1.27 → GridCal-5.1.29}/PKG-INFO +1 -1
- GridCal-5.1.27/GridCal/Session/export_results_driver.py +0 -117
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ConsoleWidget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/new_line_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GeneralDialogues.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/GuiFunctions.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/results_model.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/session.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/data/__init__.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/data/cables.csv +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/data/wires.csv +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/templates.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/GridCal/update.py +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/setup.cfg +0 -0
- {GridCal-5.1.27 → GridCal-5.1.29}/setup.py +0 -0
@@ -31,7 +31,7 @@ class Ui_mainWindow(object):
|
|
31
31
|
def setupUi(self, mainWindow):
|
32
32
|
if not mainWindow.objectName():
|
33
33
|
mainWindow.setObjectName(u"mainWindow")
|
34
|
-
mainWindow.resize(
|
34
|
+
mainWindow.resize(1249, 820)
|
35
35
|
mainWindow.setBaseSize(QSize(0, 0))
|
36
36
|
font = QFont()
|
37
37
|
font.setPointSize(10)
|
@@ -3326,38 +3326,48 @@ class Ui_mainWindow(object):
|
|
3326
3326
|
self.frame_34.setObjectName(u"frame_34")
|
3327
3327
|
self.frame_34.setFrameShape(QFrame.NoFrame)
|
3328
3328
|
self.frame_34.setFrameShadow(QFrame.Raised)
|
3329
|
-
self.
|
3330
|
-
self.
|
3329
|
+
self.gridLayout_9 = QGridLayout(self.frame_34)
|
3330
|
+
self.gridLayout_9.setObjectName(u"gridLayout_9")
|
3331
3331
|
self.label_41 = QLabel(self.frame_34)
|
3332
3332
|
self.label_41.setObjectName(u"label_41")
|
3333
3333
|
self.label_41.setFont(font1)
|
3334
3334
|
|
3335
|
-
self.
|
3335
|
+
self.gridLayout_9.addWidget(self.label_41, 0, 0, 1, 1)
|
3336
3336
|
|
3337
|
-
self.
|
3338
|
-
self.
|
3339
|
-
self.areaFromListView.setFont(font1)
|
3337
|
+
self.fromComboBox = QComboBox(self.frame_34)
|
3338
|
+
self.fromComboBox.setObjectName(u"fromComboBox")
|
3340
3339
|
|
3341
|
-
self.
|
3340
|
+
self.gridLayout_9.addWidget(self.fromComboBox, 0, 1, 1, 1)
|
3341
|
+
|
3342
|
+
self.fromListView = QListView(self.frame_34)
|
3343
|
+
self.fromListView.setObjectName(u"fromListView")
|
3344
|
+
self.fromListView.setFont(font1)
|
3345
|
+
|
3346
|
+
self.gridLayout_9.addWidget(self.fromListView, 1, 0, 1, 2)
|
3342
3347
|
|
3343
3348
|
self.splitter_2.addWidget(self.frame_34)
|
3344
3349
|
self.frame_35 = QFrame(self.splitter_2)
|
3345
3350
|
self.frame_35.setObjectName(u"frame_35")
|
3346
3351
|
self.frame_35.setFrameShape(QFrame.NoFrame)
|
3347
3352
|
self.frame_35.setFrameShadow(QFrame.Raised)
|
3348
|
-
self.
|
3349
|
-
self.
|
3353
|
+
self.gridLayout_30 = QGridLayout(self.frame_35)
|
3354
|
+
self.gridLayout_30.setObjectName(u"gridLayout_30")
|
3350
3355
|
self.label_21 = QLabel(self.frame_35)
|
3351
3356
|
self.label_21.setObjectName(u"label_21")
|
3352
3357
|
self.label_21.setFont(font1)
|
3353
3358
|
|
3354
|
-
self.
|
3359
|
+
self.gridLayout_30.addWidget(self.label_21, 0, 0, 1, 1)
|
3360
|
+
|
3361
|
+
self.toComboBox = QComboBox(self.frame_35)
|
3362
|
+
self.toComboBox.setObjectName(u"toComboBox")
|
3363
|
+
|
3364
|
+
self.gridLayout_30.addWidget(self.toComboBox, 0, 1, 1, 1)
|
3355
3365
|
|
3356
|
-
self.
|
3357
|
-
self.
|
3358
|
-
self.
|
3366
|
+
self.toListView = QListView(self.frame_35)
|
3367
|
+
self.toListView.setObjectName(u"toListView")
|
3368
|
+
self.toListView.setFont(font1)
|
3359
3369
|
|
3360
|
-
self.
|
3370
|
+
self.gridLayout_30.addWidget(self.toListView, 1, 0, 1, 2)
|
3361
3371
|
|
3362
3372
|
self.splitter_2.addWidget(self.frame_35)
|
3363
3373
|
|
@@ -4427,7 +4437,7 @@ class Ui_mainWindow(object):
|
|
4427
4437
|
mainWindow.setCentralWidget(self.centralwidget)
|
4428
4438
|
self.menuBar = QMenuBar(mainWindow)
|
4429
4439
|
self.menuBar.setObjectName(u"menuBar")
|
4430
|
-
self.menuBar.setGeometry(QRect(0, 0,
|
4440
|
+
self.menuBar.setGeometry(QRect(0, 0, 1249, 21))
|
4431
4441
|
self.menuBar.setFont(font)
|
4432
4442
|
self.menuProject = QMenu(self.menuBar)
|
4433
4443
|
self.menuProject.setObjectName(u"menuProject")
|
@@ -527,7 +527,7 @@ class ObjectsTableMain(DiagramsMain):
|
|
527
527
|
|
528
528
|
# update the view
|
529
529
|
self.view_objects_data()
|
530
|
-
self.
|
530
|
+
self.update_from_to_list_views()
|
531
531
|
self.update_date_dependent_combos()
|
532
532
|
|
533
533
|
def add_objects_to_current_diagram(self):
|
@@ -573,45 +573,45 @@ class ObjectsTableMain(DiagramsMain):
|
|
573
573
|
|
574
574
|
if elm_type == DeviceType.SubstationDevice.value:
|
575
575
|
self.circuit.add_substation(dev.Substation(name=f'SE {self.circuit.get_substation_number() + 1}'))
|
576
|
-
self.
|
576
|
+
self.update_from_to_list_views()
|
577
577
|
|
578
578
|
elif elm_type == DeviceType.VoltageLevelDevice.value:
|
579
579
|
self.circuit.add_voltage_level(dev.VoltageLevel(
|
580
580
|
name=f'VL {self.circuit.get_voltage_levels_number() + 1}')
|
581
581
|
)
|
582
|
-
self.
|
582
|
+
self.update_from_to_list_views()
|
583
583
|
|
584
584
|
elif elm_type == DeviceType.BusBarDevice.value:
|
585
585
|
self.circuit.add_bus_bar(dev.BusBar(name=f'BB {self.circuit.get_bus_bars_number() + 1}'))
|
586
|
-
self.
|
586
|
+
self.update_from_to_list_views()
|
587
587
|
|
588
588
|
elif elm_type == DeviceType.ZoneDevice.value:
|
589
589
|
self.circuit.add_zone(dev.Zone(name=f'Zone {self.circuit.get_zone_number() + 1}'))
|
590
|
-
self.
|
590
|
+
self.update_from_to_list_views()
|
591
591
|
|
592
592
|
elif elm_type == DeviceType.AreaDevice.value:
|
593
593
|
self.circuit.add_area(dev.Area(name=f'Area {self.circuit.get_area_number() + 1}'))
|
594
|
-
self.
|
594
|
+
self.update_from_to_list_views()
|
595
595
|
|
596
596
|
elif elm_type == DeviceType.CountryDevice.value:
|
597
597
|
self.circuit.add_country(dev.Country(name=f'Country {self.circuit.get_country_number() + 1}'))
|
598
|
-
self.
|
598
|
+
self.update_from_to_list_views()
|
599
599
|
|
600
600
|
elif elm_type == DeviceType.CommunityDevice.value:
|
601
601
|
self.circuit.add_community(dev.Community(
|
602
602
|
name=f'Community {self.circuit.get_communities_number() + 1}')
|
603
603
|
)
|
604
|
-
self.
|
604
|
+
self.update_from_to_list_views()
|
605
605
|
|
606
606
|
elif elm_type == DeviceType.RegionDevice.value:
|
607
607
|
self.circuit.add_region(dev.Region(name=f'Region {self.circuit.get_regions_number() + 1}'))
|
608
|
-
self.
|
608
|
+
self.update_from_to_list_views()
|
609
609
|
|
610
610
|
elif elm_type == DeviceType.MunicipalityDevice.value:
|
611
611
|
self.circuit.add_municipality(dev.Municipality(
|
612
612
|
name=f'Municipalities {self.circuit.get_municipalities_number() + 1}')
|
613
613
|
)
|
614
|
-
self.
|
614
|
+
self.update_from_to_list_views()
|
615
615
|
|
616
616
|
elif elm_type == DeviceType.BusDevice.value:
|
617
617
|
self.circuit.add_bus(dev.Bus(name=f'Bus {self.circuit.get_bus_number() + 1}'))
|
@@ -115,7 +115,7 @@ class TimeEventsMain(ObjectsTableMain):
|
|
115
115
|
self.circuit.delete_profiles()
|
116
116
|
self.ui.profiles_tableView.setModel(None)
|
117
117
|
self.update_date_dependent_combos()
|
118
|
-
self.
|
118
|
+
self.update_from_to_list_views()
|
119
119
|
else:
|
120
120
|
pass
|
121
121
|
else:
|
@@ -34,7 +34,7 @@ from PySide6 import QtGui, QtWidgets, QtCore
|
|
34
34
|
# Engine imports
|
35
35
|
from GridCalEngine.Devices.multi_circuit import MultiCircuit
|
36
36
|
import GridCalEngine.Simulations as sim
|
37
|
-
from GridCalEngine.enumerations import EngineType
|
37
|
+
from GridCalEngine.enumerations import EngineType, DeviceType
|
38
38
|
from GridCalEngine.DataStructures.numerical_circuit import NumericalCircuit, compile_numerical_circuit_at
|
39
39
|
|
40
40
|
from GridCalEngine.Compilers.circuit_to_bentayga import BENTAYGA_AVAILABLE
|
@@ -149,7 +149,7 @@ class BaseMainGui(QMainWindow):
|
|
149
149
|
|
150
150
|
self.current_boundary_set: str = ""
|
151
151
|
|
152
|
-
# threads
|
152
|
+
# threads ------------------------------------------------------------------------------------------------------
|
153
153
|
self.painter = None
|
154
154
|
self.open_file_thread_object = None
|
155
155
|
self.save_file_thread_object = None
|
@@ -164,7 +164,7 @@ class BaseMainGui(QMainWindow):
|
|
164
164
|
self.simulation_start_index: int = -1
|
165
165
|
self.simulation_end_index: int = -1
|
166
166
|
|
167
|
-
# window pointers
|
167
|
+
# window pointers ----------------------------------------------------------------------------------------------
|
168
168
|
self.file_sync_window: Union[SyncDialogueWindow, None] = None
|
169
169
|
self.sigma_dialogue: Union[SigmaAnalysisGUI, None] = None
|
170
170
|
self.grid_generator_dialogue: Union[GridGeneratorGUI, None] = None
|
@@ -181,7 +181,7 @@ class BaseMainGui(QMainWindow):
|
|
181
181
|
self.contingency_checks_diag: Union[CheckListDialogue, None] = None
|
182
182
|
self.start_end_dialogue_window: Union[StartEndSelectionDialogue, None] = None
|
183
183
|
|
184
|
-
# available engines
|
184
|
+
# available engines --------------------------------------------------------------------------------------------
|
185
185
|
engine_lst = [EngineType.GridCal]
|
186
186
|
if NEWTON_PA_AVAILABLE:
|
187
187
|
engine_lst.append(EngineType.NewtonPA)
|
@@ -194,10 +194,19 @@ class BaseMainGui(QMainWindow):
|
|
194
194
|
self.ui.engineComboBox.setCurrentIndex(0)
|
195
195
|
self.engine_dict = {x.value: x for x in engine_lst}
|
196
196
|
|
197
|
-
#
|
197
|
+
# available engines --------------------------------------------------------------------------------------------
|
198
|
+
exchange_places = [DeviceType.AreaDevice, DeviceType.CountryDevice]
|
199
|
+
exchange_places_mdl = gf.get_list_model([x.value for x in exchange_places])
|
200
|
+
self.ui.fromComboBox.setModel(exchange_places_mdl)
|
201
|
+
self.ui.fromComboBox.setCurrentIndex(0)
|
202
|
+
self.ui.toComboBox.setModel(exchange_places_mdl)
|
203
|
+
self.ui.toComboBox.setCurrentIndex(0)
|
204
|
+
self.exchange_places_dict = {x.value: x for x in exchange_places}
|
205
|
+
|
206
|
+
# dark mode detection ------------------------------------------------------------------------------------------
|
198
207
|
self.ui.dark_mode_checkBox.setChecked(IS_DARK)
|
199
208
|
|
200
|
-
# Console
|
209
|
+
# Console ------------------------------------------------------------------------------------------------------
|
201
210
|
self.console: Union[ConsoleWidget, None] = None
|
202
211
|
try:
|
203
212
|
self.create_console()
|
@@ -206,7 +215,7 @@ class BaseMainGui(QMainWindow):
|
|
206
215
|
|
207
216
|
self.calculation_inputs_to_display = None
|
208
217
|
|
209
|
-
#
|
218
|
+
# --------------------------------------------------------------------------------------------------------------
|
210
219
|
self.ui.actionClear_stuff_running_right_now.triggered.connect(self.clear_stuff_running)
|
211
220
|
self.ui.actionAbout.triggered.connect(self.about_box)
|
212
221
|
self.ui.actionAuto_rate_branches.triggered.connect(self.auto_rate_branches)
|
@@ -230,21 +239,9 @@ class BaseMainGui(QMainWindow):
|
|
230
239
|
|
231
240
|
self.ui.grid_name_line_edit.textChanged.connect(self.change_circuit_name)
|
232
241
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
if self.catalogue_dialogue.ui.checkBox.isChecked():
|
238
|
-
# or self.catalogue_dialogue.ui.checkBox_5.isChecked()
|
239
|
-
transformers = self.catalogue_dialogue.get_transformer_catalogue(df)
|
240
|
-
self.circuit.transformer_types += transformers
|
241
|
-
|
242
|
-
elif self.catalogue_dialogue.ui.checkBox_2.isChecked():
|
243
|
-
self.circuit.underground_cable_types += self.catalogue_dialogue.get_cables_catalogue(df)
|
244
|
-
|
245
|
-
elif self.catalogue_dialogue.ui.checkBox_3.isChecked():
|
246
|
-
# or self.catalogue_dialogue.ui.checkBox_6.isChecked()
|
247
|
-
self.circuit.sequence_line_types += self.catalogue_dialogue.get_sequence_lines_catalogue(df)
|
242
|
+
# comboboxes
|
243
|
+
self.ui.fromComboBox.currentTextChanged.connect(self.update_from_to_list_views)
|
244
|
+
self.ui.toComboBox.currentTextChanged.connect(self.update_from_to_list_views)
|
248
245
|
|
249
246
|
def LOCK(self, val: bool = True) -> None:
|
250
247
|
"""
|
@@ -591,20 +588,23 @@ class BaseMainGui(QMainWindow):
|
|
591
588
|
self.ui.vs_target_comboBox.setModel(mdl)
|
592
589
|
self.setup_time_sliders()
|
593
590
|
|
594
|
-
def
|
591
|
+
def update_from_to_list_views(self):
|
595
592
|
"""
|
596
|
-
Update the area dependent combos
|
593
|
+
Update the exchange area, countries, etc... dependent combos
|
597
594
|
"""
|
598
|
-
|
599
|
-
|
600
|
-
|
595
|
+
same_type = self.ui.fromComboBox.currentText() == self.ui.toComboBox.currentText()
|
596
|
+
|
597
|
+
devs_from = self.circuit.get_elements_by_type(self.exchange_places_dict[self.ui.fromComboBox.currentText()])
|
598
|
+
mdl1 = gf.get_list_model([str(elm) for elm in devs_from], checks=True)
|
599
|
+
self.ui.fromListView.setModel(mdl1)
|
601
600
|
|
602
|
-
self.ui.
|
603
|
-
|
601
|
+
devs_to = self.circuit.get_elements_by_type(self.exchange_places_dict[self.ui.toComboBox.currentText()])
|
602
|
+
mdl2 = gf.get_list_model([str(elm) for elm in devs_to], checks=True)
|
603
|
+
self.ui.toListView.setModel(mdl2)
|
604
604
|
|
605
|
-
if
|
606
|
-
self.ui.
|
607
|
-
self.ui.
|
605
|
+
if len(devs_from) > 1 and same_type:
|
606
|
+
self.ui.fromListView.model().item(0).setCheckState(QtCore.Qt.CheckState.Checked)
|
607
|
+
self.ui.toListView.model().item(1).setCheckState(QtCore.Qt.CheckState.Checked)
|
608
608
|
|
609
609
|
def fix_generators_active_based_on_the_power(self, ask_before=True):
|
610
610
|
"""
|
@@ -376,7 +376,7 @@ class IoMain(ConfigurationMain):
|
|
376
376
|
|
377
377
|
# update the drop-down menus that display dates
|
378
378
|
self.update_date_dependent_combos()
|
379
|
-
self.
|
379
|
+
self.update_from_to_list_views()
|
380
380
|
|
381
381
|
# get the session tree structure
|
382
382
|
session_data_dict = self.open_file_thread_object.get_session_tree()
|
@@ -793,7 +793,7 @@ class IoMain(ConfigurationMain):
|
|
793
793
|
|
794
794
|
# update the drop down menus that display dates
|
795
795
|
self.update_date_dependent_combos()
|
796
|
-
self.
|
796
|
+
self.update_from_to_list_views()
|
797
797
|
|
798
798
|
# clear the results
|
799
799
|
self.clear_results()
|
@@ -837,7 +837,7 @@ class IoMain(ConfigurationMain):
|
|
837
837
|
:return:
|
838
838
|
"""
|
839
839
|
|
840
|
-
available_results = self.
|
840
|
+
available_results = self.get_available_drivers()
|
841
841
|
|
842
842
|
if len(available_results) > 0:
|
843
843
|
|
@@ -851,7 +851,7 @@ class IoMain(ConfigurationMain):
|
|
851
851
|
|
852
852
|
self.stuff_running_now.append('export_all')
|
853
853
|
self.export_all_thread_object = exprtdrv.ExportAllThread(circuit=self.circuit,
|
854
|
-
|
854
|
+
drivers_list=available_results,
|
855
855
|
file_name=filename)
|
856
856
|
|
857
857
|
self.export_all_thread_object.progress_signal.connect(self.ui.progressBar.setValue)
|
@@ -27,6 +27,7 @@ from PySide6 import QtGui, QtWidgets
|
|
27
27
|
from matplotlib.colors import LinearSegmentedColormap
|
28
28
|
import GridCal.Gui.GuiFunctions as gf
|
29
29
|
import GridCal.Gui.Visualization.visualization as viz
|
30
|
+
from GridCal.Gui.GeneralDialogues import LogsDialogue
|
30
31
|
from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
|
31
32
|
from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import MapWidget
|
32
33
|
from GridCal.Gui.messages import yes_no_question, error_msg, warning_msg, info_msg
|
@@ -43,6 +44,7 @@ from GridCalEngine.IO.file_system import get_create_gridcal_folder
|
|
43
44
|
from GridCalEngine.IO.gridcal.remote import RemoteInstruction
|
44
45
|
from GridCalEngine.DataStructures.numerical_circuit import compile_numerical_circuit_at
|
45
46
|
from GridCalEngine.Simulations.types import DRIVER_OBJECTS
|
47
|
+
from GridCalEngine.basic_structures import Logger
|
46
48
|
from GridCalEngine.enumerations import (DeviceType, AvailableTransferMode, SolverType, MIPSolvers, TimeGrouping,
|
47
49
|
ZonalGrouping, ContingencyMethod, InvestmentEvaluationMethod, EngineType,
|
48
50
|
BranchImpedanceMode, ResultTypes, SimulationTypes, NodalCapacityMethod,
|
@@ -256,7 +258,7 @@ class SimulationsMain(TimeEventsMain):
|
|
256
258
|
|
257
259
|
return all_threads
|
258
260
|
|
259
|
-
def
|
261
|
+
def get_available_drivers(self) -> List[DRIVER_OBJECTS]:
|
260
262
|
"""
|
261
263
|
Get a list of all the available results' objects
|
262
264
|
:return: list[object]
|
@@ -539,7 +541,7 @@ class SimulationsMain(TimeEventsMain):
|
|
539
541
|
# clear results lists
|
540
542
|
self.ui.results_treeView.setModel(None)
|
541
543
|
|
542
|
-
available_results = self.
|
544
|
+
available_results = self.get_available_drivers()
|
543
545
|
max_steps = 0
|
544
546
|
d = dict()
|
545
547
|
lst = list()
|
@@ -583,13 +585,13 @@ class SimulationsMain(TimeEventsMain):
|
|
583
585
|
self.ui.resultsTableView.setModel(None)
|
584
586
|
self.ui.resultsLogsTreeView.setModel(None)
|
585
587
|
|
586
|
-
def
|
588
|
+
def get_compatible_from_to_buses_and_inter_branches(self) -> Tuple[
|
587
589
|
bool,
|
588
590
|
List[Tuple[int, dev.Bus]],
|
589
591
|
List[Tuple[int, dev.Bus]],
|
590
592
|
List[Tuple[int, object, float]],
|
591
593
|
List[Tuple[int, object, float]],
|
592
|
-
List[dev.Area], List[dev.Area]]:
|
594
|
+
List[dev.Area | dev.Zone | dev.Country], List[dev.Area | dev.Zone | dev.Country]]:
|
593
595
|
"""
|
594
596
|
Get the lists that help defining the inter area objects
|
595
597
|
:return: success?,
|
@@ -600,27 +602,40 @@ class SimulationsMain(TimeEventsMain):
|
|
600
602
|
List of areas from,
|
601
603
|
List of areas to
|
602
604
|
"""
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
for
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
for
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
605
|
+
dev_tpe_from = self.exchange_places_dict[self.ui.fromComboBox.currentText()]
|
606
|
+
devs_from = self.circuit.get_elements_by_type(dev_tpe_from)
|
607
|
+
from_idx = gf.get_checked_indices(self.ui.fromListView.model())
|
608
|
+
objects_from = [devs_from[i] for i in from_idx]
|
609
|
+
lst_from = self.circuit.get_aggregation_buses(objects_from)
|
610
|
+
buses_from_set = {x[1] for x in lst_from}
|
611
|
+
|
612
|
+
dev_tpe_to = self.exchange_places_dict[self.ui.toComboBox.currentText()]
|
613
|
+
devs_to = self.circuit.get_elements_by_type(dev_tpe_to)
|
614
|
+
to_idx = gf.get_checked_indices(self.ui.toListView.model())
|
615
|
+
objects_to = [devs_to[i] for i in to_idx]
|
616
|
+
lst_to = self.circuit.get_aggregation_buses(objects_to)
|
617
|
+
buses_to_set = {x[1] for x in lst_to}
|
618
|
+
|
619
|
+
buses_intersection = buses_from_set & buses_to_set
|
620
|
+
|
621
|
+
if len(buses_intersection) > 0:
|
622
|
+
logger = Logger()
|
623
|
+
for bus in buses_intersection:
|
624
|
+
logger.add_error(msg=f'Bus in both selected {dev_tpe_from.value} to {dev_tpe_to.value}',
|
625
|
+
device_class=bus.device_type.value,
|
626
|
+
device=bus.name)
|
627
|
+
|
628
|
+
# Show dialogue
|
629
|
+
dlg = LogsDialogue(name="Add selected DB objects to current diagram", logger=logger)
|
630
|
+
dlg.setModal(True)
|
631
|
+
dlg.exec()
|
632
|
+
|
633
|
+
return False, [], [], [], [], [], []
|
634
|
+
|
635
|
+
lst_br = self.circuit.get_inter_buses_branches(buses_from_set, buses_to_set)
|
636
|
+
lst_br_hvdc = self.circuit.get_inter_buses_hvdc_branches(buses_from_set, buses_to_set)
|
637
|
+
|
638
|
+
return True, lst_from, lst_to, lst_br, lst_br_hvdc, objects_from, objects_to
|
624
639
|
|
625
640
|
def get_selected_power_flow_options(self) -> sim.PowerFlowOptions:
|
626
641
|
"""
|
@@ -1272,7 +1287,7 @@ class SimulationsMain(TimeEventsMain):
|
|
1272
1287
|
max_report_elements = 5 # TODO: self.ui.ntcReportLimitingElementsSpinBox.value()
|
1273
1288
|
# available transfer capacity inter areas
|
1274
1289
|
(compatible_areas, lst_from, lst_to, lst_br,
|
1275
|
-
lst_hvdc_br, areas_from, areas_to) = self.
|
1290
|
+
lst_hvdc_br, areas_from, areas_to) = self.get_compatible_from_to_buses_and_inter_branches()
|
1276
1291
|
|
1277
1292
|
if not compatible_areas:
|
1278
1293
|
return
|
@@ -1388,7 +1403,7 @@ class SimulationsMain(TimeEventsMain):
|
|
1388
1403
|
# available transfer capacity inter areas
|
1389
1404
|
(compatible_areas,
|
1390
1405
|
lst_from, lst_to, lst_br,
|
1391
|
-
lst_hvdc_br, areas_from, areas_to) = self.
|
1406
|
+
lst_hvdc_br, areas_from, areas_to) = self.get_compatible_from_to_buses_and_inter_branches()
|
1392
1407
|
|
1393
1408
|
if not compatible_areas:
|
1394
1409
|
return
|
@@ -1520,7 +1535,7 @@ class SimulationsMain(TimeEventsMain):
|
|
1520
1535
|
|
1521
1536
|
if self.ui.atcRadioButton.isChecked():
|
1522
1537
|
use_alpha = True
|
1523
|
-
compatible_areas, lst_from, lst_to, lst_br, lst_hvdc_br, areas_from, areas_to = self.
|
1538
|
+
compatible_areas, lst_from, lst_to, lst_br, lst_hvdc_br, areas_from, areas_to = self.get_compatible_from_to_buses_and_inter_branches()
|
1524
1539
|
|
1525
1540
|
if compatible_areas:
|
1526
1541
|
idx_from = [i for i, bus in lst_from]
|
@@ -1883,7 +1898,7 @@ class SimulationsMain(TimeEventsMain):
|
|
1883
1898
|
# available transfer capacity inter areas
|
1884
1899
|
if maximize_flows:
|
1885
1900
|
(compatible_areas, lst_from, lst_to,
|
1886
|
-
lst_br, lst_hvdc_br, areas_from, areas_to) = self.
|
1901
|
+
lst_br, lst_hvdc_br, areas_from, areas_to) = self.get_compatible_from_to_buses_and_inter_branches()
|
1887
1902
|
idx_from = np.array([i for i, bus in lst_from])
|
1888
1903
|
idx_to = np.array([i for i, bus in lst_to])
|
1889
1904
|
|
@@ -2098,7 +2113,7 @@ class SimulationsMain(TimeEventsMain):
|
|
2098
2113
|
|
2099
2114
|
# available transfer capacity inter areas
|
2100
2115
|
(compatible_areas, lst_from, lst_to, lst_br,
|
2101
|
-
lst_hvdc_br, areas_from, areas_to) = self.
|
2116
|
+
lst_hvdc_br, areas_from, areas_to) = self.get_compatible_from_to_buses_and_inter_branches()
|
2102
2117
|
|
2103
2118
|
if not compatible_areas:
|
2104
2119
|
error_msg('There are no compatible areas')
|
@@ -64,7 +64,7 @@ class PluginFunction:
|
|
64
64
|
- func(self) is then what I wanted to lambda in the first place
|
65
65
|
"""
|
66
66
|
func = self.function_ptr
|
67
|
-
return lambda e, func=func: func(gui_instance) # This is not an error, it is correct
|
67
|
+
return lambda e=True, func=func: func(gui_instance) # This is not an error, it is correct
|
68
68
|
|
69
69
|
def to_dict(self) -> Dict[str, str]:
|
70
70
|
"""
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# GridCal
|
2
|
+
# Copyright (C) 2015 - 2024 Santiago Peñate Vera
|
3
|
+
#
|
4
|
+
# This program is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public License
|
15
|
+
# along with this program; if not, write to the Free Software Foundation,
|
16
|
+
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
|
+
|
18
|
+
from typing import List
|
19
|
+
from PySide6.QtCore import QThread, Signal
|
20
|
+
from GridCalEngine.IO.gridcal.results_export import export_drivers
|
21
|
+
from GridCalEngine.Devices.multi_circuit import MultiCircuit
|
22
|
+
from GridCalEngine.Simulations.types import DRIVER_OBJECTS
|
23
|
+
from GridCalEngine.basic_structures import Logger
|
24
|
+
|
25
|
+
|
26
|
+
class ExportAllThread(QThread):
|
27
|
+
"""
|
28
|
+
ExportAllThread
|
29
|
+
"""
|
30
|
+
progress_signal = Signal(float)
|
31
|
+
progress_text = Signal(str)
|
32
|
+
done_signal = Signal()
|
33
|
+
|
34
|
+
def __init__(self, circuit: MultiCircuit, drivers_list: List[DRIVER_OBJECTS], file_name: str):
|
35
|
+
"""
|
36
|
+
Constructor
|
37
|
+
:param circuit: Grid circuit
|
38
|
+
:param drivers_list: list of GridCal simulation drivers
|
39
|
+
:param file_name: name of the file where to save (.zip)
|
40
|
+
"""
|
41
|
+
QThread.__init__(self)
|
42
|
+
|
43
|
+
self.circuit: MultiCircuit = circuit
|
44
|
+
|
45
|
+
self.drivers_list: List[DRIVER_OBJECTS] = drivers_list
|
46
|
+
|
47
|
+
self.file_name: str = file_name
|
48
|
+
|
49
|
+
self.valid: bool = False
|
50
|
+
|
51
|
+
self.logger = Logger()
|
52
|
+
|
53
|
+
self.error_msg: str = ""
|
54
|
+
|
55
|
+
self.__cancel__ = False
|
56
|
+
|
57
|
+
def run(self) -> None:
|
58
|
+
"""
|
59
|
+
run the file save procedure
|
60
|
+
"""
|
61
|
+
|
62
|
+
# try:
|
63
|
+
export_drivers(drivers_list=self.drivers_list,
|
64
|
+
file_name=self.file_name,
|
65
|
+
text_func=self.progress_text.emit,
|
66
|
+
progress_func=self.progress_signal.emit,
|
67
|
+
logger=self.logger)
|
68
|
+
|
69
|
+
self.valid = True
|
70
|
+
|
71
|
+
# post events
|
72
|
+
self.progress_text.emit('Done!')
|
73
|
+
|
74
|
+
self.done_signal.emit()
|
75
|
+
|
76
|
+
def cancel(self):
|
77
|
+
"""
|
78
|
+
Cancel progress
|
79
|
+
"""
|
80
|
+
self.__cancel__ = True
|