Merge branch 'master' into patch-1

This commit is contained in:
Tony George 2021-06-06 11:55:31 +05:30 committed by GitHub
commit 5a9f07af13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 328 additions and 478 deletions

View File

@ -55,7 +55,6 @@ You can selectively include items for backup from the ***Settings*** window. Sel
![](images/settings_users_rsync.png)
![](images/settings_filters.png)
### Better Snapshots & Rotation
* Unlike similar tools that are scheduled to take backups at a fixed time of the day, Timeshift is designed to run once every hour and take snapshots only when a snapshot is due. This is more suitable for desktop users who keep their laptops and desktops switched on for few hours daily. Scheduling snapshots at a fixed time on such users will result in missed backups since the system may not be running when the snapshot is scheduled to run. By running once every hour and creating snapshots when due, Timeshift ensures that backups are not missed.
* Applications like rsnapshot rotate a snapshot to the next level by creating a hard-linked copy. Creating a hard-linked copy may seem like a good idea but it is still a waste of disk space, since only files can be hard-linked and not directories. The duplicated directory structure can take up as much as 100 MB of space. Timeshift avoids this wastage by using tags for maintaining backup levels. Each snapshot will have only one copy on disk and is tagged as "daily", "monthly", etc. The snapshot location will have a set of folders for each backup level ("Monthly", "Daily", etc) with symbolic links pointing to the actual snapshots tagged with the level.
@ -90,6 +89,7 @@ You can selectively include items for backup from the ***Settings*** window. Sel
- Only Ubuntu-type layouts with **@** and **@home** subvolumes are supported
- **@** and **@home** subvolumes may be on same or different BTRFS volumes
- **@** may be on BTRFS volume and **/home** may be mounted on non-BTRFS partition
- If swap files are used they should not be located in **@** or **@home** and could instead be stored in their own subvolume, eg **@swap**
- Other layouts are not supported
- **GRUB2** - Bootloader must be GRUB2. GRUB legacy and other bootloaders are not supported.
@ -150,6 +150,8 @@ If you used the installer to install Timeshift, you can remove the installed fil
#### BTRFS volumes
BTRFS volumes must have an Ubuntu-type layout with **@** and **@home** subvolumes. Other layouts are not supported. Systems having the **@** subvolume and having **/home** on a non-BTRFS partition are also supported.
`Text file busy / btrfs returned an error: 256 / Failed to create snapshot` can occur if you have a Linux swapfile mounted within the **@** or **@home** subvolumes which prevents snapshot from succeeding. Relocate the swapfile out of **@** or **@home*, for example into it's own subvolume like **@swap**.
#### Disk Space
Timeshift requires a lot of disk space to keep snapshot data. The device selected as snapshot device must have sufficient free space to store the snapshots that will be created.

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: timeshift\n"
"Report-Msgid-Bugs-To: teejeetech@gmail.com\n"
"POT-Creation-Date: 2020-11-16 17:44+0530\n"
"PO-Revision-Date: 2020-02-07 15:59+0100\n"
"PO-Revision-Date: 2021-06-04 21:52+0200\n"
"Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
"Language-Team: Danish\n"
"Language: da\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.3\n"
#: Console/AppConsole.vala:615
#, c-format
@ -415,9 +415,8 @@ msgid "Commands listed below are not available on this system"
msgstr "Kommandoerne oplistet nedenfor er ikke tilgængelige på dette system"
#: Gtk/SnapshotListBox.vala:224
#, fuzzy
msgid "Comments (click to edit)"
msgstr "<b>Kommentarer</b> (dobbeltklik for at redigere)"
msgstr "Kommentarer (klik for at redigere)"
#: Gtk/RestoreBox.vala:74 Gtk/RestoreBox.vala:187 Core/Main.vala:2795
msgid "Comparing Files (Dry Run)..."
@ -822,9 +821,8 @@ msgid "Examples"
msgstr "Eksempler"
#: Gtk/UsersBox.vala:136
#, fuzzy
msgid "Exclude All Files"
msgstr "Udeladte programmer"
msgstr "Udelad alle filer"
#: Gtk/RestoreExcludeBox.vala:55 Gtk/ExcludeAppsBox.vala:51
msgid "Exclude Application Settings"
@ -1107,7 +1105,7 @@ msgstr "Danner initramfs …"
#: Utility/Gtk/DonationWindow.vala:91
msgid "GitHub"
msgstr ""
msgstr "GitHub"
#: Console/AppConsole.vala:375
msgid "Global"
@ -1193,14 +1191,12 @@ msgid "Include @home subvolume in backups"
msgstr "Medtag @home-underdiskenhed i sikkerhedskopier"
#: Gtk/UsersBox.vala:266
#, fuzzy
msgid "Include All Files"
msgstr "Udeladte programmer"
msgstr "Medtag alle filer"
#: Gtk/UsersBox.vala:194
#, fuzzy
msgid "Include Only Hidden Files"
msgstr "Medtag skjulte elementer"
msgstr "Medtag kun skjulte filer"
#: Core/Main.vala:2046
msgid "Invalid Snapshot"
@ -2715,13 +2711,12 @@ msgstr ""
"gendannelsen."
#: Utility/Gtk/DonationWindow.vala:85
#, fuzzy
msgid ""
"You can use the GitHub issue tracker for reporting issues, or post your "
"questions on the Linux Mint forums. Please avoid reporting issues by email."
msgstr ""
"Brug problemsporingen til at rapportere problemer, stille spørgsmål og "
"anmode om nye funktioner. Undgå at rapportere problemer via e-mail."
"Brug GitHub-problemsporingen til at rapportere problemer, eller stil dine "
"spørgsmål i Linux Mints fora. Undlad at rapportere problemer via e-mail."
#: Gtk/RestoreDeviceBox.vala:413
msgid ""
@ -2792,15 +2787,3 @@ msgstr "rsync returnerede en fejl"
#: Core/SnapshotRepo.vala:823
msgid "un-tagged"
msgstr "umærket"
#~ msgid "Comments"
#~ msgstr "Kommentarer"
#~ msgid "Dir not found"
#~ msgstr "Mappen blev ikke fundet"
#~ msgid "File is missing"
#~ msgstr "Filen mangler"
#~ msgid "Issue Tracker"
#~ msgstr "Problemsporing"

