GridCal 5.0.11__tar.gz → 5.0.13__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.0.11 → GridCal-5.0.13}/GridCal/ExecuteGridCal.py +4 -11
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/AboutDialogue/about_dialogue.py +3 -3
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/AboutDialogue/gui.py +27 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/AnalysisDialogue.py +3 -29
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/object_plot_analysis.py +131 -125
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/dc_line_graphics.py +16 -9
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/hvdc_graphics.py +12 -7
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/line_editor.py +2 -2
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/line_graphics.py +13 -10
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/line_graphics_template.py +49 -46
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/switch_graphics.py +10 -7
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/transformer2w_graphics.py +12 -7
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/transformer3w_graphics.py +29 -35
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/transformer_editor.py +2 -2
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/upfc_graphics.py +11 -6
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/vsc_graphics.py +11 -6
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Branches/winding_graphics.py +10 -6
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Fluid/fluid_node_graphics.py +506 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Fluid/fluid_p2x_graphics.py +190 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/Fluid/fluid_path_graphics.py +13 -10
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Fluid/fluid_pump_graphics.py +191 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Fluid/fluid_turbine_graphics.py +200 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/battery_graphics.py +178 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/controllable_shunt_graphics.py +189 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/current_injection_graphics.py +189 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/external_grid_graphics.py +190 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/generator_graphics.py +574 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/injections_template_graphics.py +180 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/load_graphics.py +170 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/shunt_graphics.py +202 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections/static_generator_graphics.py +189 -0
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Substation/bus_graphics.py +873 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/__init__.py +2 -2
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/bus_branch_editor_widget.py +1284 -912
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/generic_graphics.py +1 -1
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget}/matplotlibwidget.py +1 -1
- GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/terminal_item.py +187 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/BusViewer/bus_viewer_dialogue.py +12 -7
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CascadingSteps/cascading_steps.py +3 -3
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ConsoleWidget.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +3 -3
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GeneralDialogues.py +110 -28
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +2 -2
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GuiFunctions.py +507 -78
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/ConsoleLog.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/ConsoleLogController.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/GridCalMain.py +7 -4
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/MainWindow.py +1415 -1234
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +4 -4
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +556 -512
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Model/objects.py +212 -236
- GridCal-5.0.13/GridCal/Gui/Main/SubClasses/Model/time_events.py +505 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Results/results.py +35 -16
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +1 -25
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +21 -8
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/base_gui.py +38 -17
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/io.py +40 -84
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/simulations.py +250 -284
- GridCal-5.0.13/GridCal/Gui/Main/icons_rc.py +27705 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/object_select_window.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/grid_map_widget.py +9 -9
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/map_widget.py +57 -9
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/node_widget.py +1 -1
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/Rectangle_Connector.py +428 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/dc_line_graphics.py +352 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/hvdc_graphics.py +116 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/line_editor.py +253 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/line_graphics.py +371 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/line_graphics_template.py +920 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/switch_graphics.py +108 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/transformer2w_graphics.py +242 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/transformer_editor.py +306 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/upfc_graphics.py +111 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/vsc_graphics.py +123 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Branches/winding_graphics.py +128 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Connector.py +182 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Fluid/fluid_node_graphics.py +21 -29
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Fluid/fluid_p2x_graphics.py +17 -14
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Fluid/fluid_path_graphics.py +273 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Fluid/fluid_pump_graphics.py +18 -15
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Fluid/fluid_turbine_graphics.py +17 -12
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/battery_graphics.py +17 -12
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/external_grid_graphics.py +19 -16
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/generator_graphics.py +29 -33
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/injections_template_graphics.py +20 -26
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/load_graphics.py +16 -13
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/shunt_graphics.py +15 -13
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Injections/static_generator_graphics.py +21 -18
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/Substation/bus_graphics.py +101 -76
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/generic_graphics.py +108 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/matplotlibwidget.py +252 -0
- GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/node_breaker_editor_widget.py +1337 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/terminal_item.py +11 -8
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/models_dialogue.py +2 -2
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/profile_dialogue.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +7 -7
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +21 -2
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SyncDialogue/sync_dialogue.py +5 -13
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +2 -2
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/gui.py +2 -2
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/icons_rc.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/table_models.py +3 -3
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Visualization/palettes.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Visualization/visualization.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Widgets/matplotlibwidget.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +1 -1
- GridCal-5.0.13/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/messages.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/plot_config.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/themes.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/update_gui_all.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/update_gui_common.py +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/LICENSE.txt +3 -5
- GridCal-5.0.13/GridCal/Session/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal}/Session/export_results_driver.py +1 -1
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal}/Session/file_handler.py +3 -3
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal}/Session/results_model.py +8 -3
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal}/Session/session.py +132 -19
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal}/Session/synchronization_driver.py +4 -4
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/__version__.py +12 -2
- GridCal-5.0.13/GridCal/data/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/templates.py +4 -4
- {GridCal-5.0.11 → GridCal-5.0.13}/PKG-INFO +1 -1
- {GridCal-5.0.11 → GridCal-5.0.13}/setup.py +1 -0
- GridCal-5.0.11/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -514
- GridCal-5.0.11/GridCal/Gui/Main/icons_rc.py +0 -27157
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/BusViewer → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Fluid}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/CascadingSteps → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Injections}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/ContingencyPlanner → GridCal-5.0.13/GridCal/Gui/BusBranchEditorWidget/Substation}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/CoordinatesInput → GridCal-5.0.13/GridCal/Gui/BusViewer}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/BusViewer/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/BusViewer/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/BusViewer/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget/Branches → GridCal-5.0.13/GridCal/Gui/CascadingSteps}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget/Fluid → GridCal-5.0.13/GridCal/Gui/ContingencyPlanner}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget/Injections → GridCal-5.0.13/GridCal/Gui/CoordinatesInput}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/GridEditorWidget/Substation → GridCal-5.0.13/GridCal/Gui/GridGenerator}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/GridGenerator → GridCal-5.0.13/GridCal/Gui/LoadDesigner}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/LoadDesigner/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/LoadDesigner → GridCal-5.0.13/GridCal/Gui/Main/SubClasses/Model}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main/SubClasses/Model → GridCal-5.0.13/GridCal/Gui/Main/SubClasses/Results}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main/SubClasses/Results → GridCal-5.0.13/GridCal/Gui/Main/SubClasses/Scripting}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main/SubClasses/Scripting → GridCal-5.0.13/GridCal/Gui/Main/SubClasses/Settings}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main/SubClasses/Settings → GridCal-5.0.13/GridCal/Gui/Main/SubClasses}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main/SubClasses → GridCal-5.0.13/GridCal/Gui/Main}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Main → GridCal-5.0.13/GridCal/Gui/MapWidget/Layers}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/image_layer.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/layer_types.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/place.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/point_layer.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/polygon_layer.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/polyline_layer.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Layers/text_layer.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/MapWidget/Layers → GridCal-5.0.13/GridCal/Gui/MapWidget/TileProviders}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/blue_marble.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/cartodb.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/gmt_local.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/mapbox.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/mapquest.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/open_street_map.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/MapWidget/TileProviders → GridCal-5.0.13/GridCal/Gui/MapWidget/Tiles}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/MapWidget/Tiles → GridCal-5.0.13/GridCal/Gui/MapWidget}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/logger.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/MapWidget/map_events.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/MapWidget → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Fluid}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/ProfilesInput → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Injections}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/RosetaExplorer → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget/Substation}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Session → GridCal-5.0.13/GridCal/Gui/NodeBreakerEditorWidget}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/SigmaAnalysis → GridCal-5.0.13/GridCal/Gui/ProfilesInput}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/SolarPowerWizard → GridCal-5.0.13/GridCal/Gui/RosetaExplorer}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/SyncDialogue → GridCal-5.0.13/GridCal/Gui/SigmaAnalysis}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/TowerBuilder → GridCal-5.0.13/GridCal/Gui/SolarPowerWizard}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/TreeModelViewer → GridCal-5.0.13/GridCal/Gui/SyncDialogue}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Visualization → GridCal-5.0.13/GridCal/Gui/TowerBuilder}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/test_.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/Widgets → GridCal-5.0.13/GridCal/Gui/TreeModelViewer}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.0.11/GridCal/Gui/WindPowerWizard → GridCal-5.0.13/GridCal/Gui/Visualization}/__init__.py +0 -0
- {GridCal-5.0.11/GridCal/Gui → GridCal-5.0.13/GridCal/Gui/Widgets}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.0.11/GridCal/data → GridCal-5.0.13/GridCal/Gui/WindPowerWizard}/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/__init__.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/data/cables.csv +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/data/wires.csv +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/GridCal/update.py +0 -0
- {GridCal-5.0.11 → GridCal-5.0.13}/setup.cfg +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
# This file is part of GridCal.
|
1
|
+
# This file is part of GridCal.
|
2
2
|
#
|
3
3
|
# GridCal is free software: you can redistribute it and/or modify
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# along with GridCal. If not, see <http://www.gnu.org/licenses/>.
|
15
15
|
import os
|
16
16
|
import sys
|
17
|
+
import ctypes
|
18
|
+
|
17
19
|
PACKAGE_PARENT = '..'
|
18
20
|
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
|
19
21
|
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))
|
@@ -23,24 +25,15 @@ import platform
|
|
23
25
|
|
24
26
|
if platform.system() == 'Windows':
|
25
27
|
# this makes the icon display properly under windows
|
26
|
-
import ctypes
|
27
28
|
myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
|
28
29
|
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
|
29
30
|
|
30
|
-
|
31
31
|
if __name__ == "__main__":
|
32
32
|
print('Loading GridCal...')
|
33
33
|
print(about_msg)
|
34
34
|
|
35
35
|
# Set the application style to the clear theme
|
36
36
|
os.environ["QT_QUICK_CONTROLS_STYLE"] = "Basic"
|
37
|
-
os.environ["QT_QPA_PLATFORMTHEME"] = "qt5ct"
|
38
|
-
|
39
|
-
# app = QApplication(sys.argv)
|
40
|
-
# app.setStyle('Fusion') # ['Breeze', 'Oxygen', 'QtCurve', 'Windows', 'Fusion']
|
41
|
-
#
|
42
|
-
# splash = Splash()
|
43
|
-
# splash.show()
|
37
|
+
# os.environ["QT_QPA_PLATFORMTHEME"] = "qt5ct" # this forces QT-only menus and look and feel
|
44
38
|
|
45
39
|
runGridCal()
|
46
|
-
# sys.exit(app.exec_())
|
@@ -8,13 +8,13 @@ from GridCal.Gui.AboutDialogue.gui import Ui_AboutDialog
|
|
8
8
|
from GridCal.__version__ import __GridCal_VERSION__, contributors_msg, copyright_msg
|
9
9
|
from GridCal.update import check_version, get_upgrade_command
|
10
10
|
from GridCalEngine.__version__ import __GridCalEngine_VERSION__
|
11
|
-
from GridCalEngine.
|
11
|
+
from GridCalEngine.Compilers.circuit_to_newton_pa import (NEWTON_PA_AVAILABLE,
|
12
12
|
NEWTON_PA_RECOMMENDED_VERSION,
|
13
13
|
NEWTON_PA_VERSION)
|
14
|
-
from GridCalEngine.
|
14
|
+
from GridCalEngine.Compilers.circuit_to_bentayga import (BENTAYGA_AVAILABLE,
|
15
15
|
BENTAYGA_RECOMMENDED_VERSION,
|
16
16
|
BENTAYGA_VERSION)
|
17
|
-
from GridCalEngine.
|
17
|
+
from GridCalEngine.Compilers.circuit_to_pgm import (PGM_AVAILABLE,
|
18
18
|
PGM_RECOMMENDED_VERSION,
|
19
19
|
PGM_VERSION)
|
20
20
|
|
@@ -25,7 +25,7 @@ class Ui_AboutDialog(object):
|
|
25
25
|
def setupUi(self, AboutDialog):
|
26
26
|
if not AboutDialog.objectName():
|
27
27
|
AboutDialog.setObjectName(u"AboutDialog")
|
28
|
-
AboutDialog.resize(
|
28
|
+
AboutDialog.resize(672, 365)
|
29
29
|
icon = QIcon()
|
30
30
|
icon.addFile(u":/Icons/icons/GridCal_icon.svg", QSize(), QIcon.Normal, QIcon.Off)
|
31
31
|
AboutDialog.setWindowIcon(icon)
|
@@ -114,6 +114,10 @@ class Ui_AboutDialog(object):
|
|
114
114
|
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
|
115
115
|
self.licenseTextEdit = QTextEdit(self.tab_4)
|
116
116
|
self.licenseTextEdit.setObjectName(u"licenseTextEdit")
|
117
|
+
font = QFont()
|
118
|
+
font.setFamilies([u"Cousine"])
|
119
|
+
self.licenseTextEdit.setFont(font)
|
120
|
+
self.licenseTextEdit.setTextInteractionFlags(Qt.LinksAccessibleByKeyboard|Qt.LinksAccessibleByMouse|Qt.TextBrowserInteraction|Qt.TextSelectableByKeyboard|Qt.TextSelectableByMouse)
|
117
121
|
|
118
122
|
self.verticalLayout_3.addWidget(self.licenseTextEdit)
|
119
123
|
|
@@ -142,6 +146,28 @@ class Ui_AboutDialog(object):
|
|
142
146
|
self.updateButton.setText(QCoreApplication.translate("AboutDialog", u"Update", None))
|
143
147
|
self.updateLabel.setText("")
|
144
148
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QCoreApplication.translate("AboutDialog", u"Libraries", None))
|
149
|
+
self.licenseTextEdit.setHtml(QCoreApplication.translate("AboutDialog", u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
150
|
+
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
|
151
|
+
"p, li { white-space: pre-wrap; }\n"
|
152
|
+
"</style></head><body style=\" font-family:'Cousine'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
|
153
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+==============+==========================================+</p>\n"
|
154
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| Package | License |</p>\n"
|
155
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+==============+==========================================+</p>\n"
|
156
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-inden"
|
157
|
+
"t:0; text-indent:0px;\">| setuptools | MIT |</p>\n"
|
158
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+------------------------------------------+</p>\n"
|
159
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| wheel | MIT |</p>\n"
|
160
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+------------------------------------------+</p>\n"
|
161
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| PySide6 | LGPL |</p>\n"
|
162
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+----------------------------------------"
|
163
|
+
"--+</p>\n"
|
164
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| numpy | BSD |</p>\n"
|
165
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+------------------------------------------+</p>\n"
|
166
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| scipy | BSD |</p>\n"
|
167
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+------------------------------------------+</p>\n"
|
168
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">| networkx | BSD |</p>\n"
|
169
|
+
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; marg"
|
170
|
+
"in-right:0px; -qt-block-indent:0; text-indent:0px;\">+--------------+------------------------------------------+</p></body></html>", None))
|
145
171
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QCoreApplication.translate("AboutDialog", u"License", None))
|
146
172
|
# retranslateUi
|
147
173
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# GridCal
|
2
|
-
# Copyright (C) 2015 -
|
2
|
+
# Copyright (C) 2015 - 2024 Santiago Peñate Vera
|
3
3
|
#
|
4
4
|
# This program is free software; you can redistribute it and/or
|
5
5
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -15,19 +15,17 @@
|
|
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
|
-
import sys
|
19
18
|
from typing import List
|
20
|
-
|
21
19
|
from PySide6 import QtWidgets
|
22
20
|
from GridCal.Gui.Analysis.gui import Ui_MainWindow
|
23
21
|
from GridCal.Gui.Analysis.object_plot_analysis import grid_analysis, GridErrorLog, FixableErrorOutOfRange
|
24
|
-
from GridCalEngine.
|
22
|
+
from GridCalEngine.Devices.multi_circuit import MultiCircuit
|
25
23
|
from GridCal.Gui.GeneralDialogues import LogsDialogue, Logger
|
26
24
|
|
27
25
|
|
28
26
|
class GridAnalysisGUI(QtWidgets.QMainWindow):
|
29
27
|
"""
|
30
|
-
|
28
|
+
GridAnalysisGUI
|
31
29
|
"""
|
32
30
|
def __init__(self, circuit: MultiCircuit = None):
|
33
31
|
"""
|
@@ -55,21 +53,6 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
|
|
55
53
|
|
56
54
|
self.analyze_all()
|
57
55
|
|
58
|
-
def msg(self, text, title="Warning"):
|
59
|
-
"""
|
60
|
-
Message box
|
61
|
-
:param text: Text to display
|
62
|
-
:param title: Name of the window
|
63
|
-
"""
|
64
|
-
msg = QtWidgets.QMessageBox()
|
65
|
-
msg.setIcon(QtWidgets.QMessageBox.Icon.Information)
|
66
|
-
msg.setText(text)
|
67
|
-
# msg.setInformativeText("This is additional information")
|
68
|
-
msg.setWindowTitle(title)
|
69
|
-
# msg.setDetailedText("The details are as follows:")
|
70
|
-
msg.setStandardButtons(QtWidgets.QMessageBox.StandardButton.Ok)
|
71
|
-
retval = msg.exec_()
|
72
|
-
|
73
56
|
def analyze_all(self):
|
74
57
|
"""
|
75
58
|
Analyze the model data
|
@@ -126,12 +109,3 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
|
|
126
109
|
|
127
110
|
if filename != '':
|
128
111
|
self.log.save(filename)
|
129
|
-
|
130
|
-
|
131
|
-
if __name__ == "__main__":
|
132
|
-
from PySide6 import QtWidgets
|
133
|
-
app = QtWidgets.QApplication(sys.argv)
|
134
|
-
window = GridAnalysisGUI(circuit=None)
|
135
|
-
window.resize(1.61 * 700.0, 700.0) # golden ratio
|
136
|
-
window.show()
|
137
|
-
sys.exit(app.exec_())
|