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