View File

@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: linuxmint\n"
"Report-Msgid-Bugs-To: teejeetech@gmail.com\n"
"POT-Creation-Date: 2020-11-16 17:44+0530\n"
"PO-Revision-Date: 2019-10-13 04:55+0900\n"
"Last-Translator: @ kazuo210 <kazu.nito@gmail.com>\n"
"PO-Revision-Date: 2021-02-11 23:23+0900\n"
"Last-Translator: KotaKato(@kato-k) <peony.btn@gmail.com>\n"
"Language-Team: \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2018-02-03 14:28+0000\n"
"X-Generator: Poedit 2.2.4\n"
"X-Generator: Poedit 2.3\n"
"X-Launchpad-Export-Date: 2017-11-23 10:47+0000\n"
"X-Generator: Launchpad (build 18509)\n"
"X-Poedit-Basepath: ../src\n"
@ -383,7 +383,7 @@ msgstr "クリックして編集します。 ドラッグアンドドロップ
#: Gtk/ExcludeBox.vala:59
msgid "Click to edit. Drag-drop to re-order."
msgstr "編集する時にクリックします。 ドラッグアンドドロップして並べ替えます。"
msgstr "クリックして編集します。 ドラッグアンドドロップして並べ替えます。"
#: Gtk/RestoreWindow.vala:69
msgid "Clone System"
@ -418,9 +418,8 @@ msgid "Commands listed below are not available on this system"
msgstr "以下にリストされているコマンドは、このシステムでは使用できません"
#: Gtk/SnapshotListBox.vala:224
#, fuzzy
msgid "Comments (click to edit)"
msgstr "<b>コメント</b> (ダブルクリックして編集)"
msgstr "コメント (クリックして編集)"
#: Gtk/RestoreBox.vala:74 Gtk/RestoreBox.vala:187 Core/Main.vala:2795
msgid "Comparing Files (Dry Run)..."
@ -446,7 +445,7 @@ msgstr "アクションを確認する"
#: Console/AppConsole.vala:1070
#, c-format
msgid "Continue with restore? (y/n): "
msgstr "復元を続行しますか? (y /n): "
msgstr "復元を続行しますか? (y/n): "
#: Utility/Gtk/AboutWindow.vala:425
msgid "Contributors"
@ -581,15 +580,15 @@ msgstr "重大なエラー"
#: Utility/CronTab.vala:136
msgid "Cron job added"
msgstr "Cron ジョブが追加されました"
msgstr "cron ジョブが追加されました"
#: Utility/CronTab.vala:217
msgid "Cron job removed"
msgstr "Cron ジョブが削除されました"
msgstr "cron ジョブが削除されました"
#: Utility/CronTab.vala:304
msgid "Cron task exists"
msgstr "Cron タスクが存在します"
msgstr "cron タスクが存在します"
#: Gtk/MiscBox.vala:98
msgid "Custom"
@ -613,7 +612,7 @@ msgstr "データは次のデバイスで変更されます:"
#: Gtk/MiscBox.vala:71
msgid "Date Format"
msgstr "日付形式"
msgstr "日付形式"
#: Console/AppConsole.vala:371 Gtk/MainWindow.vala:161
#: Gtk/SnapshotListBox.vala:322 Gtk/DeleteWindow.vala:98
@ -673,7 +672,7 @@ msgstr "説明"
#: Core/Subvolume.vala:181
#, c-format
msgid "Destroyed qgroup"
msgstr "qgroup 破棄されました"
msgstr "qgroup を破棄しました"
#: Core/Subvolume.vala:171
#, c-format
@ -827,9 +826,8 @@ msgid "Examples"
msgstr "例"
#: Gtk/UsersBox.vala:136
#, fuzzy
msgid "Exclude All Files"
msgstr "すべて除外"
msgstr "すべて除外"
#: Gtk/RestoreExcludeBox.vala:55 Gtk/ExcludeAppsBox.vala:51
msgid "Exclude Application Settings"
@ -1088,7 +1086,7 @@ msgstr "既存の復元前のスナップショットが見つかりました"
#: Gtk/BackupDeviceBox.vala:215
msgid "Free"
msgstr "未使用"
msgstr "空き容量"
#: Core/SnapshotRepo.vala:77 Core/SnapshotRepo.vala:147
msgid "Free space"
@ -1201,14 +1199,12 @@ msgid "Include @home subvolume in backups"
msgstr "バックアップに @home サブボリュームを含めます"
#: Gtk/UsersBox.vala:266
#, fuzzy
msgid "Include All Files"
msgstr "すべて含める"
msgstr "すべて含める"
#: Gtk/UsersBox.vala:194
#, fuzzy
msgid "Include Only Hidden Files"
msgstr "Include hidden items"
msgstr "非表示にされたファイルのみを含める"
#: Core/Main.vala:2046
msgid "Invalid Snapshot"
@ -1229,7 +1225,7 @@ msgstr "選択されていないアイテム"
#: Gtk/ScheduleBox.vala:283
msgid "Keep"
msgstr "保持"
msgstr "保持上限"
#: Gtk/RestoreExcludeBox.vala:112
msgid ""
@ -1526,7 +1522,7 @@ msgstr ""
#: Utility/Gtk/CustomMessageDialog.vala:171 Gtk/SettingsWindow.vala:123
#: Gtk/ExcludeListSummaryWindow.vala:84 Core/SnapshotRepo.vala:615
msgid "OK"
msgstr "はい"
msgstr "OK"
#: Gtk/SnapshotBackendBox.vala:180
msgid ""
@ -1981,7 +1977,7 @@ msgstr "このディスク上のパーティションを選択します"
#: Gtk/MainWindow.vala:794
msgid "Select a single snapshot to restore"
msgstr "復元するスナップショットを 1 つ選択する"
msgstr "復元するスナップショットを1つ選択してください"
#: Gtk/RestoreDeviceBox.vala:481
msgid "Select another device for root file system (/)"
@ -2662,11 +2658,11 @@ msgstr "作成時のRsyncログを表示"
#: Gtk/SnapshotListBox.vala:350
msgid "View Rsync Log for Restore"
msgstr "復元時のRsync ログを表示"
msgstr "復元時のRsyncログを表示"
#: Gtk/MainWindow.vala:380
msgid "View TimeShift Logs"
msgstr "タイムシフトログを表示"
msgstr "タイムシフトログを表示"
#: Gtk/RestoreDeviceBox.vala:101
msgid "Volume"
@ -2727,13 +2723,12 @@ msgstr ""
"復元し、復元を '元に戻す' ことができます。"
#: Utility/Gtk/DonationWindow.vala:85
#, fuzzy
msgid ""
"You can use the GitHub issue tracker for reporting issues, or post your "
"questions on the Linux Mint forums. Please avoid reporting issues by email."
msgstr ""
"問題の報告、質問、機能のリクエストには、問題追跡ツールを使用します。 電子メー"
"ルによる問題の報告は避けてください。"
"問題はGitHub issue trackerで報告できます。また、Linux Mint forumsで質問をする"
"こともできます。emailで報告することは避けてください。"
#: Gtk/RestoreDeviceBox.vala:413
msgid ""

