vorta/tests/test_archives.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

199 lines
7.5 KiB
Python
Raw Normal View History

from collections import namedtuple
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 06:27:07 +00:00
import psutil
import pytest
2018-11-06 06:47:04 +00:00
import vorta.borg
import vorta.utils
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 06:27:07 +00:00
import vorta.views.archive_tab
from PyQt6 import QtCore
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 06:27:07 +00:00
from vorta.store.models import ArchiveModel, BackupProfileModel
class MockFileDialog:
def open(self, func):
func()
def selectedFiles(self):
return ['/tmp']
2018-11-06 06:47:04 +00:00
def test_prune_intervals(qapp, qtbot):
2018-11-06 06:47:04 +00:00
prune_intervals = ['hour', 'day', 'week', 'month', 'year']
main = qapp.main_window
tab = main.archiveTab
2018-11-06 06:47:04 +00:00
profile = BackupProfileModel.get(id=1)
for i in prune_intervals:
getattr(tab, f'prune_{i}').setValue(9)
tab.save_prune_setting(None)
profile = profile.refresh()
assert getattr(profile, f'prune_{i}') == 9
def test_repo_list(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
2018-11-06 06:47:04 +00:00
stdout, stderr = borg_json_output('list')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
2018-11-06 06:47:04 +00:00
main.tabWidget.setCurrentIndex(3)
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 06:27:07 +00:00
tab.refresh_archive_list()
qtbot.waitUntil(lambda: not tab.bCheck.isEnabled(), **pytest._wait_defaults)
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 06:27:07 +00:00
assert not tab.bCheck.isEnabled()
qtbot.waitUntil(lambda: 'Refreshing archives done.' in main.progressText.text(), **pytest._wait_defaults)
assert ArchiveModel.select().count() == 6
assert 'Refreshing archives done.' in main.progressText.text()
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 06:27:07 +00:00
assert tab.bCheck.isEnabled()
def test_repo_prune(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
stdout, stderr = borg_json_output('prune')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
qtbot.mouseClick(tab.bPrune, QtCore.Qt.MouseButton.LeftButton)
qtbot.waitUntil(lambda: 'Refreshing archives done.' in main.progressText.text(), **pytest._wait_defaults)
def test_repo_compact(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
vorta.utils.borg_compat.version = '1.2.0'
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
stdout, stderr = borg_json_output('compact')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
qtbot.mouseClick(tab.compactButton, QtCore.Qt.MouseButton.LeftButton)
qtbot.waitUntil(
lambda: 'compaction freed about 56.00 kB repository space' in main.logText.text(), **pytest._wait_defaults
)
vorta.utils.borg_compat.version = '1.1.0'
def test_check(qapp, mocker, borg_json_output, qtbot):
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
stdout, stderr = borg_json_output('check')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
qtbot.mouseClick(tab.bCheck, QtCore.Qt.MouseButton.LeftButton)
success_text = 'INFO: Archive consistency check complete'
qtbot.waitUntil(lambda: success_text in main.logText.text(), **pytest._wait_defaults)
def test_mount(qapp, qtbot, mocker, borg_json_output, monkeypatch, choose_file_dialog):
def psutil_disk_partitions(**kwargs):
DiskPartitions = namedtuple('DiskPartitions', ['device', 'mountpoint'])
return [DiskPartitions('borgfs', '/tmp')]
monkeypatch.setattr(psutil, "disk_partitions", psutil_disk_partitions)
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
tab.archiveTable.selectRow(0)
stdout, stderr = borg_json_output('prune') # TODO: fully mock mount command?
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
monkeypatch.setattr(vorta.views.archive_tab, "choose_file_dialog", choose_file_dialog)
tab.bmountarchive_clicked()
qtbot.waitUntil(lambda: tab.mountErrors.text().startswith('Mounted'), **pytest._wait_defaults)
tab.bmountarchive_clicked()
qtbot.waitUntil(lambda: tab.mountErrors.text().startswith('Un-mounted successfully.'), **pytest._wait_defaults)
tab.bmountrepo_clicked()
qtbot.waitUntil(lambda: tab.mountErrors.text().startswith('Mounted'), **pytest._wait_defaults)
tab.bmountrepo_clicked()
qtbot.waitUntil(lambda: tab.mountErrors.text().startswith('Un-mounted successfully.'), **pytest._wait_defaults)
def test_archive_extract(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2)
tab.archiveTable.selectRow(0)
stdout, stderr = borg_json_output('list_archive')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
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 06:27:07 +00:00
tab.extract_action()
qtbot.waitUntil(lambda: hasattr(tab, '_window'), **pytest._wait_defaults)
# qtbot.waitUntil(lambda: tab._window == qapp.activeWindow(), **pytest._wait_defaults)
model = tab._window.model
assert model.root.children[0].subpath == 'home'
assert 'test-archive, 2000' in tab._window.archiveNameLabel.text()
def test_archive_delete(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2)
tab.archiveTable.selectRow(0)
stdout, stderr = borg_json_output('delete')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
mocker.patch.object(vorta.views.archive_tab.ArchiveTab, 'confirm_dialog', lambda x, y, z: True)
tab.delete_action()
qtbot.waitUntil(lambda: 'Archive deleted.' in main.progressText.text(), **pytest._wait_defaults)
assert ArchiveModel.select().count() == 1
assert tab.archiveTable.rowCount() == 1
def test_archive_rename(qapp, qtbot, mocker, borg_json_output):
main = qapp.main_window
tab = main.archiveTab
main.tabWidget.setCurrentIndex(3)
tab.populate_from_profile()
qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2)
tab.archiveTable.selectRow(0)
new_archive_name = 'idf89d8f9d8fd98'
stdout, stderr = borg_json_output('rename')
popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)
mocker.patch.object(vorta.views.archive_tab.QInputDialog, 'getText', return_value=(new_archive_name, True))
tab.rename_action()
# Successful rename case
qtbot.waitUntil(lambda: tab.mountErrors.text() == 'Archive renamed.', **pytest._wait_defaults)
assert ArchiveModel.select().filter(name=new_archive_name).count() == 1
# Duplicate name case
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 06:27:07 +00:00
tab.archiveTable.selectRow(0)
exp_text = 'An archive with this name already exists.'
mocker.patch.object(vorta.views.archive_tab.QInputDialog, 'getText', return_value=(new_archive_name, True))
tab.rename_action()
qtbot.waitUntil(lambda: tab.mountErrors.text() == exp_text, **pytest._wait_defaults)