Readme and screencast update. Add stubs for SSH/repo editing.

This commit is contained in:
Manu 2018-11-02 14:06:25 +08:00
parent bfc8d55370
commit 72a8a1fcd4
10 changed files with 356 additions and 124 deletions

View File

@ -1,21 +1,21 @@
# Vorta - A Boring GUI for BorgBackup
![](https://files.qmax.us/vorta-screencast-2.gif)
![](https://files.qmax.us/vorta-screencast-3.gif)
Vorta is a macOS/Linux GUI for [BorgBackup](https://borgbackup.readthedocs.io). It's currently in alpha status.
Vorta is a open source macOS/Linux GUI for [BorgBackup](https://borgbackup.readthedocs.io). It's currently in alpha status.
## Main features
- Encrypted, deduplicated and compressed backups to remote repositories
- Encrypted, deduplicated and compressed backups.
- Works with any remote SSH account that has `borg` installed. Or try [BorgBase](https://www.borgbase.com) for advanced features like append-only repositories and monitoring.
- Add SSH keys and initialize repos directly from the GUI
- Repo keys are securely stored in macOS Keychain, Secret Service or KWallet
- Mount existing snapshots via FUSE
- Flexible scheduling for automatic background backups.
- Flexible scheduling for automatic background backups. Only allow on certain Wifis.
- View a list of snapshots and action logs
- Exclude options/patterns.
Missing features: (PRs welcome)
Planned features:
- [ ] Repo pruning
- [ ] Repo checking
@ -25,7 +25,7 @@ Missing features: (PRs welcome)
## Installation and Download
### macOS
The app package under [Releases](https://github.com/borgbase/vorta/releases) should include everything. Just download, unzip and run.
Download the pre-built binary from [Releases](https://github.com/borgbase/vorta/releases). Just download, unzip and run.
### Linux
No package yet. First install Borg's own [dependencies](https://borgbackup.readthedocs.io/en/stable/installation.html#dependencies). Then install via

View File

@ -63,21 +63,6 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="repoSelector">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Select Backup Destination</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
@ -105,20 +90,6 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="sshComboBox">
<item>
<property name="text">
<string>Automatically choose SSH Key (default)</string>
</property>
</item>
<item>
<property name="text">
<string>Create New Key</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="text">
@ -126,6 +97,89 @@
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="sshComboBox">
<item>
<property name="text">
<string>Automatically choose SSH Key (default)</string>
</property>
</item>
<item>
<property name="text">
<string>Create New Key</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QToolButton" name="sshKeyToClipboardButton">
<property name="toolTip">
<string>Copy public SSH key to clipboard.</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="text">
<string>Copy</string>
</property>
<property name="icon">
<iconset resource="../icons/collection.qrc">
<normaloff>:/icons/copy.svg</normaloff>:/icons/copy.svg</iconset>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="arrowType">
<enum>Qt::NoArrow</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="repoSelector">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Select Backup Destination</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QToolButton" name="repoRemoveToolbutton">
<property name="toolTip">
<string>Unlink Repository (This doesn't delete any data. You can always add a repo again later.)</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../icons/collection.qrc">
<normaloff>:/icons/unlink.svg</normaloff>:/icons/unlink.svg</iconset>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
@ -234,6 +288,8 @@
</item>
</layout>
</widget>
<resources/>
<resources>
<include location="../icons/collection.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -44,7 +44,7 @@
</attribute>
<column>
<property name="text">
<string>Name</string>
<string>Date</string>
</property>
</column>
<column>
@ -59,7 +59,7 @@
</column>
<column>
<property name="text">
<string>Date</string>
<string>Name</string>
</property>
</column>
</widget>

View File

@ -5,5 +5,8 @@
<file>clock-o.svg</file>
<file>server.svg</file>
<file>window-restore.svg</file>
<file>copy.svg</file>
<file>trash.svg</file>
<file>unlink.svg</file>
</qresource>
</RCC>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213l-299 299h299v-299zm-640-384l-299 299h299v-299zm196 647l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zm956 804v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z"/></svg>

After

Width:  |  Height:  |  Size: 536 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1376v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm-544-992h448l-48-117q-7-9-17-11h-317q-10 2-17 11zm928 32v64q0 14-9 23t-23 9h-96v948q0 83-47 143.5t-113 60.5h-832q-66 0-113-58.5t-47-141.5v-952h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h309l70-167q15-37 54-63t79-26h320q40 0 79 26t54 63l70 167h309q14 0 23 9t9 23z"/></svg>

After

Width:  |  Height:  |  Size: 669 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M503 1271l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23zm169 41v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm-224-224q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm1264 128q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-334-335q-21-21-42-56l239-18 273 274q27 27 68 27.5t68-26.5l147-146q28-28 28-67 0-40-28-68l-274-275 18-239q35 21 56 42l336 336q84 86 84 204zm-617-724l-239 18-273-274q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l274 274-18 240q-35-21-56-42l-336-336q-84-86-84-204 0-120 85-203l147-146q83-83 203-83 121 0 204 85l334 335q21 21 42 56zm633 84q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm-544-544v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm407 151l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23z"/></svg>

After

Width:  |  Height:  |  Size: 1018 B

View File

@ -9,6 +9,72 @@
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x03\xfa\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x31\x37\x39\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x31\x37\x39\x32\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x30\x33\x20\x31\
\x32\x37\x31\x6c\x2d\x32\x35\x36\x20\x32\x35\x36\x71\x2d\x31\x31\
\x20\x39\x2d\x32\x33\x20\x39\x74\x2d\x32\x33\x2d\x39\x71\x2d\x39\
\x2d\x31\x30\x2d\x39\x2d\x32\x33\x74\x39\x2d\x32\x33\x6c\x32\x35\
\x36\x2d\x32\x35\x36\x71\x31\x30\x2d\x39\x20\x32\x33\x2d\x39\x74\
\x32\x33\x20\x39\x71\x39\x20\x31\x30\x20\x39\x20\x32\x33\x74\x2d\
\x39\x20\x32\x33\x7a\x6d\x31\x36\x39\x20\x34\x31\x76\x33\x32\x30\
\x71\x30\x20\x31\x34\x2d\x39\x20\x32\x33\x74\x2d\x32\x33\x20\x39\
\x2d\x32\x33\x2d\x39\x2d\x39\x2d\x32\x33\x76\x2d\x33\x32\x30\x71\
\x30\x2d\x31\x34\x20\x39\x2d\x32\x33\x74\x32\x33\x2d\x39\x20\x32\
\x33\x20\x39\x20\x39\x20\x32\x33\x7a\x6d\x2d\x32\x32\x34\x2d\x32\
\x32\x34\x71\x30\x20\x31\x34\x2d\x39\x20\x32\x33\x74\x2d\x32\x33\
\x20\x39\x68\x2d\x33\x32\x30\x71\x2d\x31\x34\x20\x30\x2d\x32\x33\
\x2d\x39\x74\x2d\x39\x2d\x32\x33\x20\x39\x2d\x32\x33\x20\x32\x33\
\x2d\x39\x68\x33\x32\x30\x71\x31\x34\x20\x30\x20\x32\x33\x20\x39\
\x74\x39\x20\x32\x33\x7a\x6d\x31\x32\x36\x34\x20\x31\x32\x38\x71\
\x30\x20\x31\x32\x30\x2d\x38\x35\x20\x32\x30\x33\x6c\x2d\x31\x34\
\x37\x20\x31\x34\x36\x71\x2d\x38\x33\x20\x38\x33\x2d\x32\x30\x33\
\x20\x38\x33\x2d\x31\x32\x31\x20\x30\x2d\x32\x30\x34\x2d\x38\x35\
\x6c\x2d\x33\x33\x34\x2d\x33\x33\x35\x71\x2d\x32\x31\x2d\x32\x31\
\x2d\x34\x32\x2d\x35\x36\x6c\x32\x33\x39\x2d\x31\x38\x20\x32\x37\
\x33\x20\x32\x37\x34\x71\x32\x37\x20\x32\x37\x20\x36\x38\x20\x32\
\x37\x2e\x35\x74\x36\x38\x2d\x32\x36\x2e\x35\x6c\x31\x34\x37\x2d\
\x31\x34\x36\x71\x32\x38\x2d\x32\x38\x20\x32\x38\x2d\x36\x37\x20\
\x30\x2d\x34\x30\x2d\x32\x38\x2d\x36\x38\x6c\x2d\x32\x37\x34\x2d\
\x32\x37\x35\x20\x31\x38\x2d\x32\x33\x39\x71\x33\x35\x20\x32\x31\
\x20\x35\x36\x20\x34\x32\x6c\x33\x33\x36\x20\x33\x33\x36\x71\x38\
\x34\x20\x38\x36\x20\x38\x34\x20\x32\x30\x34\x7a\x6d\x2d\x36\x31\
\x37\x2d\x37\x32\x34\x6c\x2d\x32\x33\x39\x20\x31\x38\x2d\x32\x37\
\x33\x2d\x32\x37\x34\x71\x2d\x32\x38\x2d\x32\x38\x2d\x36\x38\x2d\
\x32\x38\x2d\x33\x39\x20\x30\x2d\x36\x38\x20\x32\x37\x6c\x2d\x31\
\x34\x37\x20\x31\x34\x36\x71\x2d\x32\x38\x20\x32\x38\x2d\x32\x38\
\x20\x36\x37\x20\x30\x20\x34\x30\x20\x32\x38\x20\x36\x38\x6c\x32\
\x37\x34\x20\x32\x37\x34\x2d\x31\x38\x20\x32\x34\x30\x71\x2d\x33\
\x35\x2d\x32\x31\x2d\x35\x36\x2d\x34\x32\x6c\x2d\x33\x33\x36\x2d\
\x33\x33\x36\x71\x2d\x38\x34\x2d\x38\x36\x2d\x38\x34\x2d\x32\x30\
\x34\x20\x30\x2d\x31\x32\x30\x20\x38\x35\x2d\x32\x30\x33\x6c\x31\
\x34\x37\x2d\x31\x34\x36\x71\x38\x33\x2d\x38\x33\x20\x32\x30\x33\
\x2d\x38\x33\x20\x31\x32\x31\x20\x30\x20\x32\x30\x34\x20\x38\x35\
\x6c\x33\x33\x34\x20\x33\x33\x35\x71\x32\x31\x20\x32\x31\x20\x34\
\x32\x20\x35\x36\x7a\x6d\x36\x33\x33\x20\x38\x34\x71\x30\x20\x31\
\x34\x2d\x39\x20\x32\x33\x74\x2d\x32\x33\x20\x39\x68\x2d\x33\x32\
\x30\x71\x2d\x31\x34\x20\x30\x2d\x32\x33\x2d\x39\x74\x2d\x39\x2d\
\x32\x33\x20\x39\x2d\x32\x33\x20\x32\x33\x2d\x39\x68\x33\x32\x30\
\x71\x31\x34\x20\x30\x20\x32\x33\x20\x39\x74\x39\x20\x32\x33\x7a\
\x6d\x2d\x35\x34\x34\x2d\x35\x34\x34\x76\x33\x32\x30\x71\x30\x20\
\x31\x34\x2d\x39\x20\x32\x33\x74\x2d\x32\x33\x20\x39\x2d\x32\x33\
\x2d\x39\x2d\x39\x2d\x32\x33\x76\x2d\x33\x32\x30\x71\x30\x2d\x31\
\x34\x20\x39\x2d\x32\x33\x74\x32\x33\x2d\x39\x20\x32\x33\x20\x39\
\x20\x39\x20\x32\x33\x7a\x6d\x34\x30\x37\x20\x31\x35\x31\x6c\x2d\
\x32\x35\x36\x20\x32\x35\x36\x71\x2d\x31\x31\x20\x39\x2d\x32\x33\
\x20\x39\x74\x2d\x32\x33\x2d\x39\x71\x2d\x39\x2d\x31\x30\x2d\x39\
\x2d\x32\x33\x74\x39\x2d\x32\x33\x6c\x32\x35\x36\x2d\x32\x35\x36\
\x71\x31\x30\x2d\x39\x20\x32\x33\x2d\x39\x74\x32\x33\x20\x39\x71\
\x39\x20\x31\x30\x20\x39\x20\x32\x33\x74\x2d\x39\x20\x32\x33\x7a\
\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x02\x12\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@ -45,33 +111,6 @@ qt_resource_data = b"\
\x39\x68\x31\x36\x36\x34\x71\x32\x36\x20\x30\x20\x34\x35\x20\x31\
\x39\x74\x31\x39\x20\x34\x35\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\
\x3e\
\x00\x00\x01\x89\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x32\x30\x34\x38\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x32\x30\x34\x38\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x20\x31\
\x35\x33\x36\x68\x37\x36\x38\x76\x2d\x35\x31\x32\x68\x2d\x37\x36\
\x38\x76\x35\x31\x32\x7a\x6d\x31\x30\x32\x34\x2d\x35\x31\x32\x68\
\x35\x31\x32\x76\x2d\x37\x36\x38\x68\x2d\x37\x36\x38\x76\x32\x35\
\x36\x68\x39\x36\x71\x36\x36\x20\x30\x20\x31\x31\x33\x20\x34\x37\
\x74\x34\x37\x20\x31\x31\x33\x76\x33\x35\x32\x7a\x6d\x37\x36\x38\
\x2d\x38\x36\x34\x76\x39\x36\x30\x71\x30\x20\x36\x36\x2d\x34\x37\
\x20\x31\x31\x33\x74\x2d\x31\x31\x33\x20\x34\x37\x68\x2d\x36\x30\
\x38\x76\x33\x35\x32\x71\x30\x20\x36\x36\x2d\x34\x37\x20\x31\x31\
\x33\x74\x2d\x31\x31\x33\x20\x34\x37\x68\x2d\x39\x36\x30\x71\x2d\
\x36\x36\x20\x30\x2d\x31\x31\x33\x2d\x34\x37\x74\x2d\x34\x37\x2d\
\x31\x31\x33\x76\x2d\x39\x36\x30\x71\x30\x2d\x36\x36\x20\x34\x37\
\x2d\x31\x31\x33\x74\x31\x31\x33\x2d\x34\x37\x68\x36\x30\x38\x76\
\x2d\x33\x35\x32\x71\x30\x2d\x36\x36\x20\x34\x37\x2d\x31\x31\x33\
\x74\x31\x31\x33\x2d\x34\x37\x68\x39\x36\x30\x71\x36\x36\x20\x30\
\x20\x31\x31\x33\x20\x34\x37\x74\x34\x37\x20\x31\x31\x33\x7a\x22\
\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x01\xfb\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@ -106,40 +145,6 @@ qt_resource_data = b"\
\x20\x33\x38\x35\x2e\x35\x20\x31\x30\x33\x20\x32\x37\x39\x2e\x35\
\x20\x32\x37\x39\x2e\x35\x20\x31\x30\x33\x20\x33\x38\x35\x2e\x35\
\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x01\xfb\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x31\x37\x39\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x31\x37\x39\x32\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x32\x38\x20\x31\
\x34\x30\x38\x68\x31\x30\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\
\x30\x32\x34\x76\x31\x32\x38\x7a\x6d\x30\x2d\x35\x31\x32\x68\x31\
\x30\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\x30\x32\x34\x76\x31\
\x32\x38\x7a\x6d\x31\x35\x36\x38\x20\x34\x34\x38\x71\x30\x2d\x34\
\x30\x2d\x32\x38\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\
\x38\x20\x32\x38\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\
\x20\x36\x38\x20\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\
\x36\x38\x7a\x6d\x2d\x31\x35\x36\x38\x2d\x39\x36\x30\x68\x31\x30\
\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\x30\x32\x34\x76\x31\x32\
\x38\x7a\x6d\x31\x35\x36\x38\x20\x34\x34\x38\x71\x30\x2d\x34\x30\
\x2d\x32\x38\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\x38\
\x20\x32\x38\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\x20\
\x36\x38\x20\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\x36\
\x38\x7a\x6d\x30\x2d\x35\x31\x32\x71\x30\x2d\x34\x30\x2d\x32\x38\
\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\x38\x20\x32\x38\
\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\x20\x36\x38\x20\
\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\x36\x38\x7a\x6d\
\x39\x36\x20\x38\x33\x32\x76\x33\x38\x34\x68\x2d\x31\x37\x39\x32\
\x76\x2d\x33\x38\x34\x68\x31\x37\x39\x32\x7a\x6d\x30\x2d\x35\x31\
\x32\x76\x33\x38\x34\x68\x2d\x31\x37\x39\x32\x76\x2d\x33\x38\x34\
\x68\x31\x37\x39\x32\x7a\x6d\x30\x2d\x35\x31\x32\x76\x33\x38\x34\
\x68\x2d\x31\x37\x39\x32\x76\x2d\x33\x38\x34\x68\x31\x37\x39\x32\
\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x03\x19\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@ -192,6 +197,147 @@ qt_resource_data = b"\
\x31\x30\x20\x31\x30\x20\x32\x33\x20\x30\x20\x31\x38\x2d\x37\x35\
\x2e\x35\x20\x39\x33\x74\x2d\x39\x32\x2e\x35\x20\x37\x35\x7a\x22\
\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x02\x9d\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x31\x37\x39\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x31\x37\x39\x32\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x37\x30\x34\x20\x31\
\x33\x37\x36\x76\x2d\x37\x30\x34\x71\x30\x2d\x31\x34\x2d\x39\x2d\
\x32\x33\x74\x2d\x32\x33\x2d\x39\x68\x2d\x36\x34\x71\x2d\x31\x34\
\x20\x30\x2d\x32\x33\x20\x39\x74\x2d\x39\x20\x32\x33\x76\x37\x30\
\x34\x71\x30\x20\x31\x34\x20\x39\x20\x32\x33\x74\x32\x33\x20\x39\
\x68\x36\x34\x71\x31\x34\x20\x30\x20\x32\x33\x2d\x39\x74\x39\x2d\
\x32\x33\x7a\x6d\x32\x35\x36\x20\x30\x76\x2d\x37\x30\x34\x71\x30\
\x2d\x31\x34\x2d\x39\x2d\x32\x33\x74\x2d\x32\x33\x2d\x39\x68\x2d\
\x36\x34\x71\x2d\x31\x34\x20\x30\x2d\x32\x33\x20\x39\x74\x2d\x39\
\x20\x32\x33\x76\x37\x30\x34\x71\x30\x20\x31\x34\x20\x39\x20\x32\
\x33\x74\x32\x33\x20\x39\x68\x36\x34\x71\x31\x34\x20\x30\x20\x32\
\x33\x2d\x39\x74\x39\x2d\x32\x33\x7a\x6d\x32\x35\x36\x20\x30\x76\
\x2d\x37\x30\x34\x71\x30\x2d\x31\x34\x2d\x39\x2d\x32\x33\x74\x2d\
\x32\x33\x2d\x39\x68\x2d\x36\x34\x71\x2d\x31\x34\x20\x30\x2d\x32\
\x33\x20\x39\x74\x2d\x39\x20\x32\x33\x76\x37\x30\x34\x71\x30\x20\
\x31\x34\x20\x39\x20\x32\x33\x74\x32\x33\x20\x39\x68\x36\x34\x71\
\x31\x34\x20\x30\x20\x32\x33\x2d\x39\x74\x39\x2d\x32\x33\x7a\x6d\
\x2d\x35\x34\x34\x2d\x39\x39\x32\x68\x34\x34\x38\x6c\x2d\x34\x38\
\x2d\x31\x31\x37\x71\x2d\x37\x2d\x39\x2d\x31\x37\x2d\x31\x31\x68\
\x2d\x33\x31\x37\x71\x2d\x31\x30\x20\x32\x2d\x31\x37\x20\x31\x31\
\x7a\x6d\x39\x32\x38\x20\x33\x32\x76\x36\x34\x71\x30\x20\x31\x34\
\x2d\x39\x20\x32\x33\x74\x2d\x32\x33\x20\x39\x68\x2d\x39\x36\x76\
\x39\x34\x38\x71\x30\x20\x38\x33\x2d\x34\x37\x20\x31\x34\x33\x2e\
\x35\x74\x2d\x31\x31\x33\x20\x36\x30\x2e\x35\x68\x2d\x38\x33\x32\
\x71\x2d\x36\x36\x20\x30\x2d\x31\x31\x33\x2d\x35\x38\x2e\x35\x74\
\x2d\x34\x37\x2d\x31\x34\x31\x2e\x35\x76\x2d\x39\x35\x32\x68\x2d\
\x39\x36\x71\x2d\x31\x34\x20\x30\x2d\x32\x33\x2d\x39\x74\x2d\x39\
\x2d\x32\x33\x76\x2d\x36\x34\x71\x30\x2d\x31\x34\x20\x39\x2d\x32\
\x33\x74\x32\x33\x2d\x39\x68\x33\x30\x39\x6c\x37\x30\x2d\x31\x36\
\x37\x71\x31\x35\x2d\x33\x37\x20\x35\x34\x2d\x36\x33\x74\x37\x39\
\x2d\x32\x36\x68\x33\x32\x30\x71\x34\x30\x20\x30\x20\x37\x39\x20\
\x32\x36\x74\x35\x34\x20\x36\x33\x6c\x37\x30\x20\x31\x36\x37\x68\
\x33\x30\x39\x71\x31\x34\x20\x30\x20\x32\x33\x20\x39\x74\x39\x20\
\x32\x33\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x01\xfb\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x31\x37\x39\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x31\x37\x39\x32\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x32\x38\x20\x31\
\x34\x30\x38\x68\x31\x30\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\
\x30\x32\x34\x76\x31\x32\x38\x7a\x6d\x30\x2d\x35\x31\x32\x68\x31\
\x30\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\x30\x32\x34\x76\x31\
\x32\x38\x7a\x6d\x31\x35\x36\x38\x20\x34\x34\x38\x71\x30\x2d\x34\
\x30\x2d\x32\x38\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\
\x38\x20\x32\x38\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\
\x20\x36\x38\x20\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\
\x36\x38\x7a\x6d\x2d\x31\x35\x36\x38\x2d\x39\x36\x30\x68\x31\x30\
\x32\x34\x76\x2d\x31\x32\x38\x68\x2d\x31\x30\x32\x34\x76\x31\x32\
\x38\x7a\x6d\x31\x35\x36\x38\x20\x34\x34\x38\x71\x30\x2d\x34\x30\
\x2d\x32\x38\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\x38\
\x20\x32\x38\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\x20\
\x36\x38\x20\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\x36\
\x38\x7a\x6d\x30\x2d\x35\x31\x32\x71\x30\x2d\x34\x30\x2d\x32\x38\
\x2d\x36\x38\x74\x2d\x36\x38\x2d\x32\x38\x2d\x36\x38\x20\x32\x38\
\x2d\x32\x38\x20\x36\x38\x20\x32\x38\x20\x36\x38\x20\x36\x38\x20\
\x32\x38\x20\x36\x38\x2d\x32\x38\x20\x32\x38\x2d\x36\x38\x7a\x6d\
\x39\x36\x20\x38\x33\x32\x76\x33\x38\x34\x68\x2d\x31\x37\x39\x32\
\x76\x2d\x33\x38\x34\x68\x31\x37\x39\x32\x7a\x6d\x30\x2d\x35\x31\
\x32\x76\x33\x38\x34\x68\x2d\x31\x37\x39\x32\x76\x2d\x33\x38\x34\
\x68\x31\x37\x39\x32\x7a\x6d\x30\x2d\x35\x31\x32\x76\x33\x38\x34\
\x68\x2d\x31\x37\x39\x32\x76\x2d\x33\x38\x34\x68\x31\x37\x39\x32\
\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x02\x18\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x31\x37\x39\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x31\x37\x39\x32\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x39\x36\x20\
\x33\x38\x34\x71\x34\x30\x20\x30\x20\x36\x38\x20\x32\x38\x74\x32\
\x38\x20\x36\x38\x76\x31\x32\x31\x36\x71\x30\x20\x34\x30\x2d\x32\
\x38\x20\x36\x38\x74\x2d\x36\x38\x20\x32\x38\x68\x2d\x39\x36\x30\
\x71\x2d\x34\x30\x20\x30\x2d\x36\x38\x2d\x32\x38\x74\x2d\x32\x38\
\x2d\x36\x38\x76\x2d\x32\x38\x38\x68\x2d\x35\x34\x34\x71\x2d\x34\
\x30\x20\x30\x2d\x36\x38\x2d\x32\x38\x74\x2d\x32\x38\x2d\x36\x38\
\x76\x2d\x36\x37\x32\x71\x30\x2d\x34\x30\x20\x32\x30\x2d\x38\x38\
\x74\x34\x38\x2d\x37\x36\x6c\x34\x30\x38\x2d\x34\x30\x38\x71\x32\
\x38\x2d\x32\x38\x20\x37\x36\x2d\x34\x38\x74\x38\x38\x2d\x32\x30\
\x68\x34\x31\x36\x71\x34\x30\x20\x30\x20\x36\x38\x20\x32\x38\x74\
\x32\x38\x20\x36\x38\x76\x33\x32\x38\x71\x36\x38\x2d\x34\x30\x20\
\x31\x32\x38\x2d\x34\x30\x68\x34\x31\x36\x7a\x6d\x2d\x35\x34\x34\
\x20\x32\x31\x33\x6c\x2d\x32\x39\x39\x20\x32\x39\x39\x68\x32\x39\
\x39\x76\x2d\x32\x39\x39\x7a\x6d\x2d\x36\x34\x30\x2d\x33\x38\x34\
\x6c\x2d\x32\x39\x39\x20\x32\x39\x39\x68\x32\x39\x39\x76\x2d\x32\
\x39\x39\x7a\x6d\x31\x39\x36\x20\x36\x34\x37\x6c\x33\x31\x36\x2d\
\x33\x31\x36\x76\x2d\x34\x31\x36\x68\x2d\x33\x38\x34\x76\x34\x31\
\x36\x71\x30\x20\x34\x30\x2d\x32\x38\x20\x36\x38\x74\x2d\x36\x38\
\x20\x32\x38\x68\x2d\x34\x31\x36\x76\x36\x34\x30\x68\x35\x31\x32\
\x76\x2d\x32\x35\x36\x71\x30\x2d\x34\x30\x20\x32\x30\x2d\x38\x38\
\x74\x34\x38\x2d\x37\x36\x7a\x6d\x39\x35\x36\x20\x38\x30\x34\x76\
\x2d\x31\x31\x35\x32\x68\x2d\x33\x38\x34\x76\x34\x31\x36\x71\x30\
\x20\x34\x30\x2d\x32\x38\x20\x36\x38\x74\x2d\x36\x38\x20\x32\x38\
\x68\x2d\x34\x31\x36\x76\x36\x34\x30\x68\x38\x39\x36\x7a\x22\x2f\
\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x01\x89\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
\x2d\x38\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\
\x3d\x22\x32\x30\x34\x38\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\
\x31\x37\x39\x32\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\
\x20\x30\x20\x32\x30\x34\x38\x20\x31\x37\x39\x32\x22\x20\x78\x6d\
\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\
\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x20\x31\
\x35\x33\x36\x68\x37\x36\x38\x76\x2d\x35\x31\x32\x68\x2d\x37\x36\
\x38\x76\x35\x31\x32\x7a\x6d\x31\x30\x32\x34\x2d\x35\x31\x32\x68\
\x35\x31\x32\x76\x2d\x37\x36\x38\x68\x2d\x37\x36\x38\x76\x32\x35\
\x36\x68\x39\x36\x71\x36\x36\x20\x30\x20\x31\x31\x33\x20\x34\x37\
\x74\x34\x37\x20\x31\x31\x33\x76\x33\x35\x32\x7a\x6d\x37\x36\x38\
\x2d\x38\x36\x34\x76\x39\x36\x30\x71\x30\x20\x36\x36\x2d\x34\x37\
\x20\x31\x31\x33\x74\x2d\x31\x31\x33\x20\x34\x37\x68\x2d\x36\x30\
\x38\x76\x33\x35\x32\x71\x30\x20\x36\x36\x2d\x34\x37\x20\x31\x31\
\x33\x74\x2d\x31\x31\x33\x20\x34\x37\x68\x2d\x39\x36\x30\x71\x2d\
\x36\x36\x20\x30\x2d\x31\x31\x33\x2d\x34\x37\x74\x2d\x34\x37\x2d\
\x31\x31\x33\x76\x2d\x39\x36\x30\x71\x30\x2d\x36\x36\x20\x34\x37\
\x2d\x31\x31\x33\x74\x31\x31\x33\x2d\x34\x37\x68\x36\x30\x38\x76\
\x2d\x33\x35\x32\x71\x30\x2d\x36\x36\x20\x34\x37\x2d\x31\x31\x33\
\x74\x31\x31\x33\x2d\x34\x37\x68\x39\x36\x30\x71\x36\x36\x20\x30\
\x20\x31\x31\x33\x20\x34\x37\x74\x34\x37\x20\x31\x31\x33\x7a\x22\
\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
"
qt_resource_name = b"\
@ -199,53 +345,74 @@ qt_resource_name = b"\
\x00\x6f\xa6\x53\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x73\
\x00\x0a\
\x00\x45\xd0\xa7\
\x00\x75\
\x00\x6e\x00\x6c\x00\x69\x00\x6e\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x09\
\x0a\x26\xaf\xc7\
\x00\x74\
\x00\x61\x00\x73\x00\x6b\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x12\
\x05\x98\xe2\x07\
\x00\x77\
\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x74\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x73\x00\x76\
\x00\x67\
\x00\x0b\
\x0f\x16\x31\xe7\
\x00\x63\
\x00\x6c\x00\x6f\x00\x63\x00\x6b\x00\x2d\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x08\
\x0f\xcc\x55\x67\
\x00\x77\
\x00\x69\x00\x66\x00\x69\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x09\
\x08\x9b\xad\xc7\
\x00\x74\
\x00\x72\x00\x61\x00\x73\x00\x68\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0a\
\x0c\xca\x63\xe7\
\x00\x73\
\x00\x65\x00\x72\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x08\
\x0f\xcc\x55\x67\
\x06\x7c\x57\x87\
\x00\x63\
\x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x12\
\x05\x98\xe2\x07\
\x00\x77\
\x00\x69\x00\x66\x00\x69\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x74\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x73\x00\x76\
\x00\x67\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x02\
\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x02\x16\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x08\x00\x00\x00\x02\
\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x05\xa2\
\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa3\
\x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\x07\xa1\
\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x11\xec\
\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xd0\
\x00\x00\x00\x74\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x30\
\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x03\xfe\
\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xd1\
\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x06\x14\
\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x08\x13\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x08\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x02\x16\
\x00\x00\x01\x66\xbf\xa1\xb1\x2c\
\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x66\xd2\xec\x19\xd2\
\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x11\xec\
\x00\x00\x01\x66\xbf\xa1\xb1\x2c\
\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xd0\
\x00\x00\x01\x66\xd2\xd9\x4e\x21\
\x00\x00\x00\x74\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x30\
\x00\x00\x01\x66\xd2\xd9\xe8\xfa\
\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x03\xfe\
\x00\x00\x01\x66\xbf\x9f\xde\x3e\
\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x05\xa2\
\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xd1\
\x00\x00\x01\x66\xbf\xa1\x0f\xda\
\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa3\
\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x06\x14\
\x00\x00\x01\x66\xbf\x9d\x97\x00\
\x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\x07\xa1\
\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x08\x13\
\x00\x00\x01\x66\xbf\x9f\x19\x44\
"

View File

@ -7,7 +7,7 @@ from ..utils import pretty_bytes, get_private_keys, get_asset, keyring
from .ssh_add import SSHAddWindow
uifile = get_asset('UI/repotab.ui')
RepoUI, RepoBase = uic.loadUiType(uifile)
RepoUI, RepoBase = uic.loadUiType(uifile, from_imports=True, import_from='vorta.views')
class RepoTab(RepoBase, RepoUI, BackupProfileMixin):

View File

@ -17,10 +17,10 @@ class SnapshotTab(SnapshotBase, SnapshotUI, BackupProfileMixin):
header = self.snapshotTable.horizontalHeader()
header.setVisible(True)
header.setSectionResizeMode(0, QHeaderView.Stretch)
header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeToContents)
header.setSectionResizeMode(3, QHeaderView.ResizeToContents)
header.setSectionResizeMode(3, QHeaderView.Stretch)
self.snapshotTable.setSelectionBehavior(QTableView.SelectRows)
self.snapshotTable.setEditTriggers(QTableView.NoEditTriggers)
@ -41,15 +41,15 @@ class SnapshotTab(SnapshotBase, SnapshotUI, BackupProfileMixin):
for row, snapshot in enumerate(snapshots):
self.snapshotTable.insertRow(row)
self.snapshotTable.setItem(row, 0, QTableWidgetItem(snapshot.name))
formatted_time = snapshot.time.strftime('%Y-%m-%d %H:%M')
self.snapshotTable.setItem(row, 0, QTableWidgetItem(formatted_time))
self.snapshotTable.setItem(row, 1, QTableWidgetItem(pretty_bytes(snapshot.size)))
if snapshot.duration:
formatted_duration = str(timedelta(seconds=round(snapshot.duration)))
else:
formatted_duration = 'N/A'
self.snapshotTable.setItem(row, 2, QTableWidgetItem(formatted_duration))
formatted_time = snapshot.time.strftime('%Y-%m-%d %H:%M')
self.snapshotTable.setItem(row, 3, QTableWidgetItem(formatted_time))
self.snapshotTable.setItem(row, 3, QTableWidgetItem(snapshot.name))
self.snapshotTable.setRowCount(len(snapshots))
def snapshot_mount(self):
@ -57,7 +57,7 @@ class SnapshotTab(SnapshotBase, SnapshotUI, BackupProfileMixin):
cmd = ['borg', 'mount', '--log-json']
row_selected = self.snapshotTable.selectionModel().selectedRows()
if row_selected:
snapshot_cell = self.snapshotTable.item(row_selected[0].row(), 0)
snapshot_cell = self.snapshotTable.item(row_selected[0].row(), 3)
if snapshot_cell:
snapshot_name = snapshot_cell.text()
cmd.append(f'{profile.repo.url}::{snapshot_name}')