View File

@ -422,7 +422,7 @@ msgstr "Opmerkingen (klik om te bewerken)"
#: Gtk/RestoreBox.vala:74 Gtk/RestoreBox.vala:187 Core/Main.vala:2795
msgid "Comparing Files (Dry Run)..."
msgstr "Bestanden worden vergeleken (er wordt niets gewijzigd)..."
msgstr "Bestanden worden vergeleken (er wordt niets aangepast)..."
#: Core/Main.vala:2561
msgid "Comparing files with rsync..."
@ -2737,9 +2737,8 @@ msgid ""
"You can use the GitHub issue tracker for reporting issues, or post your "
"questions on the Linux Mint forums. Please avoid reporting issues by email."
msgstr ""
"U kunt het foutmeldingssysteem van GitHub gebruiken om fouten te melden. "
"Post uw vragen op het forum van Linux Mint; doe dat dus liever niet via e-"
"mail."
"U kunt het foutmeldingssysteem van GitHub gebruiken om fouten te melden, "
"en uw vragen stellen op het forum van Linux Mint. Doe dat niet via e-mail."
#: Gtk/RestoreDeviceBox.vala:413
msgid ""

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
# Swedish translation for timeshift
# Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016
# This file is distributed under the same license as the timeshift package.
# FIRST AUTHOR Åke Engelbrektson <eson@svenskasprakfiler.se>, 2016-2019
# Åke Engelbrektson <eson@svenskasprakfiler.se>, 2016-2021
#
msgid ""
msgstr ""
"Project-Id-Version: timeshift\n"
"Report-Msgid-Bugs-To: teejeetech@gmail.com\n"
"POT-Creation-Date: 2020-11-16 17:44+0530\n"
"PO-Revision-Date: 2019-09-25 14:25+0200\n"
"PO-Revision-Date: 2021-01-21 15:56+0100\n"
"Last-Translator: Åke Engelbrektson <eson@svenskasprakfiler.se>\n"
"Language-Team: Svenska Språkfiler <eson@svenskasprakfiler.se>\n"
"Language: sv\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2018-02-03 14:28+0000\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.3\n"
"X-Launchpad-Export-Date: 2017-09-18 16:44+0000\n"
"X-Generator: Poedit 1.8.7.1\n"
@ -173,7 +173,7 @@ msgstr "En annan instans av Timeshift skapar en avbild."
#: Utility/AppLock.vala:49
msgid "Another instance of this application is running"
msgstr "En annan programinstans körs redan."
msgstr "En annan programinstans körs redan"
#: Core/Main.vala:257
msgid "Another instance of timeshift is currently running!"
@ -415,9 +415,8 @@ msgid "Commands listed below are not available on this system"
msgstr "Nedanstående kommandon är inte tillgängliga i detta system"
#: Gtk/SnapshotListBox.vala:224
#, fuzzy
msgid "Comments (click to edit)"
msgstr "<b>Kommentarer</b> (Dubbelklick för redigering)"
msgstr "Kommentarer (klicka för att redigera)"
#: Gtk/RestoreBox.vala:74 Gtk/RestoreBox.vala:187 Core/Main.vala:2795
msgid "Comparing Files (Dry Run)..."
@ -823,9 +822,8 @@ msgid "Examples"
msgstr "Exempel"
#: Gtk/UsersBox.vala:136
#, fuzzy
msgid "Exclude All Files"
msgstr "Undanta alla"
msgstr "Undanta alla filer"
#: Gtk/RestoreExcludeBox.vala:55 Gtk/ExcludeAppsBox.vala:51
msgid "Exclude Application Settings"
@ -1112,7 +1110,7 @@ msgstr "Genererar initramfs ..."
#: Utility/Gtk/DonationWindow.vala:91
msgid "GitHub"
msgstr ""
msgstr "GitHub"
#: Console/AppConsole.vala:375
msgid "Global"
@ -1199,14 +1197,12 @@ msgid "Include @home subvolume in backups"
msgstr "Ta med @home undervolym i säkerhetskopior"
#: Gtk/UsersBox.vala:266
#, fuzzy
msgid "Include All Files"
msgstr "Ta med alla"
msgstr "Ta med alla filer"
#: Gtk/UsersBox.vala:194
#, fuzzy
msgid "Include Only Hidden Files"
msgstr "Ta med dolda objekt"
msgstr "Ta med endast dolda filer"
#: Core/Main.vala:2046
msgid "Invalid Snapshot"
@ -2714,13 +2710,12 @@ msgstr ""
"behov, för att \"ångra\" föregående återställning."
#: Utility/Gtk/DonationWindow.vala:85
#, fuzzy
msgid ""
"You can use the GitHub issue tracker for reporting issues, or post your "
"questions on the Linux Mint forums. Please avoid reporting issues by email."
msgstr ""
"Använd ärendehanteraren för att rapportera fel, frågor och be om funktioner. "
"Undvik att rapportera ärenden via e-post."
"Använd GitHubs ärendehanterare för att rapportera fel, eller posta dina "
"frågor på Linux Mint forum. Undvik att rapportera ärenden via e-post."
#: Gtk/RestoreDeviceBox.vala:413
msgid ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: timeshift\n"
"Report-Msgid-Bugs-To: teejeetech@gmail.com\n"
"POT-Creation-Date: 2020-11-16 17:44+0530\n"
"PO-Revision-Date: 2019-12-06 15:43+0300\n"
"PO-Revision-Date: 2021-01-15 06:17+0300\n"
"Last-Translator: Gökhan Gökkaya <gokhanlnx@gmail.com>\n"
"Language-Team: Linux Mint Turkey <linuxmint@linuxmint.net.tr>\n"
"Language: tr\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2018-02-03 14:28+0000\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.3\n"
"X-Launchpad-Export-Date: 2017-11-23 10:47+0000\n"
"X-Generator: Launchpad (build 18509)\n"
@ -419,9 +419,8 @@ msgid "Commands listed below are not available on this system"
msgstr "Aşağıdaki komut listesi bu sistem için kullanılabilir değil"
#: Gtk/SnapshotListBox.vala:224
#, fuzzy
msgid "Comments (click to edit)"
msgstr "<b>ıklamalar</b> (düzenleme için çift tıklayın)"
msgstr "Açıklamalar (düzenleme için çift tıklayın)"
#: Gtk/RestoreBox.vala:74 Gtk/RestoreBox.vala:187 Core/Main.vala:2795
msgid "Comparing Files (Dry Run)..."
@ -829,9 +828,8 @@ msgid "Examples"
msgstr "Örnekler"
#: Gtk/UsersBox.vala:136
#, fuzzy
msgid "Exclude All Files"
msgstr "Tümünü Hariç Tut"
msgstr "Tüm Dosyaları Hariç Tut"
#: Gtk/RestoreExcludeBox.vala:55 Gtk/ExcludeAppsBox.vala:51
msgid "Exclude Application Settings"
@ -1114,7 +1112,7 @@ msgstr "initramfs oluşturuluyor..."
#: Utility/Gtk/DonationWindow.vala:91
msgid "GitHub"
msgstr ""
msgstr "GitHub"
#: Console/AppConsole.vala:375
msgid "Global"
@ -1202,14 +1200,12 @@ msgid "Include @home subvolume in backups"
msgstr "@home altbölümünü yedeklemelere dahil et"
#: Gtk/UsersBox.vala:266
#, fuzzy
msgid "Include All Files"
msgstr "Tümünü Dahil Et"
msgstr "Tüm Dosyaları Dahil Et"
#: Gtk/UsersBox.vala:194
#, fuzzy
msgid "Include Only Hidden Files"
msgstr "Gizli öğeleri dahil et"
msgstr "Sadece Gizli Dosyaları Dahil Et"
#: Core/Main.vala:2046
msgid "Invalid Snapshot"
@ -2727,13 +2723,13 @@ msgstr ""
"haline getirilebilir."
#: Utility/Gtk/DonationWindow.vala:85
#, fuzzy
msgid ""
"You can use the GitHub issue tracker for reporting issues, or post your "
"questions on the Linux Mint forums. Please avoid reporting issues by email."
msgstr ""
"Sorunları bildirmek, soru sormak ve özellik istemek için sorun izleyiciyi "
"kullanınız. Lütfen sorunları e-postayla göndermektan kaçının."
"Sorunları bildirmek için GitHub sorun izleyicisini kullanabilirsiniz, veya "
"sorularınızı Linux Mint forumlarına gönderebilirsiniz. Lütfen sorunları e-"
"posta ile bildirmekten kaçının."
#: Gtk/RestoreDeviceBox.vala:413
msgid ""

