Commit Graph

53 Commits

Author SHA1 Message Date
real-yfprojects 24e1dd5c56
Run pre-commit (with newly added ruff) on code base.
Includes all changes by `pre-commit --all-files` including the changes introduced by ruff.
2023-05-01 10:28:11 +02:00
i1sm3ky 7535f92ac8
PyQt6 Upgrade (#1685)
This puts Vorta on PyQt6 and starts a new main branch 0.9.

---------

Co-authored-by: real-yfprojects <real-yfprojects@users.noreply.github.com>
Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
Co-authored-by: yfprojects <62463991+real-yfprojects@users.noreply.github.com>
2023-04-17 11:17:01 +01:00
fixmeee 667f3b3779
Restart timers after hibernation/sleep (#1511)
Schedules get missed, if system has been in hibernation/sleep state as
described in https://github.com/borgbase/vorta/issues/1214
Although, timers should be refreshed every 15min, it seems that all timers get
deranged by sleep state and schedules is still missed in most cases. This seems
to be a general issue with the underlying QTimer implementation.

This fix doesn't distinguish host OS and has only by tested on Linux.
If 'org.freedesktop.login1.Manager' is not available, Vorta simple doesn't
get notified if system awakes again. No no impact on other OS is expected

Co-authored-by: yfprojects <62463991+real-yfprojects@users.noreply.github.com>
2022-12-16 11:10:40 +01:00
Manu b6a24debb7 Apply automatic formatting 2022-08-15 15:23:55 +02:00
yfprojects fd88d7ff21
Fix seconds and microseconds for fixed schedule and fix scheduling for the same day. (#1368)
Previously the seconds of the current time or the last backup time were be copied. Fixes #1363.
This also fixes an issue when the scheduled time was missed and the backup is scheduled
for the current day although the time of day set has already passed.

* src/vorta/scheduler.py (VortaScheduler.set_timer_for_profile)
2022-07-03 19:41:27 +00:00
tal66 422ca7f418
Show date of next backup. By @tal66 (#1319) 2022-05-29 17:44:17 +04:00
yfprojects c797719513
Pause scheduling temporarily on failures. By @real-yfprojects (#1299) 2022-05-22 07:40:46 +04:00
yfprojects 182d3fbe0d
Only schedule backup after a manual run, improve labels. @real-yfprojects (#1302) 2022-05-21 15:06:10 +04:00
yfprojects f76aa5a5f4
Don't schedule if no repo is set. (#1288)
Fixes #1286.
2022-05-08 17:30:48 +04:00
yfprojects fb5a24f66d
Improve UX and HIG-conformity. By @real-yfprojects (#1176)
* Remove fullstops in the labels of the settings.

* src/vorta/store/settings.py (get_misc_setting): Remove fullstops in the `label` fields of each setting.

* Fix *Add Profile*-Dialog.

* src/vorta/assets/UI/profileadd.ui (label_2): Rename to `profileExplainer`.

* src/vorta/assets/UI/profileadd.ui (profileExplainer): Remove unnecessary text and rephrase it in simpler terms.

* src/vorta/assets/UI/profileadd.ui (formLayout): Move into frame for better layout in dialog.

* src/vorta/assets/UI/profileadd.ui (Dialog): Make dialog modal.

* src/vorta/assets/UI/profileadd.ui : Modify spacing a bit and change all widgets to `expanding` mode.

* src/vorta/assets/UI/profileadd.ui (Dialog): Set title to `Add Profile`.

* src/vorta/assets/UI/profileadd.ui : Make `label_3` a buddy of `profileNameField`.

* Add colon after entry label in `Add Profile`-Dialog.

* src/vorta/assets/UI/profileadd.ui (label_3): Add colon at the end of label.

* Fix capitalization in schedule tab.

* src/vorta/assets/UI/scheduletab.ui (pruneCheckBox): Replace `Archive` by `archive`.

* Fix tooltips.

Ensure sentence capitalization.
Rephrase some tooltips that do not mention the action they provide a tip for. (There are still many to go.)
Remove fullstop from tooltips that aren't a sentence.
Add fullstop to tooltips that are a sentence.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/assets/UI/mainwindow.ui
* src/vorta/assets/UI/repoadd.ui
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/sourcetab.ui
* src/vorta/views/export_window.py
* src/vorta/views/import_window.py
* src/vorta/views/source_tab.py

* Replace `n't` by `not` in GUI strings.

* src/vorta/application.py
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/scheduletab.ui
* src/vorta/assets/UI/sshadd.ui
* src/vorta/notifications.py
* src/vorta/views/main_window.py
* src/vorta/views/main_window.py
* src/vorta/views/repo_tab.py

* Shorten unlink button tooltip.

* src/vorta/assets/UI/repotab.ui (repoRemoveToolbutton): Shorten tooltip by only keeping the most valuable information needed to understand the feature.

* Fix entry being embedded in label text.

Sentences should not be constructed from text in several controls.
Sentences that run from one control to another will often not make sense when translated into other languages.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/assets/UI/scheduletab.ui

* Rewrite tooltips to make them HIG conform.

The KDE HIG was used.

* src/vorta/assets/UI/exportwindow.ui
* src/vorta/assets/UI/importwindow.ui
* src/vorta/assets/UI/mainwindow.ui
* src/vorta/assets/UI/repoadd.ui
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/sourcetab.ui
* src/vorta/views/export_window.py

* src/vorta/views/import_window.py (ImportWindow.init_overwrite_profile_checkbox): Make tooltip static as the HIG suggests.

* src/vorta/views/main_window.py

* Replace `...` with unicode ellipses `…` (U+2028) in GUI text.

* src/vorta/borg/break_lock.py
* src/vorta/borg/check.py
* src/vorta/borg/create.py
* src/vorta/borg/delete.py
* src/vorta/borg/diff.py
* src/vorta/borg/extract.py
* src/vorta/borg/info_archive.py
* src/vorta/borg/info_repo.py
* src/vorta/borg/init.py
* src/vorta/borg/list_archive.py
* src/vorta/borg/list_archive.py
* src/vorta/borg/list_repo.py

* Clean prune tab in `archivetab.ui`.

* src/vorta/assets/UI/archivetab.ui

* Prettify `repotab`.

* src/vorta/assets/UI/repotab.ui

* Fix tooltips for pruning in `archivetab.ui`.

* src/vorta/assets/UI/archivetab.ui

* Use affirmative phrase in checkbox for metered networks.

* src/vorta/assets/UI/scheduletab.ui (dontRunOnMeteredNetworksCheckbox): Rename to `meteredNetworksCheckBox`.

* src/vorta/assets/UI/scheduletab.ui (meteredNetworksCheckBox): Change text into affirmative phrase.

* src/vorta/views/schedule_tab.py : Invert values for `meteredNetworksCheckBox`.

* Add label in shell commands pane in `scheduletab` and fix placeholders.

Placeholders shouldn't be a replacement for a label.

* src/vorta/assets/UI/scheduletab.ui

* Group settings widgets in `misctab`.

* src/vorta/assets/UI/misctab.ui (checkboxLayout): Replace with frame `frameSettings` containing a form layout.

* src/vorta/utils.py (search): Added. Searches for a key inside an iterable
	applying a given function before comparison.

* src/vorta/store/models.py (SettingsModel): Add field `group` to assign settings to a group.

* src/vorta/store/migrations.py (run_migrations): Add new schema version `19` and
	implement migration adding the `group` field.

* src/vorta/store/connection.py (SCHEMA_VERSION): Update to `19`.

* src/vorta/store/settings.py (get_misc_settings): Add and assign settings groups.

* src/vorta/store/connection.py (init_db): Update group and type of settings if needed.

* src/vorta/views/misc_tab.py (Imports): Import `search` from `..utils`.

* src/vorta/views/misc_tab.py : Instanciate logger.

* src/vorta/views/misc_tab.py (MiscTab.__init__): Create a checkboxLayout for `frameSettings`.

* src/vorta/views/misc_tab.py (populate): Add settings widgets in groups with labels in spacer in between.

* Fix tests for `misctab`.

* tests/test_misc.py

* Fix margins.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/assets/UI/misctab.ui
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/scheduletab.ui
* src/vorta/assets/UI/sourcetab.ui

* Morph buttons in `sourcetab` into toolbuttons with icons.

Adds gradient buttons along the way. Fixes #933.

* src/vorta/assets/UI/sourcetab.ui : Change layout and buttons.
	Merge buttons with adding capabilities into one toolbutton (with menu).

* src/vorta/assets/UI/sourcetab.ui : Rename `sourceRemove` to `removeButton`.
	Rename `sourceUpdate` to `updateButton`.
	Add `addButton`.

* src/vorta/assets/icons/minus.svg : Add minus sign icon from *fontawesome* v6.0.

* src/vorta/views/source_tab.py (SourceTab.set_icons): Added.

* src/vorta/views/source_tab.py (SourceTab.__init__): Create Menu for the `addButton` with
	actions to add files and folders and to paste.

* src/vorta/application.py (VortaApp.eventFilter): Call `set_icons` of `sourceTab` as well.

* Fix tests for `sourcetab`.

* tests/test_source.py

* Add paste icon to paste action in `sourcetab`.

* src/vorta/assets/icons/paste.svg : Added from fontawesome (paste-solid, v6.0)

* src/vorta/views/source_tab.py (SourceTab.__init__): Save paste action in `pasteAction`.

* src/vorta/views/source_tab.py (SourceTab.set_icons): Set icon for `pasteAction`.

* Add icons to open actions in `sourcetab`.

* src/vorta/assets/icons/file.svg : Added `file-solid` from fontawesome, v6.0

* src/vorta/assets/icons/folder.svg : Added `folder-solid` from fontawesome, v6.0

* src/vorta/views/source_tab.py (SourceTab.__init__): Save files and folders action
	to `addFilesAction` and `addFoldersAction`.

* src/vorta/views/source_tab.py (SourceTab.set_icons): Set icons for `addFilesAction` and `addFolderAction`.

* Fix icon size of `file.svg`.

* src/vorta/assets/icons/file.svg

* Set fill of added svgs to `#000000`.

* src/vorta/assets/icons/file.svg
* src/vorta/assets/icons/folder.svg
* src/vorta/assets/icons/minus.svg
* src/vorta/assets/icons/paste.svg

* Improve UX and consistency within the app for `scheduletab`.

* src/vorta/assets/UI/scheduletab.ui : Arrange schedule pane in a form layout.

* src/vorta/views/schedule_tab.py (ScheduleTab.__init__): Connect enabled state of entries
	to radiobuttons and checkboxes.

* Workaround scheduletab tests being broken in github actions.

For some unknown reason clicking the `scheduleFixedRadio` won't work
when running using github action on ubuntu.

* tests/test_schedule.py

* Fix labels and spacing in `scheduletab`.

* src/vorta/assets/UI/scheduletab.ui

* Make archive operations more accessible and rename actions of `ArchiveTab`.

* src/vorta/views/archive_tab.py (ArchiveTab): Rename `list_action` to `refresh_archive_list`.
	Rename `refresh_archive_action` to `refresh_archive_info`.
	Rename `refresh_archive_result` to `info_result`.
	Rename `list_archive_action` to `extract_action`.
	Rename `list_archive_result` to `extract_list_result`.

* src/vorta/views/main_window.py : Apply renaming.

* src/vorta/assets/UI/archivetab.ui : Create own buttons for the archive actions.
	Remove `archiveActionButton`. And some other layout changes.

* src/vorta/assets/UI/archivetab.ui : Rename `pruneButton` to `bPrune`.
	Rename `checkButton` to `bCheck`.
	Rename `diffButton` to `bDiff`.
	Rename `listButton` to `bList`.

* tests/test_archives.py : Apply renaming.

* src/vorta/views/archive_tab.py : Connect new action buttons.

* src/vorta/views/archive_tab.py : Remove `archiveActionButton`.

* tests/test_archives.py : Fix tests.

* Enable and disable archive actions depending on selection.

* src/vorta/assets/UI/archivetab.ui : Put archive actions into a frame.

* src/vorta/views/archive_tab.py (ArchiveTab): Added `on_selection_change` that
	enables/disables the frame depending on the selection count.

* src/vorta/views/archive_tab.py (ArchiveTab.populate_from_profile): Clear selection.

* src/vorta/views/archive_tab.py (ArchiveTab.__toggle_all_buttons): Add `fArchiveActions`.
	Call `on_selection_change` at the end.

* Fix tests for `archivetab`.

* tests/test_archives.py

* Replace line by spacer in repotab.

* src/vorta/assets/UI/repotab.ui

* Show labels for archive action buttons.

* src/vorta/assets/UI/archivetab.ui

* Add tooltips and ellipses to archivetab.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/views/archive_tab.py

* Fix tooltips.

* src/vorta/assets/UI/sourcetab.ui : Add tooltips.

* src/vorta/views/archive_tab.py (ArchiveTab.on_selection_change): Add reason for disabled state dynamically to archive action buttons.

* Add context menu to source view.

* src/vorta/views/source_tab.py (SourceTab): Implement `sourceitem_contextmenu` and `source_copy`.
	Set context menu policiy of `sourceFilesWidget` to `CustomContextMenu`.

* src/vorta/assets/UI/sourcetab.ui: Change size hints.

* Add context menu to archive view.

* src/vorta/views/archive_tab.py (ArchiveTab): Set context menu policy of `archiveTable` to `CustomContextMenu`.
	Implement `archiveitem_contextmenu`.

* Replace `Type` column in sources view by icon.

* src/vorta/views/source_tab.py (SourceColumn): Remove `Type` column.

* src/vorta/views/source_tab.py (SourceTab.set_icons): Set icon for each item in source view.

* src/vorta/views/source_tab.py (SourceTab.set_path_info): Set icon instead of `Type` column.

* src/vorta/assets/UI/sourcetab.ui : Remove `Type` column.

* Fix initial sort indicator of source view.

* src/vorta/views/source_tab.py

* Fix adding items while sorting enabled.

* src/vorta/views/source_tab.py

* Remove status bar and remove fix size hint for log text label.

* src/vorta/assets/UI/mainwindow.ui

* src/vorta/views/main_window.py (MainWindow.__init__): Set minimum height of `logText` to
	two times the height of a line calculated by `QFontMetrics`.

* Resize main window height to `670`.

* src/vorta/assets/UI/mainwindow.ui

* Replace `QToolbutton` by `QPushbutton`.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/sourcetab.ui
* src/vorta/views/source_tab.py

* Fix flake8

* Improve label of entry for `borg create` extra arguments.

* src/vorta/assets/UI/scheduletab.ui

* Unify label font size in `repotab`.

* src/vorta/assets/UI/repotab.ui

* Morph `QPushButton`s into `QToolButton`s.

Some exceptions were made, especially in the dialog windows.

* src/vorta/assets/UI/archivetab.ui
* src/vorta/assets/UI/mainwindow.ui
* src/vorta/assets/UI/repotab.ui
* src/vorta/assets/UI/sourcetab.ui

* Add copy capabilities to archive view and a copy shortcut to it and to source tab.

* src/vorta/views/source_tab.py (SourceTab): Add QShortcut for copying.

* src/vorta/views/archive_tab.py (ArchiveTab.archiveitem_contextmenu): Add copy action.

* src/vorta/views/archive_tab.py (ArchiveTab): Add QShortcut for copying.

* Move actions in comboBoxes to buttons.

* src/vorta/assets/UI/repotab.ui : Add `bAddSSHKey` and `bAddRepo`.

* src/vorta/views/repo_tab.py : Move code out of `ssh_select_action` and `repo_select_action` into `add_existing_repo`, `new_repo` and `create_ssh_key`.

* src/vorta/views/repo_tab.py

* Make tooltip of `storePassword` checkbox more fluent.

* src/vorta/assets/UI/exportwindow.ui

* Introduce `QDialogButtonBox` to modal dialogs in vorta.

* src/vorta/assets/UI/extractdialog.ui
* src/vorta/views/extract_dialog.py

* src/vorta/assets/UI/repoadd.ui
* src/vorta/views/repo_add_dialog.py

* src/vorta/assets/UI/sshadd.ui
* src/vorta/views/ssh_dialog.py

* Move some options in scheduletab to the side.

This results in two columns of options and fixes vertical scrolling.

* src/vorta/assets/UI/scheduletab.ui

* Changes for macOS layout

* Set `sizeAdjustPolicy` of comboBoxes to `AdustToContents`.

* src/vorta/assets/UI/mainwindow.ui

* src/vorta/assets/UI/repotab.ui

* Fix some icons, translations strings and link

* Lint

Co-authored-by: real-yfprojects <real-yfprojects@users.noreply.github.com>
Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
Co-authored-by: Manu <manu@snapdragon.cc>
2022-03-24 10:27:07 +04:00
yfprojects 0c2fabd28c
Fix setting a timer value too large for C++ int. (#1230)
Fixes #1227. Set timer only if value is smaller than `2**31-1` = 2147483647 else do nothing. Every 15 min vorta will trigger a reschedule.
2022-03-23 10:14:18 +04:00
yfprojects 4bbd091c59
Rewrite scheduler logic. By @real-yfprojects (#1204)
The scheduler now will react to a new fixed time also if 24h haven't passed yet.
All in all the code is supposed to be cleaner and easier understandable.
The logging was slightly modified.
2022-02-20 10:04:12 +04:00
yfprojects de971d6cd3
Update next backup time label. By @real-yfprojects (#1180) 2022-02-09 14:55:26 +04:00
yfprojects da766c5172
Change default returncode for log. By @real-yfprojects (#1193) 2022-02-06 15:21:17 +04:00
Manu 324104bdf4
Properly save folder stats based on profile (#1118)
And bug in removing jobs when removing profile
2021-11-19 17:26:59 +04:00
Manu 4c3e97a76c
Refactor: Split up vorta/models.py (#1112) 2021-11-17 13:14:11 +04:00
Manu 0b2a7c02c3
Remove jobs before deleting profile (#1107) 2021-11-15 15:18:11 +04:00
Manu d8b61a0e33
Remove jobs if scheduler setting is changed. (#1105) 2021-11-15 15:02:27 +04:00
Jay Clark 228e580def
Fix next_job timer logic. By @jayeclark (#1100) 2021-11-12 18:31:41 +04:00
Manu b38e986683
Use native threading module in job_manager. (#1096) 2021-11-12 11:05:31 +04:00
Manu c7a1077fec
Remove APScheduler dependency, Python 3.10 support (#1086) 2021-10-27 08:37:28 +04:00
Bastien 54d8bbe6b1
Implement multiple queues. By @bastiencyr (#1045)
Scheduler now has the ability to run jobs on multiple repositories concurrently and run multiple jobs on one repo (by queuing them).

For each repository, there is one queue. I have represented a queue by a 'site'. Between sites (ie repository), tasks run concurrently. On one site, tasks run one by one. The user also run tasks by adding them to the queue but he can't run multiple backups because start backup button is disabled when a job is running.
2021-10-04 15:31:41 +04:00
Manu aa04d72252
Add QTimer to ensure background jobs are scheduled correctly. (#780)
* Add QTimer to ensure background jobs are scheduled correctly.
* Exclude from App Nap to keep timer enabled.
* Remove notifications for schedule changes, since we do it very often now.
2021-02-11 14:09:22 +08:00
Manu ec0f19ad30
Notify of errors after system tray backup run. Fixes #105 (#483) 2020-06-02 07:58:09 +08:00
TW e15675599e i18n infrastructure and policy (#134)
- Adds support for translating Python strings and .UI files with Qt's `QTranslator` class.
- Integrates the Transifex cloud translation service for managing translations.
- Adds translation policy and guidelines to `CONTRIBUTING.md`
2019-01-20 11:50:10 +08:00
Benjamin Pereto c5494f455c Add Background notifications for Linux (#114)
- Add DBus-based notifications for Linux and BSD desktops (@bpereto)
- Add module name to logging output (@bpereto)
2019-01-13 09:51:35 +08:00
Manuel Riel 5cbdaaa15c
v0.6.4 - Custom pre/post backup commands (#104)
* Add pre/post-backup command setting. Fixes #109
* Bug fixes for #111 and #106
2019-01-06 08:22:11 +08:00
Manuel Riel cc9adae70c
V0.6.3 (#102)
* Support scheduler intervals of > 23 hours. Fixes #101
* Remove background jobs, when removing profile. Avoid deleting last profile. Fixes #98
2018-12-25 13:53:27 +08:00
Manuel Riel 7b881953a1
Extract cmd (#61)
* Add extract feature (#26), fix stdout/err blocking (#21)
* Other small fixes.
2018-11-27 19:33:16 +08:00
Thomas Waldmann 9b24a1161b flake8: fix W503 2018-11-22 21:21:52 +01:00
Manu 9640d1f181 Add logging to background scheduler. Mention log dirs in README. Adds to #35 2018-11-22 11:26:26 +08:00
Manu 8659336f5d Fix flake8 warnings. 2018-11-22 10:18:03 +08:00
Thomas Waldmann 79936a59a5 fix a lot of trivial issues discovered by flake8 2018-11-22 01:43:37 +01:00
Manu 718ccddd9b Fix returncodes and logging for create-command, fix opening external links (fixes #22) 2018-11-21 17:53:11 +08:00
Manu 7bb320f281 Improve display of scheduler times after wakeup from hibernation. Fixes #8 2018-11-20 12:06:09 +08:00
Manu 99d8fa2d1e Update profile names on menu open. Fixes #18 2018-11-20 09:04:11 +08:00
Manu bae80c9d57 Working version of multi-profile support. 2018-11-17 16:51:53 +08:00
Manu 33f7919bb5 Add notifications. Fixes for #2. 2018-11-06 13:13:49 +08:00
Manu 15a007a074 Attempt to fix unresponsive parent process on macOS. 2018-11-05 23:07:42 +08:00
Manu 5f494fb38e Refactor Borg commands into modules. Add pruning and checking to background scheduler. 2018-11-04 23:37:46 +08:00
Manu aff7816201 Implement prune and list commands. Refactor BorgThread package. 2018-11-04 16:23:17 +08:00
Manu 3ee8a35ded Refactor BorgThread into new class to support different commands. 2018-11-03 16:55:38 +08:00
Manu 20252cfca7 Refactor BorgThread into 2 separate classes. 2018-11-02 21:44:49 +08:00
Manu 54cd7c9dc9 Improve the connection between BorgThread and all other Widgets to show an accurate status. Allow copying public SSH key to clipboard. 2018-11-02 18:35:31 +08:00
Manu a9d01a4db4 Fixes attribute error in #1. 2018-11-01 09:10:11 +08:00
Manu f05b020771 Refactoring around single backup function. 2018-11-01 00:09:01 +08:00
Manu 44cbd0e127 Fix scheduler issues. 2018-10-31 20:44:29 +08:00
Manu c896388ae8 Subclass QApplication. 2018-10-31 19:14:12 +08:00
Manu 4f0de320c4 Make BorgThread more independent. Fix issue when calling from apscheduler. 2018-10-30 01:25:28 +08:00
Manu b9d4d57f33 Add EventLog 2018-10-29 21:23:42 +08:00