GridCal 5.3.4__tar.gz → 5.3.5__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.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +1 -7
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +1 -2
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +7 -5
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +8 -4
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +26 -7
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +3 -1
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +8 -8
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +34 -18
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +12 -15
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -68
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +31 -44
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +29 -203
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +178 -172
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +1 -1
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +12 -2
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +5 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +2 -2
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +6 -8
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/__version__.py +1 -1
- {gridcal-5.3.4 → gridcal-5.3.5}/PKG-INFO +1 -1
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -153
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -90
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -93
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_infra_map.py +0 -102
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -103
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -91
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -94
- gridcal-5.3.4/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -92
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ExecuteGridCal.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/MainWindow.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/io.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/SubClasses/simulations.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/object_select_window.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Visualization/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Visualization/visualization.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Widgets/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/associations_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/console_widget.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/general_dialogues.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/gui_functions.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/messages.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/object_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/pandas_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/plot_config.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/profiles_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/results_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/themes.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/update_gui_all.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/update_gui_common.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/wrappable_table_model.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/LICENSE.txt +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/export_results_driver.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/file_handler.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/server_driver.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/session.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Session/synchronization_driver.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/GridCal.ico +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/GridCal.svg +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/__init__.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/cables.csv +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/sequence_lines.csv +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/transformers.csv +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/data/wires.csv +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/plugins.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/templates.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/GridCal/update.py +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/setup.cfg +0 -0
- {gridcal-5.3.4 → gridcal-5.3.5}/setup.py +0 -0
@@ -144,7 +144,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
144
144
|
x = pos.x() - self.rect().width() / 2
|
145
145
|
y = pos.y() - self.rect().height() / 2
|
146
146
|
self.setRect(x, y, self.rect().width(), self.rect().height())
|
147
|
-
self.
|
147
|
+
self.set_callbacks(pos.x(), pos.y())
|
148
148
|
|
149
149
|
if self.hovered and self.enabled:
|
150
150
|
self.update_position()
|
@@ -232,13 +232,7 @@ class LineLocationGraphicItem(QtWidgets.QGraphicsEllipseItem, NodeTemplate):
|
|
232
232
|
# Implement the functionality for Action 1 here
|
233
233
|
self.editor.remove_line_location_graphic(self)
|
234
234
|
|
235
|
-
def MergeFunction(self):
|
236
|
-
"""
|
237
235
|
|
238
|
-
:return:
|
239
|
-
"""
|
240
|
-
self.editor.merge_lines()
|
241
|
-
pass
|
242
236
|
|
243
237
|
def setNodeColor(self, inner_color: QColor, border_color: QColor = None) -> None:
|
244
238
|
"""
|
{gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py
RENAMED
@@ -47,7 +47,6 @@ class MapLineContainer(GenericDiagramWidget):
|
|
47
47
|
self.nodes_list: List[LineLocationGraphicItem] = list()
|
48
48
|
self.segments_list: List[MapLineSegment] = list()
|
49
49
|
self.enabled = True
|
50
|
-
self.original = True # TODO: Que es esto?
|
51
50
|
|
52
51
|
def set_width_scale(self, branch_scale: float, arrow_scale: float):
|
53
52
|
"""
|
@@ -469,7 +468,7 @@ class MapLineContainer(GenericDiagramWidget):
|
|
469
468
|
for line in self.segments_list:
|
470
469
|
line.set_enable(val=False)
|
471
470
|
|
472
|
-
def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
|
471
|
+
def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
|
473
472
|
"""
|
474
473
|
|
475
474
|
:param Sf:
|
@@ -63,7 +63,7 @@ class MapLineSegment(QGraphicsLineItem):
|
|
63
63
|
self.first.add_position_change_callback(self.set_from_side_coordinates)
|
64
64
|
self.second.add_position_change_callback(self.set_to_side_coordinates)
|
65
65
|
|
66
|
-
self.set_colour(self.color, self.style)
|
66
|
+
self._pen = self.set_colour(self.color, self.style)
|
67
67
|
self.update_endings()
|
68
68
|
self.needsUpdate = True
|
69
69
|
self.setZValue(0)
|
@@ -93,9 +93,9 @@ class MapLineSegment(QGraphicsLineItem):
|
|
93
93
|
:param width:
|
94
94
|
:return:
|
95
95
|
"""
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
if self._pen.widthF() != width: # Only update if width changes
|
97
|
+
self._pen.setWidthF(width)
|
98
|
+
self.setPen(self._pen)
|
99
99
|
|
100
100
|
def set_arrow_scale(self, width: float):
|
101
101
|
"""
|
@@ -124,6 +124,8 @@ class MapLineSegment(QGraphicsLineItem):
|
|
124
124
|
self.arrow_p_to.set_colour(color, self.arrow_p_to.w, style)
|
125
125
|
self.arrow_q_to.set_colour(color, self.arrow_q_to.w, style)
|
126
126
|
|
127
|
+
return pen
|
128
|
+
|
127
129
|
def set_from_side_coordinates(self, x: float, y: float):
|
128
130
|
"""
|
129
131
|
|
@@ -383,7 +385,7 @@ class MapLineSegment(QGraphicsLineItem):
|
|
383
385
|
self.editor.circuit.delete_branch(obj=self.api_object)
|
384
386
|
self.editor.delete_diagram_element(device=self.api_object)
|
385
387
|
|
386
|
-
def set_arrows_with_power(self, Sf: complex, St: complex) -> None:
|
388
|
+
def set_arrows_with_power(self, Sf: complex | None, St: complex | None) -> None:
|
387
389
|
"""
|
388
390
|
Set the arrow directions
|
389
391
|
:param Sf: Complex power from
|
@@ -5,7 +5,7 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
from typing import Union, TYPE_CHECKING, List, Callable
|
7
7
|
from PySide6.QtCore import QPointF
|
8
|
-
from PySide6.QtGui import QBrush
|
8
|
+
from PySide6.QtGui import QBrush
|
9
9
|
|
10
10
|
from GridCal.Gui.Diagrams.generic_graphics import GenericDiagramWidget
|
11
11
|
|
@@ -24,10 +24,15 @@ class NodeTemplate(GenericDiagramWidget):
|
|
24
24
|
api_object: ALL_DEV_TYPES = None,
|
25
25
|
editor: Union[GridMapWidget, None] = None,
|
26
26
|
draw_labels: bool = True,
|
27
|
-
needsUpdate: bool = True,
|
28
27
|
lat: float = 0.0,
|
29
28
|
lon: float = 0.0):
|
30
29
|
"""
|
30
|
+
|
31
|
+
:param api_object: any GridCal device object
|
32
|
+
:param editor: GridMapWidget
|
33
|
+
:param draw_labels:
|
34
|
+
:param lat:
|
35
|
+
:param lon:
|
31
36
|
"""
|
32
37
|
GenericDiagramWidget.__init__(self,
|
33
38
|
parent=None,
|
@@ -35,7 +40,6 @@ class NodeTemplate(GenericDiagramWidget):
|
|
35
40
|
editor=editor,
|
36
41
|
draw_labels=draw_labels)
|
37
42
|
|
38
|
-
self.needs_update: bool = needsUpdate
|
39
43
|
self.lat = lat
|
40
44
|
self.lon = lon
|
41
45
|
|
@@ -52,7 +56,7 @@ class NodeTemplate(GenericDiagramWidget):
|
|
52
56
|
"""
|
53
57
|
self._callbacks.append(fcn)
|
54
58
|
|
55
|
-
def
|
59
|
+
def set_callbacks(self, x: float, y: float) -> None:
|
56
60
|
"""
|
57
61
|
Call all callback functions with x, y
|
58
62
|
:param x: x position
|
{gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py
RENAMED
@@ -62,8 +62,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
62
62
|
self.api_object: Substation = api_object # reassign for the types to be clear
|
63
63
|
|
64
64
|
self.radius = r
|
65
|
-
|
66
|
-
|
65
|
+
r2 = r / 2
|
66
|
+
x, y = self.editor.to_x_y(lat=lat, lon=lon) # upper left corner
|
67
|
+
self.setRect(
|
68
|
+
x - r2,
|
69
|
+
y - r2,
|
70
|
+
self.radius,
|
71
|
+
self.radius
|
72
|
+
)
|
67
73
|
|
68
74
|
# Enable hover events for the item
|
69
75
|
self.setAcceptHoverEvents(True)
|
@@ -113,7 +119,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
113
119
|
r3 = r / 2
|
114
120
|
xc = new_x + r3
|
115
121
|
yc = new_y + r3
|
116
|
-
self.
|
122
|
+
self.set_callbacks(xc, yc)
|
117
123
|
|
118
124
|
for vl_graphics in self.voltage_level_graphics:
|
119
125
|
vl_graphics.center_on_substation()
|
@@ -155,8 +161,14 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
155
161
|
:param lon:
|
156
162
|
:return: x, y
|
157
163
|
"""
|
158
|
-
x, y = self.editor.to_x_y(lat=lat, lon=lon)
|
159
|
-
|
164
|
+
x, y = self.editor.to_x_y(lat=lat, lon=lon) # upper left corner
|
165
|
+
|
166
|
+
self.setRect(
|
167
|
+
x - self.rect().width() / 2,
|
168
|
+
y - self.rect().height() / 2,
|
169
|
+
self.rect().width(),
|
170
|
+
self.rect().height()
|
171
|
+
)
|
160
172
|
|
161
173
|
for vl in self.voltage_level_graphics:
|
162
174
|
vl.center_on_substation()
|
@@ -224,13 +236,20 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
224
236
|
x = pos.x() - self.rect().width() / 2
|
225
237
|
y = pos.y() - self.rect().height() / 2
|
226
238
|
self.setRect(x, y, self.rect().width(), self.rect().height())
|
227
|
-
self.
|
239
|
+
self.set_callbacks(pos.x(), pos.y())
|
228
240
|
|
229
241
|
for vl_graphics in self.voltage_level_graphics:
|
230
242
|
vl_graphics.center_on_substation()
|
231
243
|
|
232
244
|
self.update_position_at_the_diagram() # always update
|
233
245
|
|
246
|
+
# QGraphicsRectItem.mouseMoveEvent(self, event)
|
247
|
+
# pos = self.mapToParent(event.pos())
|
248
|
+
# x = pos.x() + self.rect().width() / 2
|
249
|
+
# y = pos.y() + self.rect().height() / 2
|
250
|
+
# self.set_callbacks(x, y)
|
251
|
+
# self.update_position_at_the_diagram() # always update
|
252
|
+
|
234
253
|
def mousePressEvent(self, event: QGraphicsSceneMouseEvent):
|
235
254
|
"""
|
236
255
|
Event handler for mouse press events.
|
@@ -369,7 +388,7 @@ class SubstationGraphicItem(QGraphicsRectItem, NodeTemplate):
|
|
369
388
|
|
370
389
|
if ok:
|
371
390
|
x, y = self.move_to(lat=self.api_object.latitude, lon=self.api_object.longitude) # this moves the vl too
|
372
|
-
self.
|
391
|
+
self.set_callbacks(x, y)
|
373
392
|
|
374
393
|
def new_substation_diagram(self):
|
375
394
|
"""
|
@@ -203,6 +203,8 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
203
203
|
icon_path="",
|
204
204
|
function_ptr=self.add_bus)
|
205
205
|
|
206
|
+
menu.exec_(event.screenPos())
|
207
|
+
|
206
208
|
def set_color(self, inner_color: QColor = None, border_color: QColor = None) -> None:
|
207
209
|
"""
|
208
210
|
|
@@ -238,7 +240,7 @@ class VoltageLevelGraphicItem(GenericDiagramWidget, QGraphicsEllipseItem):
|
|
238
240
|
:param width: New pen width.
|
239
241
|
"""
|
240
242
|
pen = self.pen()
|
241
|
-
pen.setWidth(width)
|
243
|
+
pen.setWidth(width) # keep this and do not change to setWidthF
|
242
244
|
self.setPen(pen)
|
243
245
|
|
244
246
|
def add_bus(self):
|
{gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py
RENAMED
@@ -45,9 +45,9 @@ class BlueMarbleTiles(Tiles):
|
|
45
45
|
"""
|
46
46
|
|
47
47
|
Tiles.__init__(self,
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
tile_set_name=name,
|
49
|
+
tile_set_short_name='BM Tiles',
|
50
|
+
tile_set_version='1.0',
|
51
51
|
levels=list(range(10)),
|
52
52
|
tile_width=256,
|
53
53
|
tile_height=256,
|
@@ -66,7 +66,7 @@ class BlueMarbleTiles(Tiles):
|
|
66
66
|
|
67
67
|
Note that we assume the point *is* on the map!
|
68
68
|
|
69
|
-
Code taken from [
|
69
|
+
Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
|
70
70
|
"""
|
71
71
|
|
72
72
|
lat_rad = math.radians(latitude)
|
@@ -76,18 +76,18 @@ class BlueMarbleTiles(Tiles):
|
|
76
76
|
|
77
77
|
return xtile, ytile
|
78
78
|
|
79
|
-
def Tile2Geo(self,
|
79
|
+
def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
|
80
80
|
"""Convert tile fractional coordinates to geo for level in use.
|
81
81
|
|
82
82
|
tile a tupl;e (xtile,ytile) of tile fractional coordinates
|
83
83
|
|
84
84
|
Note that we assume the point *is* on the map!
|
85
85
|
|
86
|
-
Code taken from [
|
86
|
+
Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
|
87
87
|
"""
|
88
88
|
n = 2.0 ** self.level
|
89
|
-
xgeo =
|
90
|
-
yrad = math.atan(math.sinh(math.pi * (1 - 2 *
|
89
|
+
xgeo = x_tile / n * 360.0 - 180.0
|
90
|
+
yrad = math.atan(math.sinh(math.pi * (1 - 2 * y_tile / n)))
|
91
91
|
ygeo = math.degrees(yrad)
|
92
92
|
|
93
93
|
return xgeo, ygeo
|
{gridcal-5.3.4 → gridcal-5.3.5}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py
RENAMED
@@ -23,7 +23,6 @@
|
|
23
23
|
"""
|
24
24
|
A tile source that serves OpenStreetMap tiles from server(s).
|
25
25
|
"""
|
26
|
-
|
27
26
|
import math
|
28
27
|
from typing import Tuple
|
29
28
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tiles import Tiles
|
@@ -46,16 +45,15 @@ class CartoDbTiles(Tiles):
|
|
46
45
|
:param tile_servers:
|
47
46
|
"""
|
48
47
|
|
49
|
-
super().__init__(
|
50
|
-
|
51
|
-
|
48
|
+
super().__init__(tile_set_name=name,
|
49
|
+
tile_set_short_name='CartoDb Dark Matter',
|
50
|
+
tile_set_version='1.0',
|
52
51
|
levels=list(range(22)),
|
53
52
|
tile_width=256,
|
54
53
|
tile_height=256,
|
55
54
|
tiles_dir=tiles_dir,
|
56
55
|
servers=[
|
57
|
-
"
|
58
|
-
# http://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png
|
56
|
+
"https://basemaps.cartocdn.com/dark_all/"
|
59
57
|
] if tile_servers is None else tile_servers,
|
60
58
|
url_path='/{Z}/{X}/{Y}.png',
|
61
59
|
max_server_requests=2,
|
@@ -73,28 +71,46 @@ class CartoDbTiles(Tiles):
|
|
73
71
|
def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[float, float]:
|
74
72
|
"""
|
75
73
|
Convert geo to tile fractional coordinates for level in use.
|
76
|
-
geo tuple of geo coordinates (
|
74
|
+
geo tuple of geo coordinates (longitude, latitude)
|
77
75
|
Note that we assume the point *is* on the map!
|
78
|
-
Code taken from [
|
76
|
+
Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
|
77
|
+
|
78
|
+
Lon./lat. to tile numbers:
|
79
|
+
n = 2 ^ zoom
|
80
|
+
x_tile = n * ((lon_deg + 180) / 360)
|
81
|
+
y_tile = n * (1 - (log(tan(lat_rad) + sec(lat_rad)) / π)) / 2
|
82
|
+
|
83
|
+
:return: This code returns the coordinate of the upper left point of the tile. (x_tile, y_tile)
|
79
84
|
"""
|
80
85
|
lat_rad = math.radians(latitude)
|
81
|
-
n = 2.0
|
82
|
-
|
83
|
-
|
86
|
+
n = math.pow(2.0, self.level)
|
87
|
+
x_tile = (longitude + 180.0) / 360.0 * n
|
88
|
+
y_tile = ((1.0 - math.log(math.tan(lat_rad) + (1.0 / math.cos(lat_rad))) / math.pi) / 2.0) * n
|
84
89
|
|
85
|
-
return
|
90
|
+
return x_tile, y_tile
|
86
91
|
|
87
|
-
def Tile2Geo(self,
|
92
|
+
def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
|
88
93
|
"""
|
89
94
|
Convert tile fractional coordinates to geo for level in use.
|
90
|
-
tile a tuple (
|
95
|
+
tile a tuple (x_tile, y_tile) of tile fractional coordinates
|
91
96
|
Note that we assume the point *is* on the map!
|
92
|
-
Code taken from [
|
97
|
+
Code taken from [https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames]
|
98
|
+
|
99
|
+
n = 2 ^ zoom
|
100
|
+
lon_deg = x_tile / n * 360.0 - 180.0
|
101
|
+
lat_rad = arctan(sinh(π * (1 - 2 * y_tile / n)))
|
102
|
+
lat_deg = lat_rad * 180.0 / π
|
103
|
+
|
104
|
+
This returns the NW-corner of the square.
|
105
|
+
Use the function with x_tile+1 and/or y_tile+1 to get the other corners.
|
106
|
+
With x_tile+0.5 & y_tile+0.5 it will return the center of the tile.
|
107
|
+
|
108
|
+
:return: This code returns the coordinate of the upper left point of the tile. (longitude, latitude)
|
93
109
|
"""
|
94
110
|
|
95
111
|
n = 2.0 ** self.level
|
96
|
-
longitude =
|
97
|
-
|
98
|
-
latitude = math.degrees(
|
112
|
+
longitude = x_tile / n * 360.0 - 180.0
|
113
|
+
y_rad = math.atan(math.sinh(math.pi * (1 - 2 * y_tile / n)))
|
114
|
+
latitude = math.degrees(y_rad)
|
99
115
|
|
100
116
|
return longitude, latitude
|
@@ -72,8 +72,8 @@ class BaseTiles(object):
|
|
72
72
|
self.ppd_y = 0
|
73
73
|
|
74
74
|
# TODO: implement map wrap-around
|
75
|
-
|
76
|
-
|
75
|
+
self.wrap_x = False
|
76
|
+
self.wrap_y = False
|
77
77
|
|
78
78
|
# setup the tile cache
|
79
79
|
self.cache = TilesCache(tiles_dir=tiles_dir, max_lru=max_lru)
|
@@ -207,13 +207,13 @@ class BaseTiles(object):
|
|
207
207
|
Tile coordinates are measured from map top-left.
|
208
208
|
"""
|
209
209
|
|
210
|
-
#
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
210
|
+
# if we are wrapping X or Y, get wrapped tile coords
|
211
|
+
if self.wrap_x:
|
212
|
+
x = (x + self.num_tiles_x * self.tile_size_x) % self.num_tiles_x
|
213
|
+
if self.wrap_y:
|
214
|
+
y = (y + self.num_tiles_y * self.tile_size_y) % self.num_tiles_y
|
215
215
|
|
216
|
-
|
216
|
+
# retrieve the tile
|
217
217
|
try:
|
218
218
|
# get tile from cache
|
219
219
|
return self.cache[(self.level, x, y)]
|
@@ -254,7 +254,6 @@ class BaseTiles(object):
|
|
254
254
|
"""
|
255
255
|
Return True if tile at (level, x, y) is on-disk.
|
256
256
|
"""
|
257
|
-
|
258
257
|
raise Exception('You must override BaseTiles.tile_on_disk(level, x, y))')
|
259
258
|
|
260
259
|
def setCallback(self, callback: Callable[[int, float, float, QPixmap, bool], None]):
|
@@ -262,9 +261,7 @@ class BaseTiles(object):
|
|
262
261
|
Set the "tile available" callback function.
|
263
262
|
Only used with internet tiles. See "tiles_net.py".
|
264
263
|
"""
|
265
|
-
|
266
|
-
pass
|
267
|
-
# raise Exception('You must override BaseTiles.setCallback(callback))')
|
264
|
+
raise Exception('You must override BaseTiles.setCallback(callback))')
|
268
265
|
|
269
266
|
def Geo2Tile(self, longitude: float, latitude: float) -> Tuple[int, int]:
|
270
267
|
"""
|
@@ -277,12 +274,12 @@ class BaseTiles(object):
|
|
277
274
|
|
278
275
|
raise Exception('You must override BaseTiles.Geo2Tile(xgeo, ygeo)')
|
279
276
|
|
280
|
-
def Tile2Geo(self,
|
277
|
+
def Tile2Geo(self, x_tile: float, y_tile: float) -> Tuple[float, float]:
|
281
278
|
"""
|
282
279
|
Convert tile fractional coordinates to geo for level in use.
|
283
280
|
|
284
|
-
|
285
|
-
|
281
|
+
:param x_tile: tile fractional X coordinate
|
282
|
+
:param y_tile: tile fractional Y coordinate
|
286
283
|
|
287
284
|
Note that we assume the point *is* on the map!
|
288
285
|
"""
|
@@ -42,74 +42,6 @@ def log(val: str):
|
|
42
42
|
print(val)
|
43
43
|
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
# class OsmHandler(osm.SimpleHandler):
|
48
|
-
# def __init__(self):
|
49
|
-
# super().__init__()
|
50
|
-
# self.nodes = []
|
51
|
-
# self.ways = []
|
52
|
-
#
|
53
|
-
# def node(self, n):
|
54
|
-
# self.nodes.append((n.location.lat, n.location.lon))
|
55
|
-
#
|
56
|
-
# def way(self, w):
|
57
|
-
# self.ways.append([node.ref for node in w.nodes])
|
58
|
-
#
|
59
|
-
#
|
60
|
-
# def render_pbf_to_pixmap(pbf_file: str, width=800, height=800) -> QPixmap:
|
61
|
-
# """
|
62
|
-
#
|
63
|
-
# :param pbf_file:
|
64
|
-
# :param width:
|
65
|
-
# :param height:
|
66
|
-
# :return:
|
67
|
-
# """
|
68
|
-
# # Parse the .pbf file
|
69
|
-
# handler = OsmHandler()
|
70
|
-
# handler.apply_file(pbf_file)
|
71
|
-
#
|
72
|
-
# # Setup Mercator projection
|
73
|
-
# mercator_proj = Proj("epsg:3857")
|
74
|
-
#
|
75
|
-
# # Create a QPixmap and painter
|
76
|
-
# pixmap = QPixmap(width, height)
|
77
|
-
# pixmap.fill(Qt.GlobalColor.white)
|
78
|
-
# painter = QPainter(pixmap)
|
79
|
-
# painter.setPen(QPen(Qt.GlobalColor.black, 1))
|
80
|
-
#
|
81
|
-
# # Scale coordinates to fit the pixmap
|
82
|
-
# bounds = {
|
83
|
-
# 'min_x': float('inf'), 'max_x': float('-inf'),
|
84
|
-
# 'min_y': float('inf'), 'max_y': float('-inf')
|
85
|
-
# }
|
86
|
-
# transformed_nodes = []
|
87
|
-
#
|
88
|
-
# for lat, lon in handler.nodes:
|
89
|
-
# x, y = mercator_proj(lon, lat)
|
90
|
-
# transformed_nodes.append((x, y))
|
91
|
-
# bounds['min_x'] = min(bounds['min_x'], x)
|
92
|
-
# bounds['max_x'] = max(bounds['max_x'], x)
|
93
|
-
# bounds['min_y'] = min(bounds['min_y'], y)
|
94
|
-
# bounds['max_y'] = max(bounds['max_y'], y)
|
95
|
-
#
|
96
|
-
# x_range = bounds['max_x'] - bounds['min_x']
|
97
|
-
# y_range = bounds['max_y'] - bounds['min_y']
|
98
|
-
# scale_x = width / x_range if x_range else 1
|
99
|
-
# scale_y = height / y_range if y_range else 1
|
100
|
-
# scale = min(scale_x, scale_y)
|
101
|
-
#
|
102
|
-
# # Render nodes as points
|
103
|
-
# for x, y in transformed_nodes:
|
104
|
-
# scaled_x = int((x - bounds['min_x']) * scale)
|
105
|
-
# scaled_y = int((y - bounds['min_y']) * scale)
|
106
|
-
# painter.drawPoint(scaled_x, height - scaled_y) # Flip y-axis for Qt's coordinate system
|
107
|
-
#
|
108
|
-
# # Close the painter
|
109
|
-
# painter.end()
|
110
|
-
# return pixmap
|
111
|
-
|
112
|
-
|
113
45
|
class TileWorker(QThread):
|
114
46
|
"""Thread class that gets request from queue, loads tile, calls callback."""
|
115
47
|
|
@@ -35,34 +35,20 @@ import urllib
|
|
35
35
|
from urllib import request
|
36
36
|
from urllib.error import HTTPError
|
37
37
|
import queue
|
38
|
-
from PySide6.QtGui import QPixmap, QPainter, QPen, QColor
|
39
|
-
|
40
38
|
from typing import List, Union
|
41
39
|
from collections.abc import Callable
|
40
|
+
from warnings import warn
|
41
|
+
from PySide6.QtGui import QPixmap, QColor
|
42
|
+
|
42
43
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.base_tiles import BaseTiles
|
43
44
|
from GridCal.Gui.Diagrams.MapWidget.Tiles.tile_worker import TileWorker
|
44
45
|
|
45
46
|
|
46
|
-
def log(val: str):
|
47
|
-
print(val)
|
48
|
-
|
49
|
-
|
50
47
|
# # set how old disk-cache tiles can be before we re-request them from the
|
51
48
|
# # server. this is the number of days old a tile is before we re-request.
|
52
49
|
# # if 'None', never re-request tiles after first satisfied request.
|
53
50
|
# RefreshTilesAfterDays = 60
|
54
51
|
|
55
|
-
# define the error messages for various failures
|
56
|
-
StatusError = {401: 'Looks like you need to be authorised for this server.',
|
57
|
-
404: 'You might need to check the tile addressing for this server.',
|
58
|
-
429: 'You are asking for too many tiles.', }
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
52
|
|
67
53
|
class Tiles(BaseTiles):
|
68
54
|
"""
|
@@ -70,15 +56,15 @@ class Tiles(BaseTiles):
|
|
70
56
|
"""
|
71
57
|
|
72
58
|
# allowed file types and associated values
|
73
|
-
AllowedFileTypes = {'png': 'PNG', 'jpg': 'JPG'
|
59
|
+
AllowedFileTypes = {'png': 'PNG', 'jpg': 'JPG'}
|
74
60
|
|
75
61
|
# the number of seconds in a day
|
76
62
|
SecondsInADay = 60 * 60 * 24
|
77
63
|
|
78
64
|
def __init__(self,
|
79
|
-
|
80
|
-
|
81
|
-
|
65
|
+
tile_set_name: str,
|
66
|
+
tile_set_short_name: str,
|
67
|
+
tile_set_version: str,
|
82
68
|
levels: List[int],
|
83
69
|
tile_width: int,
|
84
70
|
tile_height: int,
|
@@ -88,10 +74,13 @@ class Tiles(BaseTiles):
|
|
88
74
|
url_path: str,
|
89
75
|
max_server_requests: int,
|
90
76
|
http_proxy,
|
91
|
-
|
77
|
+
re_fetch_days: int = 60,
|
92
78
|
attribution: str = ""):
|
93
79
|
"""
|
94
80
|
Initialise a Tiles instance.
|
81
|
+
:param tile_set_name: Name of the tile set.
|
82
|
+
:param tile_set_short_name: Short name of the tile set.
|
83
|
+
:param tile_set_version: Version of the tile set.
|
95
84
|
:param levels: a list of level numbers that are to be served
|
96
85
|
:param tile_width: width of each tile in pixels
|
97
86
|
:param tile_height: height of each tile in pixels
|
@@ -101,11 +90,11 @@ class Tiles(BaseTiles):
|
|
101
90
|
:param url_path: path on server to each tile
|
102
91
|
:param max_server_requests: maximum number of requests per server
|
103
92
|
:param http_proxy: proxy to use if required
|
104
|
-
:param
|
93
|
+
:param re_fetch_days: fetch new server tile if older than this in days (0 means don't ever update tiles)
|
105
94
|
"""
|
106
|
-
self.
|
107
|
-
self.
|
108
|
-
self.
|
95
|
+
self.tile_set_name = tile_set_name
|
96
|
+
self.tile_set_short_name = tile_set_short_name
|
97
|
+
self.tile_set_version = tile_set_version
|
109
98
|
|
110
99
|
self.attribution_string = attribution
|
111
100
|
|
@@ -124,13 +113,13 @@ class Tiles(BaseTiles):
|
|
124
113
|
self.url_path = url_path
|
125
114
|
self.max_requests = max_server_requests
|
126
115
|
self.http_proxy = http_proxy
|
127
|
-
self.refresh_tiles_after_days =
|
116
|
+
self.refresh_tiles_after_days = re_fetch_days
|
128
117
|
|
129
|
-
# callback must be set by higher-level
|
118
|
+
# callback must be set by higher-level code
|
130
119
|
self.callback: Union[None, Callable[[int, float, float, QPixmap, bool], None]] = None
|
131
120
|
|
132
121
|
# calculate a re-request age, if specified
|
133
|
-
self.
|
122
|
+
self.re_request_age = (time.time() - self.refresh_tiles_after_days * self.SecondsInADay)
|
134
123
|
|
135
124
|
# tiles extent for tile data (left, right, top, bottom)
|
136
125
|
self.extent = (-180.0, 180.0, -85.0511, 85.0511)
|
@@ -148,7 +137,7 @@ class Tiles(BaseTiles):
|
|
148
137
|
# determine the file bitmap type
|
149
138
|
try:
|
150
139
|
self.filetype = self.AllowedFileTypes[tile_extension_lower]
|
151
|
-
except KeyError
|
140
|
+
except KeyError:
|
152
141
|
raise TypeError("Bad tile_extension value, got '%s', "
|
153
142
|
"expected one of %s"
|
154
143
|
% (str(tile_extension),
|
@@ -166,35 +155,33 @@ class Tiles(BaseTiles):
|
|
166
155
|
# prepare the "pending" and "error" images
|
167
156
|
self.pending_tile = QPixmap(256, 256)
|
168
157
|
self.pending_tile.fill(QColor.fromRgb(50, 50, 50, 255))
|
169
|
-
# self.pending_tile.loadFromData(std.getPendingImage())
|
170
158
|
|
171
159
|
self.error_tile = QPixmap(256, 256)
|
172
160
|
self.error_tile.fill(QColor.fromRgb(255, 0, 0, 255))
|
173
|
-
# self.error_tile.loadFromData(std.getErrorImage())
|
174
161
|
|
175
|
-
#
|
176
|
-
|
177
|
-
|
178
|
-
|
162
|
+
# define the error messages for various failures
|
163
|
+
StatusError = {401: 'Looks like you need to be authorised for this server.',
|
164
|
+
404: 'You might need to check the tile addressing for this server.',
|
165
|
+
429: 'You are asking for too many tiles.', }
|
179
166
|
|
180
167
|
# test for firewall - use proxy (if supplied)
|
181
168
|
test_url = self.servers[0] + self.url_path.format(Z=0, X=0, Y=0)
|
182
169
|
try:
|
183
170
|
r = request.Request(test_url, headers={'User-Agent': 'GridCal 5'})
|
184
171
|
response = request.urlopen(r).read()
|
185
|
-
|
172
|
+
|
186
173
|
except HTTPError as e:
|
187
174
|
# if it's fatal, log it and die, otherwise try a proxy
|
188
175
|
status_code = e.code
|
189
|
-
|
176
|
+
warn('Error: test_url=%s, status_code=%s' % (test_url, str(status_code)))
|
190
177
|
error_msg = StatusError.get(status_code, None)
|
191
178
|
if status_code:
|
192
179
|
msg = "\nYou got a " + str(status_code) + " (" + str(error_msg) + ") error from: " + str(test_url)
|
193
180
|
print(msg)
|
194
181
|
# raise RuntimeError(msg) from None
|
195
182
|
|
196
|
-
|
197
|
-
|
183
|
+
warn('%s exception doing simple connection to: %s' % (type(e).__name__, test_url))
|
184
|
+
warn(''.join(traceback.format_exc()))
|
198
185
|
|
199
186
|
if http_proxy:
|
200
187
|
proxy = request.ProxyHandler({'http': http_proxy})
|
@@ -225,7 +212,7 @@ class Tiles(BaseTiles):
|
|
225
212
|
callback=self.tile_is_available,
|
226
213
|
error_tile=self.error_tile,
|
227
214
|
content_type=self.content_type,
|
228
|
-
re_request_age=self.
|
215
|
+
re_request_age=self.re_request_age,
|
229
216
|
error_image=self.error_tile,
|
230
217
|
refresh_tiles_after_days=60)
|
231
218
|
self.workers.append(worker)
|
@@ -282,9 +269,9 @@ class Tiles(BaseTiles):
|
|
282
269
|
tile = self.cache[(self.level, x, y)]
|
283
270
|
if self.tile_on_disk(self.level, x, y):
|
284
271
|
tile_date = self.cache.tile_date((self.level, x, y))
|
285
|
-
if self.
|
272
|
+
if self.re_request_age and (tile_date < self.re_request_age):
|
286
273
|
self.get_server_tile(self.level, x, y)
|
287
|
-
except KeyError
|
274
|
+
except KeyError:
|
288
275
|
# not cached, start process of getting tile from 'net, return 'pending' image
|
289
276
|
self.get_server_tile(self.level, x, y)
|
290
277
|
tile = self.pending_tile
|
@@ -402,4 +389,4 @@ class Tiles(BaseTiles):
|
|
402
389
|
self.refresh_tiles_after_days = num_days
|
403
390
|
|
404
391
|
# recalculate this instance's age threshold in UNIX time
|
405
|
-
self.
|
392
|
+
self.re_request_age = time.time() - self.refresh_tiles_after_days * self.SecondsInADay
|