View File

@ -338,7 +338,7 @@ public class Main : GLib.Object{
log_debug("Main: check_dependencies()");
string[] dependencies = { "rsync","/sbin/blkid","df","mount","umount","fuser","crontab","cp","rm","touch","ln","sync"}; //"shutdown","chroot",
string[] dependencies = { "rsync","/sbin/blkid","df","mount","umount","fuser","crontab","cp","rm","touch","ln","sync","which"}; //"shutdown","chroot",
string path;
foreach(string cmd_tool in dependencies){
@ -2756,7 +2756,7 @@ public class Main : GLib.Object{
}
}
sh_fsck += "echo '' \n";
int ret_val = exec_script_sync(sh_fsck, null, null, false, false, false, true);
exec_script_sync(sh_fsck, null, null, false, false, false, true);
}
}

View File

@ -270,10 +270,6 @@ public class SnapshotRepo : GLib.Object{
else{
return "";
}
log_debug("SnapshotRepo: unlock_and_mount_device(): exit");
return "";
}
public Device? unlock_encrypted_device(Device luks_device){

2
src/Gtk/BackupBox.vala Normal file → Executable file
View File

@ -64,7 +64,7 @@ class BackupBox : Gtk.Box{
log_debug("BackupBox: BackupBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -46,7 +46,7 @@ class BackupDeviceBox : Gtk.Box{
log_debug("BackupDeviceBox: BackupDeviceBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -42,7 +42,7 @@ class BackupFinishBox : Gtk.Box{
log_debug("BackupFinishBox: BackupFinishBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -47,7 +47,7 @@ class BootOptionsBox : Gtk.Box{
log_debug("BootOptionsBox: BootOptionsBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -50,7 +50,7 @@ class DeleteBox : Gtk.Box{
log_debug("DeleteBox: DeleteBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -42,7 +42,7 @@ class DeleteFinishBox : Gtk.Box{
log_debug("DeleteFinishBox: DeleteFinishBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -48,7 +48,7 @@ class EstimateBox : Gtk.Box{
log_debug("EstimateBox: EstimateBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -41,7 +41,7 @@ class ExcludeAppsBox : Gtk.Box{
log_debug("ExcludeAppsBox: ExcludeAppsBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -44,7 +44,7 @@ class ExcludeBox : Gtk.Box{
log_debug("ExcludeBox: ExcludeBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -45,7 +45,7 @@ class FinishBox : Gtk.Box{
log_debug("FinishBox: FinishBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;
show_notes = _show_notes;

View File

@ -922,7 +922,7 @@ class MainWindow : Gtk.Window{
private void btn_about_clicked (){
var dialog = new AboutWindow();
var dialog = new AboutWindow(this);
dialog.set_transient_for (this);
dialog.authors = {

View File

@ -46,7 +46,7 @@ class MiscBox : Gtk.Box{
log_debug("MiscBox: MiscBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -65,7 +65,7 @@ class RestoreBox : Gtk.Box{
log_debug("RestoreBox: RestoreBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -51,7 +51,7 @@ class RestoreDeviceBox : Gtk.Box{
log_debug("RestoreDeviceBox: RestoreDeviceBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -46,7 +46,7 @@ class RestoreExcludeBox : Gtk.Box{
log_debug("RestoreExcludeBox: RestoreExcludeBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -42,7 +42,7 @@ class RestoreFinishBox : Gtk.Box{
log_debug("RestoreFinishBox: RestoreFinishBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -44,7 +44,7 @@ class RestoreSummaryBox : Gtk.Box{
log_debug("RestoreSummaryBox: RestoreSummaryBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -69,7 +69,7 @@ public class RsyncLogBox : Gtk.Box {
public RsyncLogBox(Gtk.Window _window) {
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
this.margin = 6;

View File

@ -50,7 +50,7 @@ class ScheduleBox : Gtk.Box{
log_debug("ScheduleBox: ScheduleBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -46,7 +46,7 @@ class SnapshotBackendBox : Gtk.Box{
log_debug("SnapshotBackendBox: SnapshotBackendBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -63,7 +63,7 @@ class SnapshotListBox : Gtk.Box{
log_debug("SnapshotListBox: SnapshotListBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 6;

View File

@ -49,7 +49,7 @@ class UsersBox : Gtk.Box{
log_debug("UsersBox: UsersBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;

View File

@ -327,7 +327,6 @@ public class CronTab : GLib.Object {
log_error("Cron directory type parameter not valid" + ": %s".printf(cron_dir_type));
log_error("Expected values: d, hourly, daily, weekly, monthly");
return false;
break;
}
string file_path = "/etc/cron.%s/%s".printf(cron_dir_type, file_name.replace(".","-")); // dot is not allowed in file name

View File

@ -1962,51 +1962,10 @@ public class Device : GLib.Object{
return "<tt>%s</tt>".printf(tt);
}
private string display_name(bool short_name = true, bool show_label = true, bool show_parent = true, bool show_alias = false){
string txt = "";
if (short_name){
txt += kname;
}
else{
txt += device;
}
if (type == "disk"){
if (vendor.length > 0){
txt += " " + vendor;
}
if (model.length > 0){
txt += " " + model;
}
if (size_bytes > 0) {
if (txt.strip().length == 0){
txt += "%s Device".printf(format_file_size(size_bytes, false, "", true, 0));
}
else{
txt += " (%s)".printf(format_file_size(size_bytes, false, "", true, 0));
}
}
}
else{
if (show_label && (label.length > 0)){
txt += "(%s)".printf(label);
}
if (show_parent && has_parent() && (parent.type == "part")){ // TODO: if parent is crypt (like lvm on luks)
txt += "(%s)".printf(pkname);
}
if (show_alias && (mapped_name.length > 0)){
txt += "(%s)".printf(mapped_name);
}
}
return txt;
}
// testing -----------------------------------
public static void test_all(){
var list = get_block_devices_using_lsblk();
log_msg("\n> get_block_devices_using_lsblk()");
print_device_list(list);

View File

@ -31,7 +31,7 @@ using TeeJee.GtkHelper;
using TeeJee.System;
using TeeJee.Misc;
public class AboutWindow : Dialog {
public class AboutWindow : Gtk.Window {
private Gtk.Box vbox_main;
private Gtk.Box vbox_logo;
@ -42,6 +42,7 @@ public class AboutWindow : Dialog {
private Gtk.Button btn_license;
private Gtk.Button btn_credits;
private Gtk.Button btn_close;
private Gtk.Window window;
private Gtk.Image img_logo;
private Gtk.Label lbl_program_name;
@ -203,22 +204,26 @@ public class AboutWindow : Dialog {
private string username = "";
public AboutWindow() {
public AboutWindow(Gtk.Window _window) {
window = _window;
window_position = WindowPosition.CENTER_ON_PARENT;
set_destroy_with_parent (true);
set_modal (true);
skip_taskbar_hint = false;
set_default_size (450, 400);
set_default_size(450, 450);
if (get_user_id_effective() == 0){
username = get_username();
log_debug("username: %s".printf(username));
}
vbox_main = get_content_area();
vbox_main.margin = 6;
vbox_main = new Gtk.Box(Orientation.VERTICAL,0);
vbox_main.margin = 12;
vbox_main.spacing = 6;
this.add(vbox_main);
vbox_logo = new Gtk.Box(Orientation.VERTICAL,0);
vbox_main.add(vbox_logo);
@ -243,7 +248,6 @@ public class AboutWindow : Dialog {
label.wrap_mode = Pango.WrapMode.WORD_CHAR;
label.use_markup = true;
label.margin = 6;
label.margin_right = 25;
sw_license.add(label);
lbl_license = label;
@ -309,8 +313,8 @@ public class AboutWindow : Dialog {
}
private void add_action_buttons(){
hbox_action = (Box) get_action_area();
hbox_action = add_button_box(vbox_main, Gtk.Orientation.HORIZONTAL, Gtk.ButtonBoxStyle.CENTER, 6);
//btn_license
btn_license = new Gtk.Button.with_label(" " + _("License"));

View File

@ -48,9 +48,7 @@ public class CustomMessageDialog : Gtk.Dialog {
private Gtk.MessageType msg_type;
private Gtk.ButtonsType buttons_type;
public CustomMessageDialog(
string _msg_title, string _msg_body,
Gtk.MessageType _msg_type, Window? parent, Gtk.ButtonsType _buttons_type) {
public CustomMessageDialog(string _msg_title, string _msg_body, Gtk.MessageType _msg_type, Window? parent, Gtk.ButtonsType _buttons_type) {
set_transient_for(parent);
set_modal(true);
@ -62,34 +60,18 @@ public class CustomMessageDialog : Gtk.Dialog {
init_window();
//lbl_msg.label += string.nfill(4000, 'n');
lbl_msg.expand = true;
sw_msg.expand = true;
sw_msg.vscrollbar_policy = PolicyType.NEVER;
//log_debug("0: label=%dx%d".printf(lbl_msg.get_allocated_width(), lbl_msg.get_allocated_height()));
//log_debug("0: scroll=%dx%d".printf(sw_msg.get_allocated_width(), sw_msg.get_allocated_height()));
sw_msg.set_size_request(500, 150); // sets minimum size
//log_debug("0: label=%dx%d".printf(lbl_msg.get_allocated_width(), lbl_msg.get_allocated_height()));
//log_debug("0: scroll=%dx%d".printf(sw_msg.get_allocated_width(), sw_msg.get_allocated_height()));
show_all();
//log_debug("1: label=%dx%d".printf(lbl_msg.get_allocated_width(), lbl_msg.get_allocated_height()));
//log_debug("1: scroll=%dx%d".printf(sw_msg.get_allocated_width(), sw_msg.get_allocated_height()));
if (lbl_msg.get_allocated_height() > 400){
sw_msg.vscrollbar_policy = PolicyType.AUTOMATIC;
sw_msg.set_size_request(500, 400);
//gtk_do_events();
//this.set_position(WindowPosition.CENTER);
}
//log_debug("1: label=%dx%d".printf(lbl_msg.get_allocated_width(), lbl_msg.get_allocated_height()));
//log_debug("1: scroll=%dx%d".printf(sw_msg.get_allocated_width(), sw_msg.get_allocated_height()));
}
public void init_window () {
@ -131,7 +113,6 @@ public class CustomMessageDialog : Gtk.Dialog {
// image ----------------
var img = new Image.from_icon_name(icon_name, Gtk.IconSize.DIALOG);
img.margin_right = 12;
hbox_contents.add(img);
// label -------------------
@ -146,8 +127,7 @@ public class CustomMessageDialog : Gtk.Dialog {
lbl_msg.wrap = true;
lbl_msg.wrap_mode = Pango.WrapMode.WORD_CHAR;
lbl_msg.use_markup = true;
lbl_msg.margin_right = 25;
//sw_msg
sw_msg = new Gtk.ScrolledWindow(null, null);
//sw_msg.set_shadow_type (ShadowType.ETCHED_IN);
@ -159,9 +139,6 @@ public class CustomMessageDialog : Gtk.Dialog {
// actions -------------------------
var action_area = get_action_area () as Gtk.Box;
action_area.margin_top = 12;
switch(buttons_type){
case Gtk.ButtonsType.OK:
btn_ok = (Gtk.Button) add_button (_("OK"), Gtk.ResponseType.OK);

View File

@ -115,11 +115,8 @@ namespace TeeJee.GtkHelper{
content.margin = 6;
//add buttons
var actions = (Box) dlg.get_action_area ();
dlg.add_button(_("OK"),Gtk.ResponseType.OK);
dlg.add_button(_("Cancel"),Gtk.ResponseType.CANCEL);
//actions.margin = 6;
actions.margin_top = 12;
//keyboard shortcuts
txt_input.key_press_event.connect ((w, event) => {
@ -308,7 +305,6 @@ namespace TeeJee.GtkHelper{
// TreeView
var treeview = new TreeView();
treeview.get_selection().mode = selection_mode;
treeview.set_rules_hint (true);
treeview.show_expanders = true;
treeview.enable_tree_lines = true;
@ -450,10 +446,7 @@ namespace TeeJee.GtkHelper{
if (show_border){
scroll.set_shadow_type (ShadowType.ETCHED_IN);
}
else{
label.margin_left = 0;
}
return label;
}
@ -498,7 +491,6 @@ namespace TeeJee.GtkHelper{
private Gtk.Label add_label_subnote(Gtk.Box box, string text){
var label = add_label(box, text, false, true);
label.margin_left = 6;
return label;
}
@ -590,70 +582,26 @@ namespace TeeJee.GtkHelper{
return button;
}
// add_toggle_button
private Gtk.ToggleButton add_toggle_button(Gtk.Box box, string text, string tooltip, Gtk.SizeGroup? size_group, Gtk.Image? icon = null){
var button = new Gtk.ToggleButton();
box.add(button);
button.set_label(text);
button.set_tooltip_text(tooltip);
if (icon != null){
button.set_image(icon);
button.set_always_show_image(true);
}
if (size_group != null){
size_group.add_widget(button);
}
return button;
}
// add_directory_chooser
private Gtk.Entry add_directory_chooser(Gtk.Box box, string selected_directory, Gtk.Window parent_window){
// Entry
var entry = new Gtk.Entry();
entry.hexpand = true;
//entry.margin_left = 6;
entry.secondary_icon_stock = "gtk-open";
entry.placeholder_text = _("Enter path or browse for directory");
box.add (entry);
public Gtk.ButtonBox add_button_box(Gtk.Container box, Gtk.Orientation orientation = Gtk.Orientation.HORIZONTAL,
Gtk.ButtonBoxStyle layout = Gtk.ButtonBoxStyle.CENTER, int spacing = 6){
if ((selected_directory != null) && dir_exists(selected_directory)){
entry.text = selected_directory;
}
var bbox = new Gtk.ButtonBox(orientation);
bbox.set_layout(layout);
bbox.set_spacing(spacing);
box.add(bbox);
entry.icon_release.connect((p0, p1) => {
//chooser
var chooser = new Gtk.FileChooserDialog(
_("Select Path"),
parent_window,
FileChooserAction.SELECT_FOLDER,
"_Cancel",
Gtk.ResponseType.CANCEL,
"_Open",
Gtk.ResponseType.ACCEPT
);
chooser.select_multiple = false;
chooser.set_filename(selected_directory);
if (chooser.run() == Gtk.ResponseType.ACCEPT) {
entry.text = chooser.get_filename();
//App.repo = new SnapshotRepo.from_path(entry.text, this);
//check_backup_location();
}
chooser.destroy();
});
return entry;
/*
Gtk.ButtonBoxStyle.CENTER
CENTER - Buttons are centered in the box.
EDGE - Buttons are placed at the edges of the box.
END - Buttons are grouped towards the end of the box, (on the right for a HBox, or the bottom for a VBox).
EXPAND - Buttons expand to fill the box.
SPREAD - Buttons are evenly spread across the box.
START - Buttons are grouped towards the start of the box, (on the left for a HBox, or the top for a VBox).
*/
return bbox;
}
}

View File

@ -422,13 +422,13 @@ namespace TeeJee.ProcessHelper{
* */
int[] child_pids = get_process_children (process_pid);
Posix.kill (process_pid, Posix.SIGTERM);
Posix.kill (process_pid, Posix.Signal.TERM);
if (killChildren){
Pid childPid;
foreach (long pid in child_pids){
childPid = (Pid) pid;
Posix.kill (childPid, Posix.SIGTERM);
Posix.kill (childPid, Posix.Signal.TERM);
}
}
}
@ -441,13 +441,13 @@ namespace TeeJee.ProcessHelper{
* */
int[] child_pids = get_process_children (process_pid);
Posix.kill (process_pid, Posix.SIGKILL);
Posix.kill (process_pid, Posix.Signal.KILL);
if (killChildren){
Pid childPid;
foreach (long pid in child_pids){
childPid = (Pid) pid;
Posix.kill (childPid, Posix.SIGKILL);
Posix.kill (childPid, Posix.Signal.KILL);
}
}
}

View File

@ -275,14 +275,6 @@ namespace TeeJee.System{
return list;
}
public int get_display_width(){
return Gdk.Screen.get_default().get_width();
}
public int get_display_height(){
return Gdk.Screen.get_default().get_height();
}
// internet helpers ----------------------
public bool shutdown (){