1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/* -*- Mode: Vala; indent-tabs-mode: nil; tab-width: 2 -*- */
/*
This file is part of Déjà Dup.
For copyright information, see AUTHORS.
Déjà Dup is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Déjà Dup is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Déjà Dup. If not, see <http://www.gnu.org/licenses/>.
*/
using GLib;
namespace DejaDup {
public class ConfigLabelLocation : ConfigLabel
{
Gtk.Image img;
SimpleSettings file_root;
SimpleSettings s3_root;
SimpleSettings u1_root;
SimpleSettings rackspace_root;
public ConfigLabelLocation()
{
base(null);
}
construct {
img = new Gtk.Image.from_icon_name("folder", Gtk.IconSize.MENU);
fill_box();
watch_key(BACKEND_KEY);
watch_key(null, (file_root = DejaDup.get_settings(FILE_ROOT)));
watch_key(null, (s3_root = DejaDup.get_settings(S3_ROOT)));
watch_key(null, (u1_root = DejaDup.get_settings(U1_ROOT)));
watch_key(null, (rackspace_root = DejaDup.get_settings(RACKSPACE_ROOT)));
set_from_config.begin();
}
protected override void fill_box()
{
if (img == null)
return;
img.expand = false;
box.add(img);
label.xalign = 0.0f;
label.ellipsize = Pango.EllipsizeMode.MIDDLE;
box.add(label);
}
protected override async void set_from_config()
{
if (img == null)
return;
var backend = Backend.get_default();
string desc = backend.get_location_pretty();
if (desc == null)
desc = "";
label.label = desc;
Icon icon = backend.get_icon();
if (icon == null)
img.set_from_icon_name("folder", Gtk.IconSize.MENU);
else
img.set_from_gicon(icon, Gtk.IconSize.MENU);
}
}
}
|