diff --git a/CHANGELOG b/CHANGELOG index 3ac25b7..f7328b3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ - Added a full auto-upgrade solution: - Aupgrade client integrated into NPBackup, that can be called manually via --auto-upgrade or automatically run every n backups - Upgrade server which servers files and their metadata + - Added a gui to create a scheduled task under Windows - Improved setup.py to provide launch scripts for both Linux and Windows platforms - Made windows cloud file filter optional (enabled by default) - Added default configuration settings diff --git a/TODO.md b/TODO.md index 8d9ff08..f914953 100644 --- a/TODO.md +++ b/TODO.md @@ -30,4 +30,4 @@ rest:https://user:***@good.example.tld/user/ - Linux installer script - Windows installer GUI -- Create task from GUI + diff --git a/npbackup/gui/config.py b/npbackup/gui/config.py index 38fa5be..9447da4 100644 --- a/npbackup/gui/config.py +++ b/npbackup/gui/config.py @@ -10,11 +10,13 @@ __license__ = "GPL-3.0-only" __build__ = "2023020101" -import sys +import os from logging import getLogger import PySimpleGUI as sg import npbackup.configuration as configuration from npbackup.core.i18n_helper import _t +from npbackup.windows.task import create_scheduled_task +from npbackup.path_helper import CURRENT_EXECUTABLE logger = getLogger(__intname__) @@ -315,6 +317,18 @@ def config_gui(config_dict: dict, config_file: str): ], ] + scheduled_task_col = [ + [ + sg.Text(_t("config_gui.create_scheduled_task_every")), + sg.Input(key="scheduled_task_interval", size=(4, 1)), + sg.Text(_t("generic.minutes")), + sg.Button(_t("generic.create"), key="create_task") + ], + [ + sg.Text(_t("config_gui.scheduled_task_explanation")) + ] + ] + buttons = [ [ sg.Text(" " * 135), @@ -369,6 +383,15 @@ def config_gui(config_dict: dict, config_file: str): element_justification="C", ) ], + [ + sg.Tab( + _t("generic.scheduled_task"), + scheduled_task_col, + font="helvetica 16", + key="--tab-scheduled_task--", + element_justification="C", + ) + ], ] layout = [ @@ -411,5 +434,14 @@ def config_gui(config_dict: dict, config_file: str): update_gui(window, config_dict, unencrypted=True) else: sg.PopupError(_t("config_gui.wrong_password")) + if event == "create_task": + if os.name == 'nt': + result = create_scheduled_task(CURRENT_EXECUTABLE, values['scheduled_task_interval']) + if result: + sg.Popup(_t("config_gui.scheduled_task_creation_success")) + else: + sg.PopupError(_t("config_gui.scheduled_task_creation_failure")) + else: + sg.PopupError(_t("config_gui.scheduled_task_creation_failure")) window.close() return config_dict diff --git a/npbackup/translations/config_gui.en.yml b/npbackup/translations/config_gui.en.yml index 79fca4f..841c1ec 100644 --- a/npbackup/translations/config_gui.en.yml +++ b/npbackup/translations/config_gui.en.yml @@ -58,4 +58,9 @@ en: auto_upgrade_interval: Auto upgrade interval auto_upgrade_launch: Launch auto upgrade auto_ugprade_will_quit: Warning, launching an upgrade procedure will quit this program without notice. You will have to wait 5 minutes before launching it again for the upgrade to complete - auto_upgrade_failed: Auto upgrade procedure failed, see logs for further details \ No newline at end of file + auto_upgrade_failed: Auto upgrade procedure failed, see logs for further details + + create_scheduled_task_every: Create scheduled task every + scheduled_task_explanation: This is for Windows only. On Linux, please create a crontab entry with `npbackup --backup --config-file /etc/npbackup.conf` + scheduled_task_creation_success: Scheduled task created successfuly + scheduled_task_creation_failure: Scheduled task could not be created. See logs for further info \ No newline at end of file diff --git a/npbackup/translations/config_gui.fr.yml b/npbackup/translations/config_gui.fr.yml index df517c5..e0094a3 100644 --- a/npbackup/translations/config_gui.fr.yml +++ b/npbackup/translations/config_gui.fr.yml @@ -58,4 +58,9 @@ fr: auto_upgrade_interval: Intervalle de mise à niveau auto_upgrade_launch: Lancer une mise à niveau auto_ugprade_will_quit: Attnetion, la procédure de mise à niveau va quitter ce programme sans notification. Vous devrez attendre 5 minutes pour laisser la procédure se terminer avant de relancer le programme - auto_upgrade_failed: Procédure de mise à niveau échouée, veuillez consulter les journaux pour plus de détails \ No newline at end of file + auto_upgrade_failed: Procédure de mise à niveau échouée, veuillez consulter les journaux pour plus de détails + + create_scheduled_task_every: Créer une tâche planifiée toutes les + scheduled_task_explanation: Uniquement sous Windows. Sous Linux, merci de créer une entrée crontab comme `npbackup --backup --config-file /etc/npbackup.conf` + scheduled_task_creation_success: Tâche planifiée crée avec succès + scheduled_task_creation_failure: Impossible de créer la tâche planifiée. Veuillez consulter les journaux pour plus de détails \ No newline at end of file diff --git a/npbackup/translations/generic.en.yml b/npbackup/translations/generic.en.yml index 16649c6..e5e56be 100644 --- a/npbackup/translations/generic.en.yml +++ b/npbackup/translations/generic.en.yml @@ -5,11 +5,14 @@ en: configure: Configure about: About options: Options + create: Create _yes: Yes _no: No seconds: seconds + minutes: minutes + hours: hours group: Group @@ -29,4 +32,9 @@ en: decrypt: Decrypt encrypt: Encrypt - is_uptodate: Program Uptodateu \ No newline at end of file + is_uptodate: Program Uptodate + + succes: Succes + failure: Failure + + scheduled_task: Scheduled task \ No newline at end of file diff --git a/npbackup/translations/generic.fr.yml b/npbackup/translations/generic.fr.yml index d8e592e..111a028 100644 --- a/npbackup/translations/generic.fr.yml +++ b/npbackup/translations/generic.fr.yml @@ -5,11 +5,14 @@ fr: configure: Configurer about: A propos options: Options + create: Créer _yes: Oui _no: Non seconds: secondes + minutes: minutes + hours: heures group: Groupe @@ -29,4 +32,9 @@ fr: decrypt: Déchiffrer encrypt: Chiffrer - is_uptodate: Logiciel à jour \ No newline at end of file + is_uptodate: Logiciel à jour + + succes: Succès + failure: Echec + + scheduled_task: Tâche planifiée \ No newline at end of file