Merge lp:~townsend/libertine/1.0.1 into lp:libertine/trunk
- 1.0.1
- Merge into trunk
Status: | Merged | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Stephen M. Webb | ||||||||||||||||||||||||||||||||
Approved revision: | 124 | ||||||||||||||||||||||||||||||||
Merged at revision: | 124 | ||||||||||||||||||||||||||||||||
Proposed branch: | lp:~townsend/libertine/1.0.1 | ||||||||||||||||||||||||||||||||
Merge into: | lp:libertine/trunk | ||||||||||||||||||||||||||||||||
Diff against target: |
1885 lines (+656/-378) 22 files modified
data/puritine-click.conf (+9/-4) debian/changelog (+26/-0) libertine/ContainerConfig.cpp (+2/-1) libertine/ContainerConfig.h (+2/-2) libertine/ContainerManager.cpp (+3/-3) libertine/ContainerManager.h (+3/-3) libertine/main.cpp (+8/-0) libertine/qml/ContainerApps.qml (+0/-27) libertine/qml/ContainerInfoView.qml (+1/-1) libertine/qml/ContainersView.qml (+15/-9) libertine/qml/ExtraArchivesView.qml (+26/-9) libertine/qml/HomeView.qml (+32/-21) libertine/qml/ManageContainer.qml (+53/-4) libertine/qml/PackageInfoView.qml (+0/-34) libertine/qml/PackageOperationFailureDialog.qml (+36/-0) libertine/qml/SearchResultsView.qml (+2/-0) libertine/qml/libertine.qml (+19/-1) po/en_US.po (+89/-53) po/libertine.pot (+200/-175) python/libertine/ChrootContainer.py (+4/-4) python/libertine/Libertine.py (+41/-15) tools/libertine-container-manager (+85/-12) |
||||||||||||||||||||||||||||||||
To merge this branch: | bzr merge lp:~townsend/libertine/1.0.1 | ||||||||||||||||||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stephen M. Webb (community) | Approve | ||
Review via email:
|
Commit message
* Allow an explicitly set distro during the create operation if it matches the host's distro even if the distro is technically end-of-life. (LP: #1569397)
* More Libertine GUI improvements.
* Check to make sure a subcommand was given and if not, print out the usage. (LP: #1539104)
* Check to see if CLI and GUI is ran using sudo and if so, print a message and exit. (LP: #1570548)
* Catch runtime errors raised when starting a container so a crash file is not generated and to tell the GUI that there was an error so the user can be presented a proper notification. (LP: #1539105)
* Use shutil.which() instead of hardcoded path for detecting if proot is on the system. Fixes alternate $PATH locations such as in a snap. (LP: #1572591)
* Add a 'merge-configs' command to l-c-m which allows merging a specified ContainersConfi
* Have the Puritine click linking occur before Unity 8 is started to avoid having a 0-byte ContainersConfi
* Fixing infinite package removal on error caused by bad apt command and variable access. (LP: #1573201)
Description of the change
Preview Diff
1 | === modified file 'data/puritine-click.conf' | |||
2 | --- data/puritine-click.conf 2016-03-02 13:23:42 +0000 | |||
3 | +++ data/puritine-click.conf 2016-04-25 17:15:41 +0000 | |||
4 | @@ -1,6 +1,6 @@ | |||
5 | 1 | description "Puritine Click chroot linking" | 1 | description "Puritine Click chroot linking" |
6 | 2 | 2 | ||
8 | 3 | start on started unity8 | 3 | start on starting unity8 |
9 | 4 | 4 | ||
10 | 5 | script | 5 | script |
11 | 6 | PACKAGE_PATH=`click pkgdir com.ubuntu.puritine` | 6 | PACKAGE_PATH=`click pkgdir com.ubuntu.puritine` |
12 | @@ -14,10 +14,15 @@ | |||
13 | 14 | ln -s $CHROOT_PATH/rootfs $HOME/.cache/libertine-container/$CONTAINER_NAME/rootfs | 14 | ln -s $CHROOT_PATH/rootfs $HOME/.cache/libertine-container/$CONTAINER_NAME/rootfs |
14 | 15 | fi | 15 | fi |
15 | 16 | 16 | ||
18 | 17 | # Link the container config | 17 | # Copy or merge the container config files |
19 | 18 | if [ ! -L $HOME/.local/share/libertine/ContainersConfig.json ] ; then | 18 | if [ ! -e $HOME/.local/share/libertine/ContainersConfig.json ] ; then |
20 | 19 | mkdir -p $HOME/.local/share/libertine/ | 19 | mkdir -p $HOME/.local/share/libertine/ |
22 | 20 | ln -s $PACKAGE_PATH/libertine-config/libertine/ContainersConfig.json $HOME/.local/share/libertine/ContainersConfig.json | 20 | cp $PACKAGE_PATH/libertine-config/libertine/ContainersConfig.json $HOME/.local/share/libertine/ContainersConfig.json |
23 | 21 | elif [ -L $HOME/.local/share/libertine/ContainersConfig.json ] ; then | ||
24 | 22 | rm $HOME/.local/share/libertine/ContainersConfig.json | ||
25 | 23 | cp $PACKAGE_PATH/libertine-config/libertine/ContainersConfig.json $HOME/.local/share/libertine/ContainersConfig.json | ||
26 | 24 | else | ||
27 | 25 | libertine-container-manager merge-configs -f $PACKAGE_PATH/libertine-config/libertine/ContainersConfig.json | ||
28 | 21 | fi | 26 | fi |
29 | 22 | 27 | ||
30 | 23 | # Create and copy the user-data dir from the click package | 28 | # Create and copy the user-data dir from the click package |
31 | 24 | 29 | ||
32 | === modified file 'debian/changelog' | |||
33 | --- debian/changelog 2016-04-11 16:05:03 +0000 | |||
34 | +++ debian/changelog 2016-04-25 17:15:41 +0000 | |||
35 | @@ -1,3 +1,29 @@ | |||
36 | 1 | libertine (1.0.1-0ubuntu1) UNRELEASED; urgency=medium | ||
37 | 2 | |||
38 | 3 | [ Chris Townsend ] | ||
39 | 4 | * Allow an explicitly set distro during the create operation if it matches the | ||
40 | 5 | host's distro even if the distro is technically end-of-life. (LP: #1569397) | ||
41 | 6 | * More Libertine GUI improvements. | ||
42 | 7 | * Check to make sure a subcommand was given and if not, print out the usage. | ||
43 | 8 | (LP: #1539104) | ||
44 | 9 | * Check to see if CLI and GUI is ran using sudo and if so, print a message and | ||
45 | 10 | exit. (LP: #1570548) | ||
46 | 11 | * Catch runtime errors raised when starting a container so a crash file is not | ||
47 | 12 | generated and to tell the GUI that there was an error so the user can be | ||
48 | 13 | presented a proper notification. (LP: #1539105) | ||
49 | 14 | * Use shutil.which() instead of hardcoded path for detecting if proot is on the | ||
50 | 15 | system. Fixes alternate $PATH locations such as in a snap. (LP: #1572591) | ||
51 | 16 | * Add a 'merge-configs' command to l-c-m which allows merging a specified | ||
52 | 17 | ContainersConfig.json file with the existing config file. (LP: #1566391) | ||
53 | 18 | * Have the Puritine click linking occur before Unity 8 is started to avoid having | ||
54 | 19 | a 0-byte ContainersConfig.json file from being created. (LP: #1573266) | ||
55 | 20 | |||
56 | 21 | [ Larry Price ] | ||
57 | 22 | * Fixing infinite package removal on error caused by bad apt command and variable | ||
58 | 23 | access. (LP: #1573201) | ||
59 | 24 | |||
60 | 25 | -- Chris Townsend <christopher.townsend@canonical.com> Mon, 25 Apr 2016 12:49:22 -0400 | ||
61 | 26 | |||
62 | 1 | libertine (1.0.0+16.04.20160411-0ubuntu1) xenial; urgency=medium | 27 | libertine (1.0.0+16.04.20160411-0ubuntu1) xenial; urgency=medium |
63 | 2 | 28 | ||
64 | 3 | [ Chris Townsend ] | 29 | [ Chris Townsend ] |
65 | 4 | 30 | ||
66 | === modified file 'libertine/ContainerConfig.cpp' | |||
67 | --- libertine/ContainerConfig.cpp 2016-03-10 21:33:25 +0000 | |||
68 | +++ libertine/ContainerConfig.cpp 2016-04-25 17:15:41 +0000 | |||
69 | @@ -3,7 +3,7 @@ | |||
70 | 3 | * @brief Libertine Manager containers configuration module | 3 | * @brief Libertine Manager containers configuration module |
71 | 4 | */ | 4 | */ |
72 | 5 | /* | 5 | /* |
74 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
75 | 7 | * | 7 | * |
76 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
77 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
78 | @@ -147,6 +147,7 @@ | |||
79 | 147 | { QObject::tr("new"), ContainerConfig::InstallStatus::New }, | 147 | { QObject::tr("new"), ContainerConfig::InstallStatus::New }, |
80 | 148 | { QObject::tr("installing"), ContainerConfig::InstallStatus::Installing }, | 148 | { QObject::tr("installing"), ContainerConfig::InstallStatus::Installing }, |
81 | 149 | { QObject::tr("ready"), ContainerConfig::InstallStatus::Ready }, | 149 | { QObject::tr("ready"), ContainerConfig::InstallStatus::Ready }, |
82 | 150 | { QObject::tr("updating"), ContainerConfig::InstallStatus::Updating }, | ||
83 | 150 | { QObject::tr("removing"), ContainerConfig::InstallStatus::Removing }, | 151 | { QObject::tr("removing"), ContainerConfig::InstallStatus::Removing }, |
84 | 151 | { QObject::tr("removed"), ContainerConfig::InstallStatus::Removed }, | 152 | { QObject::tr("removed"), ContainerConfig::InstallStatus::Removed }, |
85 | 152 | { QObject::tr("failed"), ContainerConfig::InstallStatus::Failed }, | 153 | { QObject::tr("failed"), ContainerConfig::InstallStatus::Failed }, |
86 | 153 | 154 | ||
87 | === modified file 'libertine/ContainerConfig.h' | |||
88 | --- libertine/ContainerConfig.h 2016-03-10 21:33:25 +0000 | |||
89 | +++ libertine/ContainerConfig.h 2016-04-25 17:15:41 +0000 | |||
90 | @@ -3,7 +3,7 @@ | |||
91 | 3 | * @brief Libertine Manager containers configuration module | 3 | * @brief Libertine Manager containers configuration module |
92 | 4 | */ | 4 | */ |
93 | 5 | /* | 5 | /* |
95 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
96 | 7 | * | 7 | * |
97 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
98 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
99 | @@ -88,7 +88,7 @@ | |||
100 | 88 | public: | 88 | public: |
101 | 89 | /** The container's current install state. */ | 89 | /** The container's current install state. */ |
102 | 90 | enum class InstallStatus | 90 | enum class InstallStatus |
104 | 91 | { New, Installing, Ready, Removing, Removed, Failed }; | 91 | { New, Installing, Ready, Updating, Removing, Removed, Failed }; |
105 | 92 | 92 | ||
106 | 93 | 93 | ||
107 | 94 | public: | 94 | public: |
108 | 95 | 95 | ||
109 | === modified file 'libertine/ContainerManager.cpp' | |||
110 | --- libertine/ContainerManager.cpp 2016-04-01 17:48:28 +0000 | |||
111 | +++ libertine/ContainerManager.cpp 2016-04-25 17:15:41 +0000 | |||
112 | @@ -3,7 +3,7 @@ | |||
113 | 3 | * @brief Threaded Libertine container manager | 3 | * @brief Threaded Libertine container manager |
114 | 4 | */ | 4 | */ |
115 | 5 | /* | 5 | /* |
117 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
118 | 7 | * | 7 | * |
119 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
120 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
121 | @@ -289,7 +289,7 @@ | |||
122 | 289 | result = false; | 289 | result = false; |
123 | 290 | } | 290 | } |
124 | 291 | 291 | ||
126 | 292 | emit finishedInstall(result, QString(error_msg)); | 292 | emit finishedInstall(package_name, result, QString(error_msg)); |
127 | 293 | emit finished(); | 293 | emit finished(); |
128 | 294 | quit(); | 294 | quit(); |
129 | 295 | } | 295 | } |
130 | @@ -319,7 +319,7 @@ | |||
131 | 319 | result = false; | 319 | result = false; |
132 | 320 | } | 320 | } |
133 | 321 | 321 | ||
135 | 322 | emit finishedRemove(result, QString(error_msg)); | 322 | emit finishedRemove(package_name, result, QString(error_msg)); |
136 | 323 | emit finished(); | 323 | emit finished(); |
137 | 324 | quit(); | 324 | quit(); |
138 | 325 | } | 325 | } |
139 | 326 | 326 | ||
140 | === modified file 'libertine/ContainerManager.h' | |||
141 | --- libertine/ContainerManager.h 2016-03-16 19:56:23 +0000 | |||
142 | +++ libertine/ContainerManager.h 2016-04-25 17:15:41 +0000 | |||
143 | @@ -3,7 +3,7 @@ | |||
144 | 3 | * @brief Threaded Libertine container manager | 3 | * @brief Threaded Libertine container manager |
145 | 4 | */ | 4 | */ |
146 | 5 | /* | 5 | /* |
148 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
149 | 7 | * | 7 | * |
150 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
151 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
152 | @@ -150,8 +150,8 @@ | |||
153 | 150 | void dataListChanged(); | 150 | void dataListChanged(); |
154 | 151 | void finished(); | 151 | void finished(); |
155 | 152 | void finishedDestroy(QString const& container_id); | 152 | void finishedDestroy(QString const& container_id); |
158 | 153 | void finishedInstall(bool result, QString const& error_msg); | 153 | void finishedInstall(QString const& package_name, bool result, QString const& error_msg); |
159 | 154 | void finishedRemove(bool result, QString const& error_msg); | 154 | void finishedRemove(QString const& package_name, bool result, QString const& error_msg); |
160 | 155 | void finishedSearch(bool result, QList<QString> packageList); | 155 | void finishedSearch(bool result, QList<QString> packageList); |
161 | 156 | void finishedCommand(QString const& command_output); | 156 | void finishedCommand(QString const& command_output); |
162 | 157 | void finishedConfigure(bool result, QString const& error_msg); | 157 | void finishedConfigure(bool result, QString const& error_msg); |
163 | 158 | 158 | ||
164 | === modified file 'libertine/main.cpp' | |||
165 | --- libertine/main.cpp 2015-05-13 13:42:12 +0000 | |||
166 | +++ libertine/main.cpp 2016-04-25 17:15:41 +0000 | |||
167 | @@ -19,10 +19,18 @@ | |||
168 | 19 | #include "libertine/config.h" | 19 | #include "libertine/config.h" |
169 | 20 | #include "libertine/libertine.h" | 20 | #include "libertine/libertine.h" |
170 | 21 | 21 | ||
171 | 22 | #include <unistd.h> | ||
172 | 23 | #include <QtCore/QDebug> | ||
173 | 22 | 24 | ||
174 | 23 | int | 25 | int |
175 | 24 | main(int argc, char* argv[]) | 26 | main(int argc, char* argv[]) |
176 | 25 | { | 27 | { |
177 | 28 | if (!geteuid()) | ||
178 | 29 | { | ||
179 | 30 | qWarning() << "Please do not run " LIBERTINE_APPLICATION_NAME " using \'sudo\'."; | ||
180 | 31 | exit(1); | ||
181 | 32 | } | ||
182 | 33 | |||
183 | 26 | Libertine app(argc, argv); | 34 | Libertine app(argc, argv); |
184 | 27 | return app.exec(); | 35 | return app.exec(); |
185 | 28 | } | 36 | } |
186 | 29 | 37 | ||
187 | === removed file 'libertine/qml/ContainerApps.qml' | |||
188 | --- libertine/qml/ContainerApps.qml 2015-07-09 15:22:37 +0000 | |||
189 | +++ libertine/qml/ContainerApps.qml 1970-01-01 00:00:00 +0000 | |||
190 | @@ -1,27 +0,0 @@ | |||
191 | 1 | /** | ||
192 | 2 | * @file ContainerApps.qml | ||
193 | 3 | * @brief Libertine container apps data source | ||
194 | 4 | */ | ||
195 | 5 | /* | ||
196 | 6 | * Copyright 2015 Canonical Ltd | ||
197 | 7 | * | ||
198 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | ||
199 | 9 | * the terms of the GNU General Public License, version 3, as published by the | ||
200 | 10 | * Free Software Foundation. | ||
201 | 11 | * | ||
202 | 12 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
203 | 13 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
204 | 14 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
205 | 15 | * | ||
206 | 16 | * You should have received a copy of the GNU General Public License | ||
207 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
208 | 18 | */ | ||
209 | 19 | import QtQuick 2.4 | ||
210 | 20 | |||
211 | 21 | Item { | ||
212 | 22 | function are_apps_installed(containerId) { | ||
213 | 23 | var documentIds = {} | ||
214 | 24 | |||
215 | 25 | return documentIds.length > 0 | ||
216 | 26 | } | ||
217 | 27 | } | ||
218 | 28 | 0 | ||
219 | === modified file 'libertine/qml/ContainerInfoView.qml' | |||
220 | --- libertine/qml/ContainerInfoView.qml 2016-04-07 12:45:29 +0000 | |||
221 | +++ libertine/qml/ContainerInfoView.qml 2016-04-25 17:15:41 +0000 | |||
222 | @@ -25,7 +25,7 @@ | |||
223 | 25 | 25 | ||
224 | 26 | Page { | 26 | Page { |
225 | 27 | id: containerInfoView | 27 | id: containerInfoView |
227 | 28 | title: i18n.tr("Container information for %1").arg(mainView.currentContainer) | 28 | title: i18n.tr("Container information for %1").arg(containerConfigList.getContainerName(mainView.currentContainer)) |
228 | 29 | property string currentContainer: mainView.currentContainer | 29 | property string currentContainer: mainView.currentContainer |
229 | 30 | property string containerDistroText: containerConfigList.getContainerDistro(currentContainer) | 30 | property string containerDistroText: containerConfigList.getContainerDistro(currentContainer) |
230 | 31 | property string containerNameText: containerConfigList.getContainerName(currentContainer) | 31 | property string containerNameText: containerConfigList.getContainerName(currentContainer) |
231 | 32 | 32 | ||
232 | === modified file 'libertine/qml/ContainersView.qml' | |||
233 | --- libertine/qml/ContainersView.qml 2016-03-16 19:56:23 +0000 | |||
234 | +++ libertine/qml/ContainersView.qml 2016-04-25 17:15:41 +0000 | |||
235 | @@ -45,21 +45,25 @@ | |||
236 | 45 | model: containerConfigList | 45 | model: containerConfigList |
237 | 46 | 46 | ||
238 | 47 | delegate: ListItem { | 47 | delegate: ListItem { |
239 | 48 | Label { | ||
240 | 49 | text: name | ||
241 | 50 | anchors { | ||
242 | 51 | verticalCenter: parent.verticalCenter | ||
243 | 52 | left: parent.left | ||
244 | 53 | leftMargin: units.gu(2) | ||
245 | 54 | } | ||
246 | 55 | } | ||
247 | 48 | ActivityIndicator { | 56 | ActivityIndicator { |
248 | 49 | id: containerActivity | 57 | id: containerActivity |
250 | 50 | anchors.verticalCenter: parent.verticalCenter | 58 | anchors { |
251 | 59 | verticalCenter: parent.verticalCenter | ||
252 | 60 | right: parent.right | ||
253 | 61 | rightMargin: units.gu(2) | ||
254 | 62 | } | ||
255 | 51 | visible: (installStatus === i18n.tr("installing") || | 63 | visible: (installStatus === i18n.tr("installing") || |
256 | 52 | installStatus === i18n.tr("removing")) ? true : false | 64 | installStatus === i18n.tr("removing")) ? true : false |
257 | 53 | running: containerActivity.visible | 65 | running: containerActivity.visible |
258 | 54 | } | 66 | } |
259 | 55 | Label { | ||
260 | 56 | text: name | ||
261 | 57 | anchors { | ||
262 | 58 | verticalCenter: parent.verticalCenter | ||
263 | 59 | left: containerActivity.running ? containerActivity.right : parent.left | ||
264 | 60 | leftMargin: units.gu(2) | ||
265 | 61 | } | ||
266 | 62 | } | ||
267 | 63 | 67 | ||
268 | 64 | leadingActions: ListItemActions { | 68 | leadingActions: ListItemActions { |
269 | 65 | actions: [ | 69 | actions: [ |
270 | @@ -94,6 +98,8 @@ | |||
271 | 94 | iconName: "edit" | 98 | iconName: "edit" |
272 | 95 | text: i18n.tr("edit") | 99 | text: i18n.tr("edit") |
273 | 96 | description: i18n.tr("Container Apps") | 100 | description: i18n.tr("Container Apps") |
274 | 101 | visible: (installStatus === i18n.tr("ready") || | ||
275 | 102 | installStatus === i18n.tr("updating")) ? true : false | ||
276 | 97 | onTriggered: { | 103 | onTriggered: { |
277 | 98 | mainView.currentContainer = containerId | 104 | mainView.currentContainer = containerId |
278 | 99 | containerAppsList.setContainerApps(mainView.currentContainer) | 105 | containerAppsList.setContainerApps(mainView.currentContainer) |
279 | 100 | 106 | ||
280 | === modified file 'libertine/qml/ExtraArchivesView.qml' | |||
281 | --- libertine/qml/ExtraArchivesView.qml 2016-03-10 21:33:25 +0000 | |||
282 | +++ libertine/qml/ExtraArchivesView.qml 2016-04-25 17:15:41 +0000 | |||
283 | @@ -72,23 +72,28 @@ | |||
284 | 72 | UbuntuListView { | 72 | UbuntuListView { |
285 | 73 | id: extraArchiveList | 73 | id: extraArchiveList |
286 | 74 | anchors.fill: parent | 74 | anchors.fill: parent |
287 | 75 | visible: !containerArchivesList.empty() ? true : false | ||
288 | 75 | model: containerArchivesList | 76 | model: containerArchivesList |
289 | 76 | delegate: ListItem { | 77 | delegate: ListItem { |
290 | 78 | Label { | ||
291 | 79 | anchors { | ||
292 | 80 | verticalCenter: parent.verticalCenter | ||
293 | 81 | left: parent.left | ||
294 | 82 | leftMargin: units.gu(2) | ||
295 | 83 | } | ||
296 | 84 | text: archiveName | ||
297 | 85 | } | ||
298 | 77 | ActivityIndicator { | 86 | ActivityIndicator { |
299 | 78 | id: extraArchiveActivity | 87 | id: extraArchiveActivity |
301 | 79 | anchors.verticalCenter: parent.verticalCenter | 88 | anchors { |
302 | 89 | verticalCenter: parent.verticalCenter | ||
303 | 90 | right: parent.right | ||
304 | 91 | rightMargin: units.gu(2) | ||
305 | 92 | } | ||
306 | 80 | visible: (archiveStatus === i18n.tr("installing") || | 93 | visible: (archiveStatus === i18n.tr("installing") || |
307 | 81 | archiveStatus === i18n.tr("removing")) ? true : false | 94 | archiveStatus === i18n.tr("removing")) ? true : false |
308 | 82 | running: extraArchiveActivity.visible | 95 | running: extraArchiveActivity.visible |
309 | 83 | } | 96 | } |
310 | 84 | Label { | ||
311 | 85 | anchors { | ||
312 | 86 | verticalCenter: parent.verticalCenter | ||
313 | 87 | left: extraArchiveActivity.running ? extraArchiveActivity.right : parent.left | ||
314 | 88 | leftMargin: units.gu(2) | ||
315 | 89 | } | ||
316 | 90 | text: archiveName | ||
317 | 91 | } | ||
318 | 92 | leadingActions: ListItemActions { | 97 | leadingActions: ListItemActions { |
319 | 93 | actions: [ | 98 | actions: [ |
320 | 94 | Action { | 99 | Action { |
321 | @@ -104,6 +109,16 @@ | |||
322 | 104 | } | 109 | } |
323 | 105 | } | 110 | } |
324 | 106 | 111 | ||
325 | 112 | Label { | ||
326 | 113 | id: emptyLabel | ||
327 | 114 | anchors.centerIn: parent | ||
328 | 115 | visible: !extraArchiveList.visible ? true : false | ||
329 | 116 | wrapMode: Text.Wrap | ||
330 | 117 | width: parent.width | ||
331 | 118 | horizontalAlignment: Text.AlignHCenter | ||
332 | 119 | text: i18n.tr("No additional archives and PPA's have been added") | ||
333 | 120 | } | ||
334 | 121 | |||
335 | 107 | function addArchive(archive) { | 122 | function addArchive(archive) { |
336 | 108 | var comp = Qt.createComponent("ContainerManager.qml") | 123 | var comp = Qt.createComponent("ContainerManager.qml") |
337 | 109 | worker = comp.createObject(mainView, {"containerAction": ContainerManagerWorker.Configure, | 124 | worker = comp.createObject(mainView, {"containerAction": ContainerManagerWorker.Configure, |
338 | @@ -154,6 +169,8 @@ | |||
339 | 154 | 169 | ||
340 | 155 | function reloadArchives() { | 170 | function reloadArchives() { |
341 | 156 | containerArchivesList.setContainerArchives(mainView.currentContainer) | 171 | containerArchivesList.setContainerArchives(mainView.currentContainer) |
342 | 172 | |||
343 | 173 | extraArchiveList.visible = !containerArchivesList.empty() ? true : false | ||
344 | 157 | } | 174 | } |
345 | 158 | 175 | ||
346 | 159 | function finishedConfigure(result, error_msg) { | 176 | function finishedConfigure(result, error_msg) { |
347 | 160 | 177 | ||
348 | === modified file 'libertine/qml/HomeView.qml' | |||
349 | --- libertine/qml/HomeView.qml 2016-04-08 20:16:41 +0000 | |||
350 | +++ libertine/qml/HomeView.qml 2016-04-25 17:15:41 +0000 | |||
351 | @@ -24,7 +24,7 @@ | |||
352 | 24 | 24 | ||
353 | 25 | Page { | 25 | Page { |
354 | 26 | id: homeView | 26 | id: homeView |
356 | 27 | title: i18n.tr("Classic Apps - %1").arg(mainView.currentContainer) | 27 | title: i18n.tr("Classic Apps - %1").arg(containerConfigList.getContainerName(mainView.currentContainer)) |
357 | 28 | 28 | ||
358 | 29 | head.actions: [ | 29 | head.actions: [ |
359 | 30 | Action { | 30 | Action { |
360 | @@ -99,15 +99,15 @@ | |||
361 | 99 | ActionSelectionPopover { | 99 | ActionSelectionPopover { |
362 | 100 | actions: ActionList { | 100 | actions: ActionList { |
363 | 101 | Action { | 101 | Action { |
365 | 102 | text: i18n.tr("Configure Container") | 102 | text: i18n.tr("Manage Container") |
366 | 103 | onTriggered: { | 103 | onTriggered: { |
368 | 104 | pageStack.push(Qt.resolvedUrl("ConfigureContainer.qml")) | 104 | pageStack.push(Qt.resolvedUrl("ManageContainer.qml")) |
369 | 105 | } | 105 | } |
370 | 106 | } | 106 | } |
371 | 107 | Action { | 107 | Action { |
373 | 108 | text: i18n.tr("Update Container") | 108 | text: i18n.tr("Container Information") |
374 | 109 | onTriggered: { | 109 | onTriggered: { |
376 | 110 | updateContainer() | 110 | pageStack.push(Qt.resolvedUrl("ContainerInfoView.qml")) |
377 | 111 | } | 111 | } |
378 | 112 | } | 112 | } |
379 | 113 | Action { | 113 | Action { |
380 | @@ -159,27 +159,35 @@ | |||
381 | 159 | 159 | ||
382 | 160 | function reloadAppList() { | 160 | function reloadAppList() { |
383 | 161 | containerAppsList.setContainerApps(mainView.currentContainer) | 161 | containerAppsList.setContainerApps(mainView.currentContainer) |
384 | 162 | |||
385 | 163 | appsList.visible = !containerAppsList.empty() ? true : false | ||
386 | 162 | } | 164 | } |
387 | 163 | 165 | ||
388 | 164 | UbuntuListView { | 166 | UbuntuListView { |
389 | 167 | id: appsList | ||
390 | 165 | anchors.fill: parent | 168 | anchors.fill: parent |
391 | 166 | model: containerAppsList | 169 | model: containerAppsList |
392 | 170 | visible: !containerAppsList.empty() ? true : false | ||
393 | 167 | delegate: ListItem { | 171 | delegate: ListItem { |
394 | 172 | Label { | ||
395 | 173 | text: packageName | ||
396 | 174 | anchors { | ||
397 | 175 | verticalCenter: parent.verticalCenter | ||
398 | 176 | left: parent.left | ||
399 | 177 | leftMargin: units.gu(2) | ||
400 | 178 | } | ||
401 | 179 | } | ||
402 | 168 | ActivityIndicator { | 180 | ActivityIndicator { |
403 | 169 | id: appActivity | 181 | id: appActivity |
405 | 170 | anchors.verticalCenter: parent.verticalCenter | 182 | anchors { |
406 | 183 | verticalCenter: parent.verticalCenter | ||
407 | 184 | right: parent.right | ||
408 | 185 | rightMargin: units.gu(2) | ||
409 | 186 | } | ||
410 | 171 | visible: (appStatus === i18n.tr("installing") || | 187 | visible: (appStatus === i18n.tr("installing") || |
411 | 172 | appStatus === i18n.tr("removing")) ? true : false | 188 | appStatus === i18n.tr("removing")) ? true : false |
412 | 173 | running: appActivity.visible | 189 | running: appActivity.visible |
413 | 174 | } | 190 | } |
414 | 175 | Label { | ||
415 | 176 | text: packageName | ||
416 | 177 | anchors { | ||
417 | 178 | verticalCenter: parent.verticalCenter | ||
418 | 179 | left: appActivity.running ? appActivity.right : parent.left | ||
419 | 180 | leftMargin: units.gu(2) | ||
420 | 181 | } | ||
421 | 182 | } | ||
422 | 183 | leadingActions: ListItemActions { | 191 | leadingActions: ListItemActions { |
423 | 184 | actions: [ | 192 | actions: [ |
424 | 185 | Action { | 193 | Action { |
425 | @@ -189,7 +197,6 @@ | |||
426 | 189 | onTriggered: { | 197 | onTriggered: { |
427 | 190 | mainView.currentPackage = packageName | 198 | mainView.currentPackage = packageName |
428 | 191 | removePackage(packageName) | 199 | removePackage(packageName) |
429 | 192 | pageStack.push(Qt.resolvedUrl("PackageInfoView.qml")) | ||
430 | 193 | } | 200 | } |
431 | 194 | } | 201 | } |
432 | 195 | ] | 202 | ] |
433 | @@ -210,12 +217,14 @@ | |||
434 | 210 | } | 217 | } |
435 | 211 | } | 218 | } |
436 | 212 | 219 | ||
443 | 213 | function updateContainer() { | 220 | Label { |
444 | 214 | var comp = Qt.createComponent("ContainerManager.qml") | 221 | id: emptyLabel |
445 | 215 | var worker = comp.createObject(mainView, {"containerAction": ContainerManagerWorker.Update, | 222 | anchors.centerIn: parent |
446 | 216 | "containerId": mainView.currentContainer, | 223 | visible: !appsList.visible |
447 | 217 | "containerType": containerConfigList.getContainerType(mainView.currentContainer)}) | 224 | wrapMode: Text.Wrap |
448 | 218 | worker.start() | 225 | width: parent.width |
449 | 226 | horizontalAlignment: Text.AlignHCenter | ||
450 | 227 | text: i18n.tr("No packages are installed") | ||
451 | 219 | } | 228 | } |
452 | 220 | 229 | ||
453 | 221 | function installPackage(package_name) { | 230 | function installPackage(package_name) { |
454 | @@ -224,6 +233,7 @@ | |||
455 | 224 | "containerId": mainView.currentContainer, | 233 | "containerId": mainView.currentContainer, |
456 | 225 | "containerType": containerConfigList.getContainerType(mainView.currentContainer), | 234 | "containerType": containerConfigList.getContainerType(mainView.currentContainer), |
457 | 226 | "data": package_name}) | 235 | "data": package_name}) |
458 | 236 | worker.finishedInstall.connect(mainView.packageInstallFinished) | ||
459 | 227 | worker.start() | 237 | worker.start() |
460 | 228 | } | 238 | } |
461 | 229 | 239 | ||
462 | @@ -233,6 +243,7 @@ | |||
463 | 233 | "containerId": mainView.currentContainer, | 243 | "containerId": mainView.currentContainer, |
464 | 234 | "containerType": containerConfigList.getContainerType(mainView.currentContainer), | 244 | "containerType": containerConfigList.getContainerType(mainView.currentContainer), |
465 | 235 | "data": packageName}) | 245 | "data": packageName}) |
466 | 246 | worker.finishedRemove.connect(mainView.packageRemoveFinished) | ||
467 | 236 | worker.start() | 247 | worker.start() |
468 | 237 | } | 248 | } |
469 | 238 | } | 249 | } |
470 | 239 | 250 | ||
471 | === renamed file 'libertine/qml/ConfigureContainer.qml' => 'libertine/qml/ManageContainer.qml' | |||
472 | --- libertine/qml/ConfigureContainer.qml 2016-04-07 20:39:10 +0000 | |||
473 | +++ libertine/qml/ManageContainer.qml 2016-04-25 17:15:41 +0000 | |||
474 | @@ -1,6 +1,6 @@ | |||
475 | 1 | /** | 1 | /** |
478 | 2 | * @file ConfigureContainer.qml | 2 | * @file ManageContainer.qml |
479 | 3 | * @brief Libertine configure container view | 3 | * @brief Libertine manage container view |
480 | 4 | */ | 4 | */ |
481 | 5 | /* | 5 | /* |
482 | 6 | * Copyright 2016 Canonical Ltd | 6 | * Copyright 2016 Canonical Ltd |
483 | @@ -23,8 +23,8 @@ | |||
484 | 23 | 23 | ||
485 | 24 | 24 | ||
486 | 25 | Page { | 25 | Page { |
489 | 26 | id: configureView | 26 | id: manageView |
490 | 27 | title: i18n.tr("Configure %1").arg(mainView.currentContainer) | 27 | title: i18n.tr("Manage %1").arg(containerConfigList.getContainerName(mainView.currentContainer)) |
491 | 28 | 28 | ||
492 | 29 | Column { | 29 | Column { |
493 | 30 | anchors.left: parent.left | 30 | anchors.left: parent.left |
494 | @@ -63,5 +63,54 @@ | |||
495 | 63 | pageStack.push(Qt.resolvedUrl("ExtraArchivesView.qml")) | 63 | pageStack.push(Qt.resolvedUrl("ExtraArchivesView.qml")) |
496 | 64 | } | 64 | } |
497 | 65 | } | 65 | } |
498 | 66 | |||
499 | 67 | ListItem.Standard { | ||
500 | 68 | control: Button { | ||
501 | 69 | id: updateButton | ||
502 | 70 | text: i18n.tr("Update…") | ||
503 | 71 | visible: (containerConfigList.getContainerStatus(mainView.currentContainer) === i18n.tr("ready")) ? true : false | ||
504 | 72 | onClicked: { | ||
505 | 73 | updateContainer() | ||
506 | 74 | } | ||
507 | 75 | } | ||
508 | 76 | ActivityIndicator { | ||
509 | 77 | id: updateActivity | ||
510 | 78 | anchors { | ||
511 | 79 | verticalCenter: parent.verticalCenter | ||
512 | 80 | right: parent.right | ||
513 | 81 | rightMargin: units.gu(2) | ||
514 | 82 | } | ||
515 | 83 | visible: (containerConfigList.getContainerStatus(mainView.currentContainer) === i18n.tr("updating")) ? true : false | ||
516 | 84 | running: updateActivity.visible | ||
517 | 85 | } | ||
518 | 86 | text: i18n.tr("Update container") | ||
519 | 87 | } | ||
520 | 88 | } | ||
521 | 89 | |||
522 | 90 | Component.onCompleted: { | ||
523 | 91 | containerConfigList.configChanged.connect(updateStatus) | ||
524 | 92 | } | ||
525 | 93 | |||
526 | 94 | Component.onDestruction: { | ||
527 | 95 | containerConfigList.configChanged.disconnect(updateStatus) | ||
528 | 96 | } | ||
529 | 97 | |||
530 | 98 | function updateContainer() { | ||
531 | 99 | var comp = Qt.createComponent("ContainerManager.qml") | ||
532 | 100 | var worker = comp.createObject(mainView, {"containerAction": ContainerManagerWorker.Update, | ||
533 | 101 | "containerId": mainView.currentContainer, | ||
534 | 102 | "containerType": containerConfigList.getContainerType(mainView.currentContainer)}) | ||
535 | 103 | worker.start() | ||
536 | 104 | } | ||
537 | 105 | |||
538 | 106 | function updateStatus() { | ||
539 | 107 | if (containerConfigList.getContainerStatus(mainView.currentContainer) === i18n.tr("updating")) { | ||
540 | 108 | updateButton.visible = false | ||
541 | 109 | updateActivity.visible = true | ||
542 | 110 | } | ||
543 | 111 | else if (containerConfigList.getContainerStatus(mainView.currentContainer) === i18n.tr("ready")) { | ||
544 | 112 | updateButton.visible = true | ||
545 | 113 | updateActivity.visible = false | ||
546 | 114 | } | ||
547 | 66 | } | 115 | } |
548 | 67 | } | 116 | } |
549 | 68 | 117 | ||
550 | === modified file 'libertine/qml/PackageInfoView.qml' | |||
551 | --- libertine/qml/PackageInfoView.qml 2016-04-07 19:17:30 +0000 | |||
552 | +++ libertine/qml/PackageInfoView.qml 2016-04-25 17:15:41 +0000 | |||
553 | @@ -29,10 +29,8 @@ | |||
554 | 29 | property string currentContainer: mainView.currentContainer | 29 | property string currentContainer: mainView.currentContainer |
555 | 30 | property var currentPackage: mainView.currentPackage | 30 | property var currentPackage: mainView.currentPackage |
556 | 31 | property var statusText: containerConfigList.getAppStatus(currentContainer, currentPackage) | 31 | property var statusText: containerConfigList.getAppStatus(currentContainer, currentPackage) |
557 | 32 | property var failureReasonText: "" | ||
558 | 33 | property var packageVersionText: i18n.tr("Obtaining package version…") | 32 | property var packageVersionText: i18n.tr("Obtaining package version…") |
559 | 34 | property var worker: null | 33 | property var worker: null |
560 | 35 | property var install_signal: null | ||
561 | 36 | 34 | ||
562 | 37 | 35 | ||
563 | 38 | Flickable { | 36 | Flickable { |
564 | @@ -60,26 +58,10 @@ | |||
565 | 60 | text: statusText | 58 | text: statusText |
566 | 61 | } | 59 | } |
567 | 62 | } | 60 | } |
568 | 63 | |||
569 | 64 | ListItem.Standard { | ||
570 | 65 | id: failureReason | ||
571 | 66 | text: i18n.tr("Failure reason") | ||
572 | 67 | visible: false | ||
573 | 68 | control: Label { | ||
574 | 69 | text: failureReasonText | ||
575 | 70 | wrapMode: Text.Wrap | ||
576 | 71 | width: parent.parent.width/2 | ||
577 | 72 | horizontalAlignment: Qt.AlignRight | ||
578 | 73 | onHeightChanged: updateFailureReasonHeight() | ||
579 | 74 | } | ||
580 | 75 | } | ||
581 | 76 | } | 61 | } |
582 | 77 | } | 62 | } |
583 | 78 | 63 | ||
584 | 79 | Component.onCompleted: { | 64 | Component.onCompleted: { |
585 | 80 | if (install_signal) { | ||
586 | 81 | install_signal.connect(installFinished) | ||
587 | 82 | } | ||
588 | 83 | containerConfigList.configChanged.connect(reloadStatus) | 65 | containerConfigList.configChanged.connect(reloadStatus) |
589 | 84 | var command = "apt-cache policy " + currentPackage | 66 | var command = "apt-cache policy " + currentPackage |
590 | 85 | var comp = Qt.createComponent("ContainerManager.qml") | 67 | var comp = Qt.createComponent("ContainerManager.qml") |
591 | @@ -94,13 +76,6 @@ | |||
592 | 94 | Component.onDestruction: { | 76 | Component.onDestruction: { |
593 | 95 | containerConfigList.configChanged.disconnect(reloadStatus) | 77 | containerConfigList.configChanged.disconnect(reloadStatus) |
594 | 96 | worker.finishedCommand.disconnect(getPackageVersion) | 78 | worker.finishedCommand.disconnect(getPackageVersion) |
595 | 97 | if (install_signal) { | ||
596 | 98 | install_signal.disconnect(installFinished) | ||
597 | 99 | } | ||
598 | 100 | } | ||
599 | 101 | |||
600 | 102 | function updateFailureReasonHeight() { | ||
601 | 103 | failureReason.height = Math.max(failureReason.control.height + 10, 48) | ||
602 | 104 | } | 79 | } |
603 | 105 | 80 | ||
604 | 106 | function reloadStatus() { | 81 | function reloadStatus() { |
605 | @@ -114,13 +89,4 @@ | |||
606 | 114 | function getPackageVersion(command_output) { | 89 | function getPackageVersion(command_output) { |
607 | 115 | packageVersionText = containerConfigList.getAppVersion(command_output) | 90 | packageVersionText = containerConfigList.getAppVersion(command_output) |
608 | 116 | } | 91 | } |
609 | 117 | |||
610 | 118 | function installFinished(success, error_msg) { | ||
611 | 119 | if (!success) { | ||
612 | 120 | statusText = i18n.tr("failed") | ||
613 | 121 | failureReasonText = error_msg | ||
614 | 122 | failureReason.visible = true | ||
615 | 123 | } | ||
616 | 124 | install_signal.disconnect(installFinished) | ||
617 | 125 | } | ||
618 | 126 | } | 92 | } |
619 | 127 | 93 | ||
620 | === added file 'libertine/qml/PackageOperationFailureDialog.qml' | |||
621 | --- libertine/qml/PackageOperationFailureDialog.qml 1970-01-01 00:00:00 +0000 | |||
622 | +++ libertine/qml/PackageOperationFailureDialog.qml 2016-04-25 17:15:41 +0000 | |||
623 | @@ -0,0 +1,36 @@ | |||
624 | 1 | /** | ||
625 | 2 | * @file PackageOperationFailureDialog.qml | ||
626 | 3 | * @brief Libertine package operation failure dialog | ||
627 | 4 | */ | ||
628 | 5 | /* | ||
629 | 6 | * Copyright 2016 Canonical Ltd | ||
630 | 7 | * | ||
631 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | ||
632 | 9 | * the terms of the GNU General Public License, version 3, as published by the | ||
633 | 10 | * Free Software Foundation. | ||
634 | 11 | * | ||
635 | 12 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
636 | 13 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
637 | 14 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
638 | 15 | * | ||
639 | 16 | * You should have received a copy of the GNU General Public License | ||
640 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
641 | 18 | */ | ||
642 | 19 | import QtQuick 2.4 | ||
643 | 20 | import Ubuntu.Components 1.2 | ||
644 | 21 | import Ubuntu.Components.Popups 1.2 | ||
645 | 22 | |||
646 | 23 | Dialog { | ||
647 | 24 | id: packageOperationFailedDialog | ||
648 | 25 | property var package_name: null | ||
649 | 26 | property var error_msg: null | ||
650 | 27 | property var operation: null // Either "installing" or "removing" | ||
651 | 28 | |||
652 | 29 | title: i18n.tr("Failure %1 the %2 package.").arg(operation).arg(package_name) | ||
653 | 30 | text: error_msg | ||
654 | 31 | |||
655 | 32 | Button { | ||
656 | 33 | text: i18n.tr("Dismiss") | ||
657 | 34 | onClicked: PopupUtils.close(packageOperationFailedDialog) | ||
658 | 35 | } | ||
659 | 36 | } | ||
660 | 0 | 37 | ||
661 | === modified file 'libertine/qml/SearchResultsView.qml' | |||
662 | --- libertine/qml/SearchResultsView.qml 2016-03-16 19:56:23 +0000 | |||
663 | +++ libertine/qml/SearchResultsView.qml 2016-04-25 17:15:41 +0000 | |||
664 | @@ -83,6 +83,8 @@ | |||
665 | 83 | anchors { | 83 | anchors { |
666 | 84 | top: parent.top | 84 | top: parent.top |
667 | 85 | topMargin: units.gu(2) | 85 | topMargin: units.gu(2) |
668 | 86 | left: parent.left | ||
669 | 87 | leftMargin: units.gu(2) | ||
670 | 86 | } | 88 | } |
671 | 87 | } | 89 | } |
672 | 88 | Label { | 90 | Label { |
673 | 89 | 91 | ||
674 | === modified file 'libertine/qml/libertine.qml' | |||
675 | --- libertine/qml/libertine.qml 2016-01-20 17:34:19 +0000 | |||
676 | +++ libertine/qml/libertine.qml 2016-04-25 17:15:41 +0000 | |||
677 | @@ -3,7 +3,7 @@ | |||
678 | 3 | * @brief Libertine app main view. | 3 | * @brief Libertine app main view. |
679 | 4 | */ | 4 | */ |
680 | 5 | /* | 5 | /* |
682 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
683 | 7 | * | 7 | * |
684 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
685 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
686 | @@ -18,6 +18,7 @@ | |||
687 | 18 | */ | 18 | */ |
688 | 19 | import QtQuick 2.4 | 19 | import QtQuick 2.4 |
689 | 20 | import Ubuntu.Components 1.2 | 20 | import Ubuntu.Components 1.2 |
690 | 21 | import Ubuntu.Components.Popups 1.2 | ||
691 | 21 | 22 | ||
692 | 22 | 23 | ||
693 | 23 | MainView { | 24 | MainView { |
694 | @@ -29,6 +30,9 @@ | |||
695 | 29 | property var currentContainer: undefined | 30 | property var currentContainer: undefined |
696 | 30 | property var currentPackage: undefined | 31 | property var currentPackage: undefined |
697 | 31 | 32 | ||
698 | 33 | signal packageInstallFinished(string package_name, bool result, string message) | ||
699 | 34 | signal packageRemoveFinished(string package_name, bool result, string message) | ||
700 | 35 | |||
701 | 32 | PageStack { | 36 | PageStack { |
702 | 33 | id: pageStack | 37 | id: pageStack |
703 | 34 | } | 38 | } |
704 | @@ -47,4 +51,18 @@ | |||
705 | 47 | pageStack.push(Qt.resolvedUrl("WelcomeView.qml")) | 51 | pageStack.push(Qt.resolvedUrl("WelcomeView.qml")) |
706 | 48 | } | 52 | } |
707 | 49 | } | 53 | } |
708 | 54 | |||
709 | 55 | onPackageInstallFinished: { | ||
710 | 56 | if (!result) { | ||
711 | 57 | PopupUtils.open(Qt.resolvedUrl("PackageOperationFailureDialog.qml"), null, | ||
712 | 58 | {"package_name": package_name, "error_msg": message, "operation": i18n.tr("installing")}) | ||
713 | 59 | } | ||
714 | 60 | } | ||
715 | 61 | |||
716 | 62 | onPackageRemoveFinished: { | ||
717 | 63 | if (!result) { | ||
718 | 64 | PopupUtils.open(Qt.resolvedUrl("PackageOperationFailureDialog.qml"), null, | ||
719 | 65 | {"package_name": package_name, "error_msg": message, "operation": i18n.tr("removing")}) | ||
720 | 66 | } | ||
721 | 67 | } | ||
722 | 50 | } | 68 | } |
723 | 51 | 69 | ||
724 | === modified file 'po/en_US.po' | |||
725 | --- po/en_US.po 2016-04-08 20:16:41 +0000 | |||
726 | +++ po/en_US.po 2016-04-25 17:15:41 +0000 | |||
727 | @@ -7,7 +7,7 @@ | |||
728 | 7 | msgstr "" | 7 | msgstr "" |
729 | 8 | "Project-Id-Version: PACKAGE VERSION\n" | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
730 | 9 | "Report-Msgid-Bugs-To: \n" | 9 | "Report-Msgid-Bugs-To: \n" |
732 | 10 | "POT-Creation-Date: 2016-04-08 16:01-0400\n" | 10 | "POT-Creation-Date: 2016-04-22 09:44-0400\n" |
733 | 11 | "PO-Revision-Date: 2016-03-21 10:21-0400\n" | 11 | "PO-Revision-Date: 2016-03-21 10:21-0400\n" |
734 | 12 | "Last-Translator: Chris Townsend <christopher.townsend@canonical.com>\n" | 12 | "Last-Translator: Chris Townsend <christopher.townsend@canonical.com>\n" |
735 | 13 | "Language-Team: English\n" | 13 | "Language-Team: English\n" |
736 | @@ -25,7 +25,7 @@ | |||
737 | 25 | msgid "Add additional PPA" | 25 | msgid "Add additional PPA" |
738 | 26 | msgstr "" | 26 | msgstr "" |
739 | 27 | 27 | ||
741 | 28 | #: ../libertine/qml/ExtraArchivesView.qml:133 | 28 | #: ../libertine/qml/ExtraArchivesView.qml:148 |
742 | 29 | msgid "Adding archive failed" | 29 | msgid "Adding archive failed" |
743 | 30 | msgstr "" | 30 | msgstr "" |
744 | 31 | 31 | ||
745 | @@ -33,7 +33,7 @@ | |||
746 | 33 | msgid "Additional Archives and PPAs" | 33 | msgid "Additional Archives and PPAs" |
747 | 34 | msgstr "" | 34 | msgstr "" |
748 | 35 | 35 | ||
750 | 36 | #: ../libertine/qml/ConfigureContainer.qml:59 | 36 | #: ../libertine/qml/ManageContainer.qml:59 |
751 | 37 | msgid "Additional archives and PPAs" | 37 | msgid "Additional archives and PPAs" |
752 | 38 | msgstr "" | 38 | msgstr "" |
753 | 39 | 39 | ||
754 | @@ -41,14 +41,14 @@ | |||
755 | 41 | msgid "Authentication required" | 41 | msgid "Authentication required" |
756 | 42 | msgstr "" | 42 | msgstr "" |
757 | 43 | 43 | ||
759 | 44 | #: ../libertine/qml/DebianPackagePicker.qml:7 | 44 | #: ../libertine/qml/DebianPackagePicker.qml:26 |
760 | 45 | msgid "Available Debian Packages to Install" | 45 | msgid "Available Debian Packages to Install" |
761 | 46 | msgstr "" | 46 | msgstr "" |
762 | 47 | 47 | ||
763 | 48 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 | ||
764 | 49 | #: ../libertine/qml/ContainerPasswordDialog.qml:70 | ||
765 | 48 | #: ../libertine/qml/SearchPackagesDialog.qml:57 | 50 | #: ../libertine/qml/SearchPackagesDialog.qml:57 |
766 | 49 | #: ../libertine/qml/ContainerPasswordDialog.qml:70 | ||
767 | 50 | #: ../libertine/qml/HomeView.qml:86 ../libertine/qml/ExtraArchivesView.qml:62 | 51 | #: ../libertine/qml/HomeView.qml:86 ../libertine/qml/ExtraArchivesView.qml:62 |
768 | 51 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 | ||
769 | 52 | msgid "Cancel" | 52 | msgid "Cancel" |
770 | 53 | msgstr "" | 53 | msgstr "" |
771 | 54 | 54 | ||
772 | @@ -60,27 +60,24 @@ | |||
773 | 60 | msgid "Classic Apps - %1" | 60 | msgid "Classic Apps - %1" |
774 | 61 | msgstr "Classic Apps - %1" | 61 | msgstr "Classic Apps - %1" |
775 | 62 | 62 | ||
776 | 63 | #: ../libertine/qml/ConfigureContainer.qml:27 | ||
777 | 64 | msgid "Configure %1" | ||
778 | 65 | msgstr "Configure %1" | ||
779 | 66 | |||
780 | 67 | #: ../libertine/qml/HomeView.qml:102 | ||
781 | 68 | msgid "Configure Container" | ||
782 | 69 | msgstr "Configure Container" | ||
783 | 70 | |||
784 | 71 | #: ../libertine/qml/ContainerOptionsDialog.qml:28 | 63 | #: ../libertine/qml/ContainerOptionsDialog.qml:28 |
785 | 72 | #, fuzzy | 64 | #, fuzzy |
786 | 73 | msgid "Configure options for container creation." | 65 | msgid "Configure options for container creation." |
787 | 74 | msgstr "Configure Container" | 66 | msgstr "Configure Container" |
788 | 75 | 67 | ||
790 | 76 | #: ../libertine/qml/ContainersView.qml:96 | 68 | #: ../libertine/qml/ContainersView.qml:100 |
791 | 77 | msgid "Container Apps" | 69 | msgid "Container Apps" |
792 | 78 | msgstr "Container Apps" | 70 | msgstr "Container Apps" |
793 | 79 | 71 | ||
795 | 80 | #: ../libertine/qml/ContainersView.qml:87 | 72 | #: ../libertine/qml/ContainersView.qml:91 |
796 | 81 | msgid "Container Info" | 73 | msgid "Container Info" |
797 | 82 | msgstr "Container Info" | 74 | msgstr "Container Info" |
798 | 83 | 75 | ||
799 | 76 | #: ../libertine/qml/HomeView.qml:108 | ||
800 | 77 | #, fuzzy | ||
801 | 78 | msgid "Container Information" | ||
802 | 79 | msgstr "Container information for %1" | ||
803 | 80 | |||
804 | 84 | #: ../libertine/qml/ContainerOptionsDialog.qml:27 | 81 | #: ../libertine/qml/ContainerOptionsDialog.qml:27 |
805 | 85 | #, fuzzy | 82 | #, fuzzy |
806 | 86 | msgid "Container Options" | 83 | msgid "Container Options" |
807 | @@ -90,11 +87,12 @@ | |||
808 | 90 | msgid "Container information for %1" | 87 | msgid "Container information for %1" |
809 | 91 | msgstr "Container information for %1" | 88 | msgstr "Container information for %1" |
810 | 92 | 89 | ||
812 | 93 | #: ../libertine/qml/ContainersView.qml:69 | 90 | #: ../libertine/qml/ContainersView.qml:73 |
813 | 94 | msgid "Delete Container" | 91 | msgid "Delete Container" |
814 | 95 | msgstr "Delete Container" | 92 | msgstr "Delete Container" |
815 | 96 | 93 | ||
817 | 97 | #: ../libertine/qml/ExtraArchivesView.qml:137 | 94 | #: ../libertine/qml/PackageOperationFailureDialog.qml:33 |
818 | 95 | #: ../libertine/qml/ExtraArchivesView.qml:152 | ||
819 | 98 | msgid "Dismiss" | 96 | msgid "Dismiss" |
820 | 99 | msgstr "" | 97 | msgstr "" |
821 | 100 | 98 | ||
822 | @@ -121,9 +119,11 @@ | |||
823 | 121 | msgid "Enter package name or Debian file" | 119 | msgid "Enter package name or Debian file" |
824 | 122 | msgstr "Please enter the exact package name of the app to install:" | 120 | msgstr "Please enter the exact package name of the app to install:" |
825 | 123 | 121 | ||
829 | 124 | #: ../libertine/qml/PackageInfoView.qml:66 | 122 | #. Either "installing" or "removing" |
830 | 125 | msgid "Failure reason" | 123 | #: ../libertine/qml/PackageOperationFailureDialog.qml:29 |
831 | 126 | msgstr "" | 124 | #, fuzzy |
832 | 125 | msgid "Failure %1 the %2 package." | ||
833 | 126 | msgstr "Information for the %1 package" | ||
834 | 127 | 127 | ||
835 | 128 | #: ../libertine/qml/ContainerInfoView.qml:48 | 128 | #: ../libertine/qml/ContainerInfoView.qml:48 |
836 | 129 | msgid "ID" | 129 | msgid "ID" |
837 | @@ -137,8 +137,8 @@ | |||
838 | 137 | msgid "Install" | 137 | msgid "Install" |
839 | 138 | msgstr "Install" | 138 | msgstr "Install" |
840 | 139 | 139 | ||
841 | 140 | #: ../libertine/qml/DebianPackagePicker.qml:53 | ||
842 | 140 | #: ../libertine/qml/SearchResults.qml:42 | 141 | #: ../libertine/qml/SearchResults.qml:42 |
843 | 141 | #: ../libertine/qml/DebianPackagePicker.qml:34 | ||
844 | 142 | msgid "Install Package" | 142 | msgid "Install Package" |
845 | 143 | msgstr "Install Package" | 143 | msgstr "Install Package" |
846 | 144 | 144 | ||
847 | @@ -147,7 +147,7 @@ | |||
848 | 147 | msgid "Install new package" | 147 | msgid "Install new package" |
849 | 148 | msgstr "Install Package" | 148 | msgstr "Install Package" |
850 | 149 | 149 | ||
852 | 150 | #: ../libertine/qml/PackageInfoView.qml:58 | 150 | #: ../libertine/qml/PackageInfoView.qml:56 |
853 | 151 | #, fuzzy | 151 | #, fuzzy |
854 | 152 | msgid "Install status" | 152 | msgid "Install status" |
855 | 153 | msgstr "Install status: %1" | 153 | msgstr "Install status: %1" |
856 | @@ -156,6 +156,15 @@ | |||
857 | 156 | msgid "Invalid password entered" | 156 | msgid "Invalid password entered" |
858 | 157 | msgstr "" | 157 | msgstr "" |
859 | 158 | 158 | ||
860 | 159 | #: ../libertine/qml/ManageContainer.qml:27 | ||
861 | 160 | msgid "Manage %1" | ||
862 | 161 | msgstr "" | ||
863 | 162 | |||
864 | 163 | #: ../libertine/qml/HomeView.qml:102 | ||
865 | 164 | #, fuzzy | ||
866 | 165 | msgid "Manage Container" | ||
867 | 166 | msgstr "My Containers" | ||
868 | 167 | |||
869 | 159 | #: ../libertine/qml/ContainersView.qml:31 | 168 | #: ../libertine/qml/ContainersView.qml:31 |
870 | 160 | msgid "My Containers" | 169 | msgid "My Containers" |
871 | 161 | msgstr "My Containers" | 170 | msgstr "My Containers" |
872 | @@ -165,7 +174,7 @@ | |||
873 | 165 | msgid "Name" | 174 | msgid "Name" |
874 | 166 | msgstr "Name: %1" | 175 | msgstr "Name: %1" |
875 | 167 | 176 | ||
877 | 168 | #: ../libertine/qml/DebianPackagePicker.qml:53 | 177 | #: ../libertine/qml/DebianPackagePicker.qml:72 |
878 | 169 | msgid "No Debian packages available" | 178 | msgid "No Debian packages available" |
879 | 170 | msgstr "" | 179 | msgstr "" |
880 | 171 | 180 | ||
881 | @@ -174,18 +183,27 @@ | |||
882 | 174 | msgid "No Search Results Found" | 183 | msgid "No Search Results Found" |
883 | 175 | msgstr "No search results for %1." | 184 | msgstr "No search results for %1." |
884 | 176 | 185 | ||
885 | 186 | #: ../libertine/qml/ExtraArchivesView.qml:119 | ||
886 | 187 | msgid "No additional archives and PPA's have been added" | ||
887 | 188 | msgstr "" | ||
888 | 189 | |||
889 | 190 | #: ../libertine/qml/HomeView.qml:227 | ||
890 | 191 | #, fuzzy | ||
891 | 192 | msgid "No packages are installed" | ||
892 | 193 | msgstr "Please enter the exact package name of the app to install:" | ||
893 | 194 | |||
894 | 195 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 | ||
895 | 196 | #: ../libertine/qml/ContainerPasswordDialog.qml:52 | ||
896 | 177 | #: ../libertine/qml/SearchPackagesDialog.qml:39 | 197 | #: ../libertine/qml/SearchPackagesDialog.qml:39 |
897 | 178 | #: ../libertine/qml/ContainerPasswordDialog.qml:52 | ||
898 | 179 | #: ../libertine/qml/HomeView.qml:65 ../libertine/qml/ExtraArchivesView.qml:54 | 198 | #: ../libertine/qml/HomeView.qml:65 ../libertine/qml/ExtraArchivesView.qml:54 |
899 | 180 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 | ||
900 | 181 | msgid "OK" | 199 | msgid "OK" |
901 | 182 | msgstr "" | 200 | msgstr "" |
902 | 183 | 201 | ||
904 | 184 | #: ../libertine/qml/PackageInfoView.qml:33 | 202 | #: ../libertine/qml/PackageInfoView.qml:32 |
905 | 185 | msgid "Obtaining package version…" | 203 | msgid "Obtaining package version…" |
906 | 186 | msgstr "Obtaining package version…" | 204 | msgstr "Obtaining package version…" |
907 | 187 | 205 | ||
909 | 188 | #: ../libertine/qml/HomeView.qml:202 | 206 | #: ../libertine/qml/HomeView.qml:209 |
910 | 189 | msgid "Package Info" | 207 | msgid "Package Info" |
911 | 190 | msgstr "Package Info" | 208 | msgstr "Package Info" |
912 | 191 | 209 | ||
913 | @@ -197,7 +215,7 @@ | |||
914 | 197 | msgid "Package name or Debian package path" | 215 | msgid "Package name or Debian package path" |
915 | 198 | msgstr "" | 216 | msgstr "" |
916 | 199 | 217 | ||
918 | 200 | #: ../libertine/qml/PackageInfoView.qml:51 | 218 | #: ../libertine/qml/PackageInfoView.qml:49 |
919 | 201 | #, fuzzy | 219 | #, fuzzy |
920 | 202 | msgid "Package version" | 220 | msgid "Package version" |
921 | 203 | msgstr "Package version: %1" | 221 | msgstr "Package version: %1" |
922 | @@ -206,11 +224,11 @@ | |||
923 | 206 | msgid "Password is required to create a Libertine container" | 224 | msgid "Password is required to create a Libertine container" |
924 | 207 | msgstr "" | 225 | msgstr "" |
925 | 208 | 226 | ||
927 | 209 | #: ../libertine/qml/HomeView.qml:188 | 227 | #: ../libertine/qml/HomeView.qml:196 |
928 | 210 | msgid "Remove Package" | 228 | msgid "Remove Package" |
929 | 211 | msgstr "Remove Package" | 229 | msgstr "Remove Package" |
930 | 212 | 230 | ||
932 | 213 | #: ../libertine/qml/ExtraArchivesView.qml:97 | 231 | #: ../libertine/qml/ExtraArchivesView.qml:102 |
933 | 214 | msgid "Remove extra archive" | 232 | msgid "Remove extra archive" |
934 | 215 | msgstr "" | 233 | msgstr "" |
935 | 216 | 234 | ||
936 | @@ -247,12 +265,12 @@ | |||
937 | 247 | msgid "Search archives for packages" | 265 | msgid "Search archives for packages" |
938 | 248 | msgstr "" | 266 | msgstr "" |
939 | 249 | 267 | ||
940 | 268 | #: ../libertine/qml/SearchResultsView.qml:39 | ||
941 | 250 | #: ../libertine/qml/SearchPackagesDialog.qml:26 | 269 | #: ../libertine/qml/SearchPackagesDialog.qml:26 |
942 | 251 | #: ../libertine/qml/SearchResultsView.qml:39 | ||
943 | 252 | msgid "Search for packages" | 270 | msgid "Search for packages" |
944 | 253 | msgstr "" | 271 | msgstr "" |
945 | 254 | 272 | ||
947 | 255 | #: ../libertine/qml/SearchResultsView.qml:90 | 273 | #: ../libertine/qml/SearchResultsView.qml:92 |
948 | 256 | #, fuzzy | 274 | #, fuzzy |
949 | 257 | msgid "Searching for packages…" | 275 | msgid "Searching for packages…" |
950 | 258 | msgstr "Obtaining package version…" | 276 | msgstr "Obtaining package version…" |
951 | @@ -277,10 +295,15 @@ | |||
952 | 277 | "The %1 package is already installed. Please try a different package name." | 295 | "The %1 package is already installed. Please try a different package name." |
953 | 278 | msgstr "Package %1 already installed. Please try a different package name." | 296 | msgstr "Package %1 already installed. Please try a different package name." |
954 | 279 | 297 | ||
957 | 280 | #: ../libertine/qml/HomeView.qml:108 | 298 | #: ../libertine/qml/ManageContainer.qml:86 |
958 | 281 | msgid "Update Container" | 299 | #, fuzzy |
959 | 300 | msgid "Update container" | ||
960 | 282 | msgstr "Update Container" | 301 | msgstr "Update Container" |
961 | 283 | 302 | ||
962 | 303 | #: ../libertine/qml/ManageContainer.qml:70 | ||
963 | 304 | msgid "Update…" | ||
964 | 305 | msgstr "" | ||
965 | 306 | |||
966 | 284 | #: ../libertine/qml/WelcomeView.qml:27 | 307 | #: ../libertine/qml/WelcomeView.qml:27 |
967 | 285 | msgid "Welcome" | 308 | msgid "Welcome" |
968 | 286 | msgstr "Welcome" | 309 | msgstr "Welcome" |
969 | @@ -308,39 +331,38 @@ | |||
970 | 308 | msgid "container name" | 331 | msgid "container name" |
971 | 309 | msgstr "Container Info" | 332 | msgstr "Container Info" |
972 | 310 | 333 | ||
974 | 311 | #: ../libertine/qml/ContainersView.qml:68 ../libertine/qml/HomeView.qml:187 | 334 | #: ../libertine/qml/ContainersView.qml:72 ../libertine/qml/HomeView.qml:195 |
975 | 312 | msgid "delete" | 335 | msgid "delete" |
976 | 313 | msgstr "delete" | 336 | msgstr "delete" |
977 | 314 | 337 | ||
979 | 315 | #: ../libertine/qml/ContainersView.qml:95 | 338 | #: ../libertine/qml/ContainersView.qml:99 |
980 | 316 | msgid "edit" | 339 | msgid "edit" |
981 | 317 | msgstr "edit" | 340 | msgstr "edit" |
982 | 318 | 341 | ||
985 | 319 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:186 | 342 | #: ../libertine/ContainerConfig.cpp:153 ../libertine/ContainerConfig.cpp:187 |
984 | 320 | #: ../libertine/qml/PackageInfoView.qml:120 | ||
986 | 321 | msgid "failed" | 343 | msgid "failed" |
987 | 322 | msgstr "failed" | 344 | msgstr "failed" |
988 | 323 | 345 | ||
989 | 324 | #: ../libertine/qml/ConfigureContainer.qml:55 | ||
990 | 325 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 | 346 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 |
991 | 347 | #: ../libertine/qml/ManageContainer.qml:55 | ||
992 | 326 | msgid "i386 multiarch support" | 348 | msgid "i386 multiarch support" |
993 | 327 | msgstr "i386 multiarch support" | 349 | msgstr "i386 multiarch support" |
994 | 328 | 350 | ||
996 | 329 | #: ../libertine/qml/ContainersView.qml:86 ../libertine/qml/HomeView.qml:201 | 351 | #: ../libertine/qml/ContainersView.qml:90 ../libertine/qml/HomeView.qml:208 |
997 | 330 | msgid "info" | 352 | msgid "info" |
998 | 331 | msgstr "info" | 353 | msgstr "info" |
999 | 332 | 354 | ||
1001 | 333 | #: ../libertine/ContainerConfig.cpp:185 | 355 | #: ../libertine/ContainerConfig.cpp:186 |
1002 | 334 | msgid "installed" | 356 | msgid "installed" |
1003 | 335 | msgstr "installed" | 357 | msgstr "installed" |
1004 | 336 | 358 | ||
1008 | 337 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:184 | 359 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
1009 | 338 | #: ../libertine/qml/ContainersView.qml:51 ../libertine/qml/HomeView.qml:171 | 360 | #: ../libertine/qml/libertine.qml:58 ../libertine/qml/ContainersView.qml:63 |
1010 | 339 | #: ../libertine/qml/ExtraArchivesView.qml:80 | 361 | #: ../libertine/qml/HomeView.qml:187 ../libertine/qml/ExtraArchivesView.qml:93 |
1011 | 340 | msgid "installing" | 362 | msgid "installing" |
1012 | 341 | msgstr "installing" | 363 | msgstr "installing" |
1013 | 342 | 364 | ||
1015 | 343 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:183 | 365 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
1016 | 344 | msgid "new" | 366 | msgid "new" |
1017 | 345 | msgstr "new" | 367 | msgstr "new" |
1018 | 346 | 368 | ||
1019 | @@ -349,24 +371,26 @@ | |||
1020 | 349 | msgid "password" | 371 | msgid "password" |
1021 | 350 | msgstr "Password" | 372 | msgstr "Password" |
1022 | 351 | 373 | ||
1024 | 352 | #: ../libertine/ContainerConfig.cpp:149 | 374 | #: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:101 |
1025 | 375 | #: ../libertine/qml/ManageContainer.qml:71 | ||
1026 | 376 | #: ../libertine/qml/ManageContainer.qml:111 | ||
1027 | 353 | msgid "ready" | 377 | msgid "ready" |
1028 | 354 | msgstr "ready" | 378 | msgstr "ready" |
1029 | 355 | 379 | ||
1031 | 356 | #: ../libertine/qml/ExtraArchivesView.qml:96 | 380 | #: ../libertine/qml/ExtraArchivesView.qml:101 |
1032 | 357 | #, fuzzy | 381 | #, fuzzy |
1033 | 358 | msgid "remove" | 382 | msgid "remove" |
1034 | 359 | msgstr "removed" | 383 | msgstr "removed" |
1035 | 360 | 384 | ||
1038 | 361 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 | 385 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
1037 | 362 | #: ../libertine/qml/PackageInfoView.qml:110 | ||
1039 | 363 | #: ../libertine/qml/ContainerInfoView.qml:88 | 386 | #: ../libertine/qml/ContainerInfoView.qml:88 |
1040 | 387 | #: ../libertine/qml/PackageInfoView.qml:85 | ||
1041 | 364 | msgid "removed" | 388 | msgid "removed" |
1042 | 365 | msgstr "removed" | 389 | msgstr "removed" |
1043 | 366 | 390 | ||
1047 | 367 | #: ../libertine/ContainerConfig.cpp:150 ../libertine/ContainerConfig.cpp:187 | 391 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
1048 | 368 | #: ../libertine/qml/ContainersView.qml:52 ../libertine/qml/HomeView.qml:172 | 392 | #: ../libertine/qml/libertine.qml:65 ../libertine/qml/ContainersView.qml:64 |
1049 | 369 | #: ../libertine/qml/ExtraArchivesView.qml:81 | 393 | #: ../libertine/qml/HomeView.qml:188 ../libertine/qml/ExtraArchivesView.qml:94 |
1050 | 370 | msgid "removing" | 394 | msgid "removing" |
1051 | 371 | msgstr "removing" | 395 | msgstr "removing" |
1052 | 372 | 396 | ||
1053 | @@ -374,6 +398,18 @@ | |||
1054 | 374 | msgid "search" | 398 | msgid "search" |
1055 | 375 | msgstr "" | 399 | msgstr "" |
1056 | 376 | 400 | ||
1057 | 401 | #: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:102 | ||
1058 | 402 | #: ../libertine/qml/ManageContainer.qml:83 | ||
1059 | 403 | #: ../libertine/qml/ManageContainer.qml:107 | ||
1060 | 404 | msgid "updating" | ||
1061 | 405 | msgstr "" | ||
1062 | 406 | |||
1063 | 407 | #~ msgid "Configure %1" | ||
1064 | 408 | #~ msgstr "Configure %1" | ||
1065 | 409 | |||
1066 | 410 | #~ msgid "Configure Container" | ||
1067 | 411 | #~ msgstr "Configure Container" | ||
1068 | 412 | |||
1069 | 377 | #~ msgid "ID: %1" | 413 | #~ msgid "ID: %1" |
1070 | 378 | #~ msgstr "ID: %1" | 414 | #~ msgstr "ID: %1" |
1071 | 379 | 415 | ||
1072 | 380 | 416 | ||
1073 | === modified file 'po/libertine.pot' | |||
1074 | --- po/libertine.pot 2016-04-08 20:16:41 +0000 | |||
1075 | +++ po/libertine.pot 2016-04-25 17:15:41 +0000 | |||
1076 | @@ -8,7 +8,7 @@ | |||
1077 | 8 | msgstr "" | 8 | msgstr "" |
1078 | 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
1079 | 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
1081 | 11 | "POT-Creation-Date: 2016-04-08 16:01-0400\n" | 11 | "POT-Creation-Date: 2016-04-22 09:44-0400\n" |
1082 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
1083 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
1084 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
1085 | @@ -17,145 +17,83 @@ | |||
1086 | 17 | "Content-Type: text/plain; charset=UTF-8\n" | 17 | "Content-Type: text/plain; charset=UTF-8\n" |
1087 | 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
1088 | 19 | 19 | ||
1090 | 20 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:183 | 20 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
1091 | 21 | msgid "new" | 21 | msgid "new" |
1092 | 22 | msgstr "" | 22 | msgstr "" |
1093 | 23 | 23 | ||
1097 | 24 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:184 | 24 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
1098 | 25 | #: ../libertine/qml/ContainersView.qml:51 ../libertine/qml/HomeView.qml:171 | 25 | #: ../libertine/qml/libertine.qml:58 ../libertine/qml/ContainersView.qml:63 |
1099 | 26 | #: ../libertine/qml/ExtraArchivesView.qml:80 | 26 | #: ../libertine/qml/HomeView.qml:187 ../libertine/qml/ExtraArchivesView.qml:93 |
1100 | 27 | msgid "installing" | 27 | msgid "installing" |
1101 | 28 | msgstr "" | 28 | msgstr "" |
1102 | 29 | 29 | ||
1104 | 30 | #: ../libertine/ContainerConfig.cpp:149 | 30 | #: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:101 |
1105 | 31 | #: ../libertine/qml/ManageContainer.qml:71 | ||
1106 | 32 | #: ../libertine/qml/ManageContainer.qml:111 | ||
1107 | 31 | msgid "ready" | 33 | msgid "ready" |
1108 | 32 | msgstr "" | 34 | msgstr "" |
1109 | 33 | 35 | ||
1113 | 34 | #: ../libertine/ContainerConfig.cpp:150 ../libertine/ContainerConfig.cpp:187 | 36 | #: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:102 |
1114 | 35 | #: ../libertine/qml/ContainersView.qml:52 ../libertine/qml/HomeView.qml:172 | 37 | #: ../libertine/qml/ManageContainer.qml:83 |
1115 | 36 | #: ../libertine/qml/ExtraArchivesView.qml:81 | 38 | #: ../libertine/qml/ManageContainer.qml:107 |
1116 | 39 | msgid "updating" | ||
1117 | 40 | msgstr "" | ||
1118 | 41 | |||
1119 | 42 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 | ||
1120 | 43 | #: ../libertine/qml/libertine.qml:65 ../libertine/qml/ContainersView.qml:64 | ||
1121 | 44 | #: ../libertine/qml/HomeView.qml:188 ../libertine/qml/ExtraArchivesView.qml:94 | ||
1122 | 37 | msgid "removing" | 45 | msgid "removing" |
1123 | 38 | msgstr "" | 46 | msgstr "" |
1124 | 39 | 47 | ||
1127 | 40 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 | 48 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
1126 | 41 | #: ../libertine/qml/PackageInfoView.qml:110 | ||
1128 | 42 | #: ../libertine/qml/ContainerInfoView.qml:88 | 49 | #: ../libertine/qml/ContainerInfoView.qml:88 |
1129 | 50 | #: ../libertine/qml/PackageInfoView.qml:85 | ||
1130 | 43 | msgid "removed" | 51 | msgid "removed" |
1131 | 44 | msgstr "" | 52 | msgstr "" |
1132 | 45 | 53 | ||
1135 | 46 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:186 | 54 | #: ../libertine/ContainerConfig.cpp:153 ../libertine/ContainerConfig.cpp:187 |
1134 | 47 | #: ../libertine/qml/PackageInfoView.qml:120 | ||
1136 | 48 | msgid "failed" | 55 | msgid "failed" |
1137 | 49 | msgstr "" | 56 | msgstr "" |
1138 | 50 | 57 | ||
1140 | 51 | #: ../libertine/ContainerConfig.cpp:185 | 58 | #: ../libertine/ContainerConfig.cpp:186 |
1141 | 52 | msgid "installed" | 59 | msgid "installed" |
1142 | 53 | msgstr "" | 60 | msgstr "" |
1143 | 54 | 61 | ||
1193 | 55 | #: ../libertine/qml/PackageExistsDialog.qml:28 | 62 | #: ../libertine/qml/ContainerOptionsDialog.qml:27 |
1194 | 56 | msgid "The %1 package is already installed." | 63 | msgid "Container Options" |
1195 | 57 | msgstr "" | 64 | msgstr "" |
1196 | 58 | 65 | ||
1197 | 59 | #: ../libertine/qml/PackageExistsDialog.qml:29 | 66 | #: ../libertine/qml/ContainerOptionsDialog.qml:28 |
1198 | 60 | msgid "Search again or return to search results." | 67 | msgid "Configure options for container creation." |
1199 | 61 | msgstr "" | 68 | msgstr "" |
1200 | 62 | 69 | ||
1152 | 63 | #: ../libertine/qml/PackageExistsDialog.qml:33 | ||
1153 | 64 | msgid "Search again" | ||
1154 | 65 | msgstr "" | ||
1155 | 66 | |||
1156 | 67 | #: ../libertine/qml/PackageExistsDialog.qml:43 | ||
1157 | 68 | msgid "Return to search results" | ||
1158 | 69 | msgstr "" | ||
1159 | 70 | |||
1160 | 71 | #: ../libertine/qml/ContainersView.qml:31 | ||
1161 | 72 | msgid "My Containers" | ||
1162 | 73 | msgstr "" | ||
1163 | 74 | |||
1164 | 75 | #: ../libertine/qml/ContainersView.qml:68 ../libertine/qml/HomeView.qml:187 | ||
1165 | 76 | msgid "delete" | ||
1166 | 77 | msgstr "" | ||
1167 | 78 | |||
1168 | 79 | #: ../libertine/qml/ContainersView.qml:69 | ||
1169 | 80 | msgid "Delete Container" | ||
1170 | 81 | msgstr "" | ||
1171 | 82 | |||
1172 | 83 | #: ../libertine/qml/ContainersView.qml:86 ../libertine/qml/HomeView.qml:201 | ||
1173 | 84 | msgid "info" | ||
1174 | 85 | msgstr "" | ||
1175 | 86 | |||
1176 | 87 | #: ../libertine/qml/ContainersView.qml:87 | ||
1177 | 88 | msgid "Container Info" | ||
1178 | 89 | msgstr "" | ||
1179 | 90 | |||
1180 | 91 | #: ../libertine/qml/ContainersView.qml:95 | ||
1181 | 92 | msgid "edit" | ||
1182 | 93 | msgstr "" | ||
1183 | 94 | |||
1184 | 95 | #: ../libertine/qml/ContainersView.qml:96 | ||
1185 | 96 | msgid "Container Apps" | ||
1186 | 97 | msgstr "" | ||
1187 | 98 | |||
1188 | 99 | #: ../libertine/qml/ConfigureContainer.qml:27 | ||
1189 | 100 | msgid "Configure %1" | ||
1190 | 101 | msgstr "" | ||
1191 | 102 | |||
1192 | 103 | #: ../libertine/qml/ConfigureContainer.qml:55 | ||
1201 | 104 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 | 70 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 |
1202 | 71 | #: ../libertine/qml/ManageContainer.qml:55 | ||
1203 | 105 | msgid "i386 multiarch support" | 72 | msgid "i386 multiarch support" |
1204 | 106 | msgstr "" | 73 | msgstr "" |
1205 | 107 | 74 | ||
1223 | 108 | #: ../libertine/qml/ConfigureContainer.qml:59 | 75 | #: ../libertine/qml/ContainerOptionsDialog.qml:50 |
1224 | 109 | msgid "Additional archives and PPAs" | 76 | msgid "Enter or name for the container or leave blank for default name" |
1225 | 110 | msgstr "" | 77 | msgstr "" |
1226 | 111 | 78 | ||
1227 | 112 | #: ../libertine/qml/SearchPackagesDialog.qml:26 | 79 | #: ../libertine/qml/ContainerOptionsDialog.qml:56 |
1228 | 113 | #: ../libertine/qml/SearchResultsView.qml:39 | 80 | msgid "container name" |
1229 | 114 | msgid "Search for packages" | 81 | msgstr "" |
1230 | 115 | msgstr "" | 82 | |
1231 | 116 | 83 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 | |
1232 | 117 | #: ../libertine/qml/SearchPackagesDialog.qml:27 | 84 | #: ../libertine/qml/ContainerPasswordDialog.qml:52 |
1216 | 118 | msgid "Search archives for packages" | ||
1217 | 119 | msgstr "" | ||
1218 | 120 | |||
1219 | 121 | #: ../libertine/qml/SearchPackagesDialog.qml:31 | ||
1220 | 122 | msgid "search" | ||
1221 | 123 | msgstr "" | ||
1222 | 124 | |||
1233 | 125 | #: ../libertine/qml/SearchPackagesDialog.qml:39 | 85 | #: ../libertine/qml/SearchPackagesDialog.qml:39 |
1234 | 126 | #: ../libertine/qml/ContainerPasswordDialog.qml:52 | ||
1235 | 127 | #: ../libertine/qml/HomeView.qml:65 ../libertine/qml/ExtraArchivesView.qml:54 | 86 | #: ../libertine/qml/HomeView.qml:65 ../libertine/qml/ExtraArchivesView.qml:54 |
1236 | 128 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 | ||
1237 | 129 | msgid "OK" | 87 | msgid "OK" |
1238 | 130 | msgstr "" | 88 | msgstr "" |
1239 | 131 | 89 | ||
1240 | 90 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 | ||
1241 | 91 | #: ../libertine/qml/ContainerPasswordDialog.qml:70 | ||
1242 | 132 | #: ../libertine/qml/SearchPackagesDialog.qml:57 | 92 | #: ../libertine/qml/SearchPackagesDialog.qml:57 |
1243 | 133 | #: ../libertine/qml/ContainerPasswordDialog.qml:70 | ||
1244 | 134 | #: ../libertine/qml/HomeView.qml:86 ../libertine/qml/ExtraArchivesView.qml:62 | 93 | #: ../libertine/qml/HomeView.qml:86 ../libertine/qml/ExtraArchivesView.qml:62 |
1245 | 135 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 | ||
1246 | 136 | msgid "Cancel" | 94 | msgid "Cancel" |
1247 | 137 | msgstr "" | 95 | msgstr "" |
1248 | 138 | 96 | ||
1249 | 139 | #: ../libertine/qml/PackageInfoView.qml:28 | ||
1250 | 140 | msgid "Information for the %1 package" | ||
1251 | 141 | msgstr "" | ||
1252 | 142 | |||
1253 | 143 | #: ../libertine/qml/PackageInfoView.qml:33 | ||
1254 | 144 | msgid "Obtaining package version…" | ||
1255 | 145 | msgstr "" | ||
1256 | 146 | |||
1257 | 147 | #: ../libertine/qml/PackageInfoView.qml:51 | ||
1258 | 148 | msgid "Package version" | ||
1259 | 149 | msgstr "" | ||
1260 | 150 | |||
1261 | 151 | #: ../libertine/qml/PackageInfoView.qml:58 | ||
1262 | 152 | msgid "Install status" | ||
1263 | 153 | msgstr "" | ||
1264 | 154 | |||
1265 | 155 | #: ../libertine/qml/PackageInfoView.qml:66 | ||
1266 | 156 | msgid "Failure reason" | ||
1267 | 157 | msgstr "" | ||
1268 | 158 | |||
1269 | 159 | #: ../libertine/qml/SearchResultsView.qml:28 | 97 | #: ../libertine/qml/SearchResultsView.qml:28 |
1270 | 160 | msgid "Package Search Results" | 98 | msgid "Package Search Results" |
1271 | 161 | msgstr "" | 99 | msgstr "" |
1272 | @@ -164,6 +102,11 @@ | |||
1273 | 164 | msgid "Search" | 102 | msgid "Search" |
1274 | 165 | msgstr "" | 103 | msgstr "" |
1275 | 166 | 104 | ||
1276 | 105 | #: ../libertine/qml/SearchResultsView.qml:39 | ||
1277 | 106 | #: ../libertine/qml/SearchPackagesDialog.qml:26 | ||
1278 | 107 | msgid "Search for packages" | ||
1279 | 108 | msgstr "" | ||
1280 | 109 | |||
1281 | 167 | #: ../libertine/qml/SearchResultsView.qml:49 | 110 | #: ../libertine/qml/SearchResultsView.qml:49 |
1282 | 168 | msgid "No Search Results Found" | 111 | msgid "No Search Results Found" |
1283 | 169 | msgstr "" | 112 | msgstr "" |
1284 | @@ -176,20 +119,20 @@ | |||
1285 | 176 | msgid "Return to Apps Page" | 119 | msgid "Return to Apps Page" |
1286 | 177 | msgstr "" | 120 | msgstr "" |
1287 | 178 | 121 | ||
1289 | 179 | #: ../libertine/qml/SearchResultsView.qml:90 | 122 | #: ../libertine/qml/SearchResultsView.qml:92 |
1290 | 180 | msgid "Searching for packages…" | 123 | msgid "Searching for packages…" |
1291 | 181 | msgstr "" | 124 | msgstr "" |
1292 | 182 | 125 | ||
1293 | 126 | #: ../libertine/qml/DebianPackagePicker.qml:26 | ||
1294 | 127 | msgid "Available Debian Packages to Install" | ||
1295 | 128 | msgstr "" | ||
1296 | 129 | |||
1297 | 130 | #: ../libertine/qml/DebianPackagePicker.qml:53 | ||
1298 | 183 | #: ../libertine/qml/SearchResults.qml:42 | 131 | #: ../libertine/qml/SearchResults.qml:42 |
1299 | 184 | #: ../libertine/qml/DebianPackagePicker.qml:34 | ||
1300 | 185 | msgid "Install Package" | 132 | msgid "Install Package" |
1301 | 186 | msgstr "" | 133 | msgstr "" |
1302 | 187 | 134 | ||
1308 | 188 | #: ../libertine/qml/DebianPackagePicker.qml:7 | 135 | #: ../libertine/qml/DebianPackagePicker.qml:72 |
1304 | 189 | msgid "Available Debian Packages to Install" | ||
1305 | 190 | msgstr "" | ||
1306 | 191 | |||
1307 | 192 | #: ../libertine/qml/DebianPackagePicker.qml:53 | ||
1309 | 193 | msgid "No Debian packages available" | 136 | msgid "No Debian packages available" |
1310 | 194 | msgstr "" | 137 | msgstr "" |
1311 | 195 | 138 | ||
1312 | @@ -209,6 +152,88 @@ | |||
1313 | 209 | msgid "password" | 152 | msgid "password" |
1314 | 210 | msgstr "" | 153 | msgstr "" |
1315 | 211 | 154 | ||
1316 | 155 | #: ../libertine/qml/ContainerInfoView.qml:28 | ||
1317 | 156 | msgid "Container information for %1" | ||
1318 | 157 | msgstr "" | ||
1319 | 158 | |||
1320 | 159 | #: ../libertine/qml/ContainerInfoView.qml:48 | ||
1321 | 160 | msgid "ID" | ||
1322 | 161 | msgstr "" | ||
1323 | 162 | |||
1324 | 163 | #: ../libertine/qml/ContainerInfoView.qml:55 | ||
1325 | 164 | msgid "Name" | ||
1326 | 165 | msgstr "" | ||
1327 | 166 | |||
1328 | 167 | #: ../libertine/qml/ContainerInfoView.qml:62 | ||
1329 | 168 | msgid "Distribution" | ||
1330 | 169 | msgstr "" | ||
1331 | 170 | |||
1332 | 171 | #: ../libertine/qml/ContainerInfoView.qml:69 | ||
1333 | 172 | msgid "Status" | ||
1334 | 173 | msgstr "" | ||
1335 | 174 | |||
1336 | 175 | #. Either "installing" or "removing" | ||
1337 | 176 | #: ../libertine/qml/PackageOperationFailureDialog.qml:29 | ||
1338 | 177 | msgid "Failure %1 the %2 package." | ||
1339 | 178 | msgstr "" | ||
1340 | 179 | |||
1341 | 180 | #: ../libertine/qml/PackageOperationFailureDialog.qml:33 | ||
1342 | 181 | #: ../libertine/qml/ExtraArchivesView.qml:152 | ||
1343 | 182 | msgid "Dismiss" | ||
1344 | 183 | msgstr "" | ||
1345 | 184 | |||
1346 | 185 | #: ../libertine/qml/ContainersView.qml:31 | ||
1347 | 186 | msgid "My Containers" | ||
1348 | 187 | msgstr "" | ||
1349 | 188 | |||
1350 | 189 | #: ../libertine/qml/ContainersView.qml:72 ../libertine/qml/HomeView.qml:195 | ||
1351 | 190 | msgid "delete" | ||
1352 | 191 | msgstr "" | ||
1353 | 192 | |||
1354 | 193 | #: ../libertine/qml/ContainersView.qml:73 | ||
1355 | 194 | msgid "Delete Container" | ||
1356 | 195 | msgstr "" | ||
1357 | 196 | |||
1358 | 197 | #: ../libertine/qml/ContainersView.qml:90 ../libertine/qml/HomeView.qml:208 | ||
1359 | 198 | msgid "info" | ||
1360 | 199 | msgstr "" | ||
1361 | 200 | |||
1362 | 201 | #: ../libertine/qml/ContainersView.qml:91 | ||
1363 | 202 | msgid "Container Info" | ||
1364 | 203 | msgstr "" | ||
1365 | 204 | |||
1366 | 205 | #: ../libertine/qml/ContainersView.qml:99 | ||
1367 | 206 | msgid "edit" | ||
1368 | 207 | msgstr "" | ||
1369 | 208 | |||
1370 | 209 | #: ../libertine/qml/ContainersView.qml:100 | ||
1371 | 210 | msgid "Container Apps" | ||
1372 | 211 | msgstr "" | ||
1373 | 212 | |||
1374 | 213 | #: ../libertine/qml/SearchPackagesDialog.qml:27 | ||
1375 | 214 | msgid "Search archives for packages" | ||
1376 | 215 | msgstr "" | ||
1377 | 216 | |||
1378 | 217 | #: ../libertine/qml/SearchPackagesDialog.qml:31 | ||
1379 | 218 | msgid "search" | ||
1380 | 219 | msgstr "" | ||
1381 | 220 | |||
1382 | 221 | #: ../libertine/qml/ManageContainer.qml:27 | ||
1383 | 222 | msgid "Manage %1" | ||
1384 | 223 | msgstr "" | ||
1385 | 224 | |||
1386 | 225 | #: ../libertine/qml/ManageContainer.qml:59 | ||
1387 | 226 | msgid "Additional archives and PPAs" | ||
1388 | 227 | msgstr "" | ||
1389 | 228 | |||
1390 | 229 | #: ../libertine/qml/ManageContainer.qml:70 | ||
1391 | 230 | msgid "Update…" | ||
1392 | 231 | msgstr "" | ||
1393 | 232 | |||
1394 | 233 | #: ../libertine/qml/ManageContainer.qml:86 | ||
1395 | 234 | msgid "Update container" | ||
1396 | 235 | msgstr "" | ||
1397 | 236 | |||
1398 | 212 | #: ../libertine/qml/HomeView.qml:27 | 237 | #: ../libertine/qml/HomeView.qml:27 |
1399 | 213 | msgid "Classic Apps - %1" | 238 | msgid "Classic Apps - %1" |
1400 | 214 | msgstr "" | 239 | msgstr "" |
1401 | @@ -231,11 +256,11 @@ | |||
1402 | 231 | msgstr "" | 256 | msgstr "" |
1403 | 232 | 257 | ||
1404 | 233 | #: ../libertine/qml/HomeView.qml:102 | 258 | #: ../libertine/qml/HomeView.qml:102 |
1406 | 234 | msgid "Configure Container" | 259 | msgid "Manage Container" |
1407 | 235 | msgstr "" | 260 | msgstr "" |
1408 | 236 | 261 | ||
1409 | 237 | #: ../libertine/qml/HomeView.qml:108 | 262 | #: ../libertine/qml/HomeView.qml:108 |
1411 | 238 | msgid "Update Container" | 263 | msgid "Container Information" |
1412 | 239 | msgstr "" | 264 | msgstr "" |
1413 | 240 | 265 | ||
1414 | 241 | #: ../libertine/qml/HomeView.qml:114 | 266 | #: ../libertine/qml/HomeView.qml:114 |
1415 | @@ -254,14 +279,53 @@ | |||
1416 | 254 | msgid "Search archives for a package" | 279 | msgid "Search archives for a package" |
1417 | 255 | msgstr "" | 280 | msgstr "" |
1418 | 256 | 281 | ||
1420 | 257 | #: ../libertine/qml/HomeView.qml:188 | 282 | #: ../libertine/qml/HomeView.qml:196 |
1421 | 258 | msgid "Remove Package" | 283 | msgid "Remove Package" |
1422 | 259 | msgstr "" | 284 | msgstr "" |
1423 | 260 | 285 | ||
1425 | 261 | #: ../libertine/qml/HomeView.qml:202 | 286 | #: ../libertine/qml/HomeView.qml:209 |
1426 | 262 | msgid "Package Info" | 287 | msgid "Package Info" |
1427 | 263 | msgstr "" | 288 | msgstr "" |
1428 | 264 | 289 | ||
1429 | 290 | #: ../libertine/qml/HomeView.qml:227 | ||
1430 | 291 | msgid "No packages are installed" | ||
1431 | 292 | msgstr "" | ||
1432 | 293 | |||
1433 | 294 | #: ../libertine/qml/PackageInfoView.qml:28 | ||
1434 | 295 | msgid "Information for the %1 package" | ||
1435 | 296 | msgstr "" | ||
1436 | 297 | |||
1437 | 298 | #: ../libertine/qml/PackageInfoView.qml:32 | ||
1438 | 299 | msgid "Obtaining package version…" | ||
1439 | 300 | msgstr "" | ||
1440 | 301 | |||
1441 | 302 | #: ../libertine/qml/PackageInfoView.qml:49 | ||
1442 | 303 | msgid "Package version" | ||
1443 | 304 | msgstr "" | ||
1444 | 305 | |||
1445 | 306 | #: ../libertine/qml/PackageInfoView.qml:56 | ||
1446 | 307 | msgid "Install status" | ||
1447 | 308 | msgstr "" | ||
1448 | 309 | |||
1449 | 310 | #: ../libertine/qml/WelcomeView.qml:27 | ||
1450 | 311 | msgid "Welcome" | ||
1451 | 312 | msgstr "" | ||
1452 | 313 | |||
1453 | 314 | #: ../libertine/qml/WelcomeView.qml:42 | ||
1454 | 315 | msgid "Welcome to the Ubuntu Legacy Application Support Manager." | ||
1455 | 316 | msgstr "" | ||
1456 | 317 | |||
1457 | 318 | #: ../libertine/qml/WelcomeView.qml:50 | ||
1458 | 319 | msgid "" | ||
1459 | 320 | "You do not have Legacy Application Support configured at this time. " | ||
1460 | 321 | "Downloading and setting up the required environment takes some time and " | ||
1461 | 322 | "network bandwidth." | ||
1462 | 323 | msgstr "" | ||
1463 | 324 | |||
1464 | 325 | #: ../libertine/qml/WelcomeView.qml:58 | ||
1465 | 326 | msgid "Install" | ||
1466 | 327 | msgstr "" | ||
1467 | 328 | |||
1468 | 265 | #: ../libertine/qml/ExtraArchivesView.qml:26 | 329 | #: ../libertine/qml/ExtraArchivesView.qml:26 |
1469 | 266 | msgid "Additional Archives and PPAs" | 330 | msgid "Additional Archives and PPAs" |
1470 | 267 | msgstr "" | 331 | msgstr "" |
1471 | @@ -282,73 +346,34 @@ | |||
1472 | 282 | msgid "Enter name of PPA in the form ppa:user/ppa-name:" | 346 | msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
1473 | 283 | msgstr "" | 347 | msgstr "" |
1474 | 284 | 348 | ||
1476 | 285 | #: ../libertine/qml/ExtraArchivesView.qml:96 | 349 | #: ../libertine/qml/ExtraArchivesView.qml:101 |
1477 | 286 | msgid "remove" | 350 | msgid "remove" |
1478 | 287 | msgstr "" | 351 | msgstr "" |
1479 | 288 | 352 | ||
1481 | 289 | #: ../libertine/qml/ExtraArchivesView.qml:97 | 353 | #: ../libertine/qml/ExtraArchivesView.qml:102 |
1482 | 290 | msgid "Remove extra archive" | 354 | msgid "Remove extra archive" |
1483 | 291 | msgstr "" | 355 | msgstr "" |
1484 | 292 | 356 | ||
1486 | 293 | #: ../libertine/qml/ExtraArchivesView.qml:133 | 357 | #: ../libertine/qml/ExtraArchivesView.qml:119 |
1487 | 358 | msgid "No additional archives and PPA's have been added" | ||
1488 | 359 | msgstr "" | ||
1489 | 360 | |||
1490 | 361 | #: ../libertine/qml/ExtraArchivesView.qml:148 | ||
1491 | 294 | msgid "Adding archive failed" | 362 | msgid "Adding archive failed" |
1492 | 295 | msgstr "" | 363 | msgstr "" |
1493 | 296 | 364 | ||
1551 | 297 | #: ../libertine/qml/ExtraArchivesView.qml:137 | 365 | #: ../libertine/qml/PackageExistsDialog.qml:28 |
1552 | 298 | msgid "Dismiss" | 366 | msgid "The %1 package is already installed." |
1553 | 299 | msgstr "" | 367 | msgstr "" |
1554 | 300 | 368 | ||
1555 | 301 | #: ../libertine/qml/WelcomeView.qml:27 | 369 | #: ../libertine/qml/PackageExistsDialog.qml:29 |
1556 | 302 | msgid "Welcome" | 370 | msgid "Search again or return to search results." |
1557 | 303 | msgstr "" | 371 | msgstr "" |
1558 | 304 | 372 | ||
1559 | 305 | #: ../libertine/qml/WelcomeView.qml:42 | 373 | #: ../libertine/qml/PackageExistsDialog.qml:33 |
1560 | 306 | msgid "Welcome to the Ubuntu Legacy Application Support Manager." | 374 | msgid "Search again" |
1561 | 307 | msgstr "" | 375 | msgstr "" |
1562 | 308 | 376 | ||
1563 | 309 | #: ../libertine/qml/WelcomeView.qml:50 | 377 | #: ../libertine/qml/PackageExistsDialog.qml:43 |
1564 | 310 | msgid "" | 378 | msgid "Return to search results" |
1508 | 311 | "You do not have Legacy Application Support configured at this time. " | ||
1509 | 312 | "Downloading and setting up the required environment takes some time and " | ||
1510 | 313 | "network bandwidth." | ||
1511 | 314 | msgstr "" | ||
1512 | 315 | |||
1513 | 316 | #: ../libertine/qml/WelcomeView.qml:58 | ||
1514 | 317 | msgid "Install" | ||
1515 | 318 | msgstr "" | ||
1516 | 319 | |||
1517 | 320 | #: ../libertine/qml/ContainerInfoView.qml:28 | ||
1518 | 321 | msgid "Container information for %1" | ||
1519 | 322 | msgstr "" | ||
1520 | 323 | |||
1521 | 324 | #: ../libertine/qml/ContainerInfoView.qml:48 | ||
1522 | 325 | msgid "ID" | ||
1523 | 326 | msgstr "" | ||
1524 | 327 | |||
1525 | 328 | #: ../libertine/qml/ContainerInfoView.qml:55 | ||
1526 | 329 | msgid "Name" | ||
1527 | 330 | msgstr "" | ||
1528 | 331 | |||
1529 | 332 | #: ../libertine/qml/ContainerInfoView.qml:62 | ||
1530 | 333 | msgid "Distribution" | ||
1531 | 334 | msgstr "" | ||
1532 | 335 | |||
1533 | 336 | #: ../libertine/qml/ContainerInfoView.qml:69 | ||
1534 | 337 | msgid "Status" | ||
1535 | 338 | msgstr "" | ||
1536 | 339 | |||
1537 | 340 | #: ../libertine/qml/ContainerOptionsDialog.qml:27 | ||
1538 | 341 | msgid "Container Options" | ||
1539 | 342 | msgstr "" | ||
1540 | 343 | |||
1541 | 344 | #: ../libertine/qml/ContainerOptionsDialog.qml:28 | ||
1542 | 345 | msgid "Configure options for container creation." | ||
1543 | 346 | msgstr "" | ||
1544 | 347 | |||
1545 | 348 | #: ../libertine/qml/ContainerOptionsDialog.qml:50 | ||
1546 | 349 | msgid "Enter or name for the container or leave blank for default name" | ||
1547 | 350 | msgstr "" | ||
1548 | 351 | |||
1549 | 352 | #: ../libertine/qml/ContainerOptionsDialog.qml:56 | ||
1550 | 353 | msgid "container name" | ||
1565 | 354 | msgstr "" | 379 | msgstr "" |
1566 | 355 | 380 | ||
1567 | === modified file 'python/libertine/ChrootContainer.py' | |||
1568 | --- python/libertine/ChrootContainer.py 2016-04-07 18:03:04 +0000 | |||
1569 | +++ python/libertine/ChrootContainer.py 2016-04-25 17:15:41 +0000 | |||
1570 | @@ -199,8 +199,8 @@ | |||
1571 | 199 | return returncode | 199 | return returncode |
1572 | 200 | 200 | ||
1573 | 201 | def _build_proot_command(self): | 201 | def _build_proot_command(self): |
1576 | 202 | proot_cmd = '/usr/bin/proot' | 202 | proot_cmd = shutil.which('proot') |
1577 | 203 | if not os.path.isfile(proot_cmd) or not os.access(proot_cmd, os.X_OK): | 203 | if not proot_cmd: |
1578 | 204 | raise RuntimeError('executable proot not found') | 204 | raise RuntimeError('executable proot not found') |
1579 | 205 | 205 | ||
1580 | 206 | proot_cmd += " -R " + self.root_path | 206 | proot_cmd += " -R " + self.root_path |
1581 | @@ -234,8 +234,8 @@ | |||
1582 | 234 | return proot_cmd | 234 | return proot_cmd |
1583 | 235 | 235 | ||
1584 | 236 | def _build_privileged_proot_cmd(self): | 236 | def _build_privileged_proot_cmd(self): |
1587 | 237 | proot_cmd = '/usr/bin/proot' | 237 | proot_cmd = shutil.which('proot') |
1588 | 238 | if not os.path.isfile(proot_cmd) or not os.access(proot_cmd, os.X_OK): | 238 | if not proot_cmd: |
1589 | 239 | raise RuntimeError('executable proot not found') | 239 | raise RuntimeError('executable proot not found') |
1590 | 240 | 240 | ||
1591 | 241 | proot_cmd += " -b /usr/lib/locale -S " + self.root_path | 241 | proot_cmd += " -b /usr/lib/locale -S " + self.root_path |
1592 | 242 | 242 | ||
1593 | === modified file 'python/libertine/Libertine.py' | |||
1594 | --- python/libertine/Libertine.py 2016-04-07 20:39:10 +0000 | |||
1595 | +++ python/libertine/Libertine.py 2016-04-25 17:15:41 +0000 | |||
1596 | @@ -56,7 +56,14 @@ | |||
1597 | 56 | 56 | ||
1598 | 57 | 57 | ||
1599 | 58 | def apt_command_prefix(verbosity): | 58 | def apt_command_prefix(verbosity): |
1601 | 59 | return '/usr/bin/apt ' + apt_args_for_verbosity_level(verbosity) + ' ' | 59 | return '/usr/bin/apt-get ' + apt_args_for_verbosity_level(verbosity) + \ |
1602 | 60 | ' --option Apt::Cmd::Disable-Script-Warning=true --option Dpkg::Progress-Fancy=1' + \ | ||
1603 | 61 | ' --option Apt::Color=1 ' | ||
1604 | 62 | |||
1605 | 63 | |||
1606 | 64 | def handle_runtime_error(error): | ||
1607 | 65 | print("%s" % error) | ||
1608 | 66 | return False | ||
1609 | 60 | 67 | ||
1610 | 61 | 68 | ||
1611 | 62 | class BaseContainer(metaclass=abc.ABCMeta): | 69 | class BaseContainer(metaclass=abc.ABCMeta): |
1612 | @@ -311,15 +318,21 @@ | |||
1613 | 311 | """ | 318 | """ |
1614 | 312 | Updates the contents of the container. | 319 | Updates the contents of the container. |
1615 | 313 | """ | 320 | """ |
1618 | 314 | with ContainerRunning(self.container): | 321 | try: |
1619 | 315 | self.container.update_packages(verbosity) | 322 | with ContainerRunning(self.container): |
1620 | 323 | self.container.update_packages(verbosity) | ||
1621 | 324 | except RuntimeError as e: | ||
1622 | 325 | return handle_runtime_error(e) | ||
1623 | 316 | 326 | ||
1624 | 317 | def install_package(self, package_name, verbosity=1): | 327 | def install_package(self, package_name, verbosity=1): |
1625 | 318 | """ | 328 | """ |
1626 | 319 | Installs a package in the container. | 329 | Installs a package in the container. |
1627 | 320 | """ | 330 | """ |
1630 | 321 | with ContainerRunning(self.container): | 331 | try: |
1631 | 322 | return self.container.install_package(package_name, verbosity) | 332 | with ContainerRunning(self.container): |
1632 | 333 | return self.container.install_package(package_name, verbosity) | ||
1633 | 334 | except RuntimeError as e: | ||
1634 | 335 | return handle_runtime_error(e) | ||
1635 | 323 | 336 | ||
1636 | 324 | def remove_package(self, package_name, verbosity=1): | 337 | def remove_package(self, package_name, verbosity=1): |
1637 | 325 | """ | 338 | """ |
1638 | @@ -328,9 +341,13 @@ | |||
1639 | 328 | :param package_name: The name of the package to be removed. | 341 | :param package_name: The name of the package to be removed. |
1640 | 329 | :param verbosity: The verbosity level of the progress reporting. | 342 | :param verbosity: The verbosity level of the progress reporting. |
1641 | 330 | """ | 343 | """ |
1645 | 331 | with ContainerRunning(self.container): | 344 | try: |
1646 | 332 | self.container.run_in_container(apt_command_prefix(verbosity) + "purge '" + package_name + "'") == 0 | 345 | with ContainerRunning(self.container): |
1647 | 333 | self.container.run_in_container(apt_command_prefix(verbosity) + "autoremove --purge") == 0 | 346 | if self.container.run_in_container(apt_command_prefix(verbosity) + "purge '" + package_name + "'") != 0: |
1648 | 347 | return False | ||
1649 | 348 | return self.container.run_in_container(apt_command_prefix(verbosity) + "autoremove --purge") == 0 | ||
1650 | 349 | except RuntimeError as e: | ||
1651 | 350 | return handle_runtime_error(e) | ||
1652 | 334 | 351 | ||
1653 | 335 | def search_package_cache(self, search_string): | 352 | def search_package_cache(self, search_string): |
1654 | 336 | """ | 353 | """ |
1655 | @@ -339,8 +356,11 @@ | |||
1656 | 339 | :param search_string: the (regex) to use to search the package cache. | 356 | :param search_string: the (regex) to use to search the package cache. |
1657 | 340 | The regex is quoted to sanitize it. | 357 | The regex is quoted to sanitize it. |
1658 | 341 | """ | 358 | """ |
1661 | 342 | with ContainerRunning(self.container): | 359 | try: |
1662 | 343 | self.container.run_in_container("/usr/bin/apt-cache search '" + search_string + "'") | 360 | with ContainerRunning(self.container): |
1663 | 361 | self.container.run_in_container("/usr/bin/apt-cache search '" + search_string + "'") | ||
1664 | 362 | except RuntimeError as e: | ||
1665 | 363 | return handle_runtime_error(e) | ||
1666 | 344 | 364 | ||
1667 | 345 | def launch_application(self, app_exec_line): | 365 | def launch_application(self, app_exec_line): |
1668 | 346 | """ | 366 | """ |
1669 | @@ -350,7 +370,7 @@ | |||
1670 | 350 | ubuntu-app-launch | 370 | ubuntu-app-launch |
1671 | 351 | """ | 371 | """ |
1672 | 352 | if libertine.utils.container_exists(self.container.container_id): | 372 | if libertine.utils.container_exists(self.container.container_id): |
1674 | 353 | self.container.launch_application(app_exec_line) | 373 | self.container.launch_application(app_exec_line) |
1675 | 354 | else: | 374 | else: |
1676 | 355 | raise RuntimeError("Container with id %s does not exist." % self.container.container_id) | 375 | raise RuntimeError("Container with id %s does not exist." % self.container.container_id) |
1677 | 356 | 376 | ||
1678 | @@ -380,9 +400,15 @@ | |||
1679 | 380 | example, 'apt-cache policy package-foo' | 400 | example, 'apt-cache policy package-foo' |
1680 | 381 | :rtype: The output of the given command. | 401 | :rtype: The output of the given command. |
1681 | 382 | """ | 402 | """ |
1684 | 383 | with ContainerRunning(self.container): | 403 | try: |
1685 | 384 | return self.container.run_in_container(exec_line) | 404 | with ContainerRunning(self.container): |
1686 | 405 | return self.container.run_in_container(exec_line) | ||
1687 | 406 | except RuntimeError as e: | ||
1688 | 407 | return handle_runtime_error(e) | ||
1689 | 385 | 408 | ||
1690 | 386 | def configure_command(self, command, *args): | 409 | def configure_command(self, command, *args): |
1693 | 387 | with ContainerRunning(self.container): | 410 | try: |
1694 | 388 | return self.container.configure_command(command, *args) | 411 | with ContainerRunning(self.container): |
1695 | 412 | return self.container.configure_command(command, *args) | ||
1696 | 413 | except RuntimeError as e: | ||
1697 | 414 | return handle_runtime_error(e) | ||
1698 | 389 | 415 | ||
1699 | === modified file 'tools/libertine-container-manager' | |||
1700 | --- tools/libertine-container-manager 2016-04-11 13:42:37 +0000 | |||
1701 | +++ tools/libertine-container-manager 2016-04-25 17:15:41 +0000 | |||
1702 | @@ -31,6 +31,40 @@ | |||
1703 | 31 | from libertine import LibertineContainer | 31 | from libertine import LibertineContainer |
1704 | 32 | 32 | ||
1705 | 33 | 33 | ||
1706 | 34 | def find_duplicate_container_entry(container_list, container_id): | ||
1707 | 35 | for container in container_list['containerList']: | ||
1708 | 36 | if container['id'] == container_id: | ||
1709 | 37 | return container | ||
1710 | 38 | |||
1711 | 39 | return None | ||
1712 | 40 | |||
1713 | 41 | |||
1714 | 42 | def merge_container_config_files(filepath): | ||
1715 | 43 | merged_json = [] | ||
1716 | 44 | main_config = read_container_config_file() | ||
1717 | 45 | |||
1718 | 46 | with open(filepath, 'r') as fd: | ||
1719 | 47 | merge_source = json.load(fd) | ||
1720 | 48 | |||
1721 | 49 | if "containerList" in main_config: | ||
1722 | 50 | # Finds any duplicate entries and assumes we want to update the main config | ||
1723 | 51 | # with entries from the merge source. | ||
1724 | 52 | for i, container in enumerate(main_config['containerList']): | ||
1725 | 53 | merge_container = find_duplicate_container_entry(merge_source, container['id']) | ||
1726 | 54 | if merge_container: | ||
1727 | 55 | main_config['containerList'][i] = merge_container | ||
1728 | 56 | merge_source['containerList'].remove(merge_container) | ||
1729 | 57 | |||
1730 | 58 | # Merges in any remaining non-duplicate entries. | ||
1731 | 59 | for container in merge_source['containerList']: | ||
1732 | 60 | main_config['containerList'].append(container) | ||
1733 | 61 | |||
1734 | 62 | else: | ||
1735 | 63 | main_config = merge_source | ||
1736 | 64 | |||
1737 | 65 | write_container_config_file(main_config) | ||
1738 | 66 | |||
1739 | 67 | |||
1740 | 34 | def read_container_config_file(): | 68 | def read_container_config_file(): |
1741 | 35 | container_list = {} | 69 | container_list = {} |
1742 | 36 | container_config_file = libertine.utils.get_libertine_database_file_path() | 70 | container_config_file = libertine.utils.get_libertine_database_file_path() |
1743 | @@ -83,7 +117,10 @@ | |||
1744 | 83 | 117 | ||
1745 | 84 | def is_distro_valid(distro, force): | 118 | def is_distro_valid(distro, force): |
1746 | 85 | if force: | 119 | if force: |
1748 | 86 | return UbuntuDistroInfo().valid(distro) | 120 | return UbuntuDistroInfo().valid(distro) |
1749 | 121 | |||
1750 | 122 | if distro == get_host_distro_release(): | ||
1751 | 123 | return True | ||
1752 | 87 | 124 | ||
1753 | 88 | supported_distros = UbuntuDistroInfo().supported() | 125 | supported_distros = UbuntuDistroInfo().supported() |
1754 | 89 | 126 | ||
1755 | @@ -418,7 +455,10 @@ | |||
1756 | 418 | container = LibertineContainer(args.id) | 455 | container = LibertineContainer(args.id) |
1757 | 419 | update_package_install_status(args.id, args.package, "removing") | 456 | update_package_install_status(args.id, args.package, "removing") |
1758 | 420 | 457 | ||
1760 | 421 | container.remove_package(args.package, args.verbosity) | 458 | if not container.remove_package(args.package, args.verbosity): |
1761 | 459 | update_package_install_status(args.id, args.package, "installed") | ||
1762 | 460 | sys.exit(1) | ||
1763 | 461 | |||
1764 | 422 | update_package_install_status(args.id, args.package, "removed") | 462 | update_package_install_status(args.id, args.package, "removed") |
1765 | 423 | 463 | ||
1766 | 424 | delete_package(args.id, args.package) | 464 | delete_package(args.id, args.package) |
1767 | @@ -432,7 +472,8 @@ | |||
1768 | 432 | args.id = get_default_container_id() | 472 | args.id = get_default_container_id() |
1769 | 433 | 473 | ||
1770 | 434 | container = LibertineContainer(args.id) | 474 | container = LibertineContainer(args.id) |
1772 | 435 | container.search_package_cache(args.search_string) | 475 | if not container.search_package_cache(args.search_string): |
1773 | 476 | sys.exit(1) | ||
1774 | 436 | 477 | ||
1775 | 437 | 478 | ||
1776 | 438 | def update(args): | 479 | def update(args): |
1777 | @@ -443,7 +484,13 @@ | |||
1778 | 443 | args.id = get_default_container_id() | 484 | args.id = get_default_container_id() |
1779 | 444 | 485 | ||
1780 | 445 | container = LibertineContainer(args.id) | 486 | container = LibertineContainer(args.id) |
1782 | 446 | container.update_libertine_container(args.verbosity) | 487 | |
1783 | 488 | update_container_install_status(args.id, "updating") | ||
1784 | 489 | if not container.update_libertine_container(args.verbosity): | ||
1785 | 490 | update_container_install_status(args.id, "ready") | ||
1786 | 491 | sys.exit(1) | ||
1787 | 492 | |||
1788 | 493 | update_container_install_status(args.id, "ready") | ||
1789 | 447 | 494 | ||
1790 | 448 | 495 | ||
1791 | 449 | def list(args): | 496 | def list(args): |
1792 | @@ -494,7 +541,9 @@ | |||
1793 | 494 | print("i386 multiarch support is already %s" % multiarch) | 541 | print("i386 multiarch support is already %s" % multiarch) |
1794 | 495 | sys.exit(1) | 542 | sys.exit(1) |
1795 | 496 | 543 | ||
1797 | 497 | container.configure_command('multiarch', args.multiarch) | 544 | if not container.configure_command('multiarch', args.multiarch): |
1798 | 545 | sys.exit(1) | ||
1799 | 546 | |||
1800 | 498 | update_container_multiarch_support(args.id, multiarch) | 547 | update_container_multiarch_support(args.id, multiarch) |
1801 | 499 | 548 | ||
1802 | 500 | elif args.add_archive: | 549 | elif args.add_archive: |
1803 | @@ -523,15 +572,26 @@ | |||
1804 | 523 | delete_container_archive(args.id, args.delete_archive) | 572 | delete_container_archive(args.id, args.delete_archive) |
1805 | 524 | 573 | ||
1806 | 525 | 574 | ||
1807 | 575 | def merge(args): | ||
1808 | 576 | merge_container_config_files(args.file) | ||
1809 | 577 | |||
1810 | 578 | |||
1811 | 526 | if __name__ == '__main__': | 579 | if __name__ == '__main__': |
1812 | 527 | parser = argparse.ArgumentParser(description="Legacy X application support for Unity 8") | 580 | parser = argparse.ArgumentParser(description="Legacy X application support for Unity 8") |
1813 | 581 | |||
1814 | 582 | if not os.geteuid(): | ||
1815 | 583 | print("Please do not run %s using sudo" % parser.prog) | ||
1816 | 584 | sys.exit(1) | ||
1817 | 585 | |||
1818 | 528 | parser.add_argument('-q', '--quiet', | 586 | parser.add_argument('-q', '--quiet', |
1819 | 529 | action='store_const', dest='verbosity', const=0, | 587 | action='store_const', dest='verbosity', const=0, |
1820 | 530 | help=('do not print status updates on stdout')) | 588 | help=('do not print status updates on stdout')) |
1821 | 531 | parser.add_argument('-v', '--verbose', | 589 | parser.add_argument('-v', '--verbose', |
1822 | 532 | action='store_const', dest='verbosity', const=2, | 590 | action='store_const', dest='verbosity', const=2, |
1823 | 533 | help=('extra verbose output')) | 591 | help=('extra verbose output')) |
1825 | 534 | subparsers = parser.add_subparsers(dest="subparser_name") | 592 | subparsers = parser.add_subparsers(dest="subparser_name", |
1826 | 593 | title="subcommands", | ||
1827 | 594 | metavar='create, destroy, install-package, remove-package, search-cache, update, list, list-apps, configure') | ||
1828 | 535 | 595 | ||
1829 | 536 | # Handle the create command and its options | 596 | # Handle the create command and its options |
1830 | 537 | parser_create = subparsers.add_parser( | 597 | parser_create = subparsers.add_parser( |
1831 | @@ -587,17 +647,17 @@ | |||
1832 | 587 | parser_install.set_defaults(func=install_package) | 647 | parser_install.set_defaults(func=install_package) |
1833 | 588 | 648 | ||
1834 | 589 | # Handle the remove-package command and its options | 649 | # Handle the remove-package command and its options |
1836 | 590 | parser_install = subparsers.add_parser( | 650 | parser_remove = subparsers.add_parser( |
1837 | 591 | 'remove-package', | 651 | 'remove-package', |
1838 | 592 | help=("Remove a package in the specified Libertine container.")) | 652 | help=("Remove a package in the specified Libertine container.")) |
1840 | 593 | parser_install.add_argument( | 653 | parser_remove.add_argument( |
1841 | 594 | '-p', '--package', | 654 | '-p', '--package', |
1842 | 595 | required=True, | 655 | required=True, |
1843 | 596 | help=("Name of package to remove. Required.")) | 656 | help=("Name of package to remove. Required.")) |
1845 | 597 | parser_install.add_argument( | 657 | parser_remove.add_argument( |
1846 | 598 | '-i', '--id', | 658 | '-i', '--id', |
1847 | 599 | help=("Container identifier. Default container is used if omitted.")) | 659 | help=("Container identifier. Default container is used if omitted.")) |
1849 | 600 | parser_install.set_defaults(func=remove_package) | 660 | parser_remove.set_defaults(func=remove_package) |
1850 | 601 | 661 | ||
1851 | 602 | # Handle the search-cache command and its options | 662 | # Handle the search-cache command and its options |
1852 | 603 | parser_search = subparsers.add_parser( | 663 | parser_search = subparsers.add_parser( |
1853 | @@ -643,7 +703,8 @@ | |||
1854 | 643 | # Handle the execute command and it's options | 703 | # Handle the execute command and it's options |
1855 | 644 | parser_exec = subparsers.add_parser( | 704 | parser_exec = subparsers.add_parser( |
1856 | 645 | 'exec', | 705 | 'exec', |
1858 | 646 | help=("Run an arbitrary command in the specified Libertine container.")) | 706 | add_help=False) |
1859 | 707 | #help=("Run an arbitrary command in the specified Libertine container.")) | ||
1860 | 647 | parser_exec.add_argument( | 708 | parser_exec.add_argument( |
1861 | 648 | '-i', '--id', | 709 | '-i', '--id', |
1862 | 649 | help=("Container identifier. Default container is used if omitted.")) | 710 | help=("Container identifier. Default container is used if omitted.")) |
1863 | @@ -677,9 +738,21 @@ | |||
1864 | 677 | "Needs to be in the form of \"ppa:user/ppa-name\".")) | 738 | "Needs to be in the form of \"ppa:user/ppa-name\".")) |
1865 | 678 | parser_configure.set_defaults(func=configure) | 739 | parser_configure.set_defaults(func=configure) |
1866 | 679 | 740 | ||
1867 | 741 | # Handle merging another ContainersConfig.json file into the main ContainersConfig.json file | ||
1868 | 742 | parser_merge = subparsers.add_parser( | ||
1869 | 743 | 'merge-configs', | ||
1870 | 744 | add_help=False) | ||
1871 | 745 | parser_merge.add_argument( | ||
1872 | 746 | '-f', '--file', | ||
1873 | 747 | required=True) | ||
1874 | 748 | parser_merge.set_defaults(func=merge) | ||
1875 | 749 | |||
1876 | 680 | # Actually parse the args | 750 | # Actually parse the args |
1877 | 681 | args = parser.parse_args() | 751 | args = parser.parse_args() |
1878 | 682 | if args.verbosity is None: | 752 | if args.verbosity is None: |
1879 | 683 | args.verbosity = 1 | 753 | args.verbosity = 1 |
1880 | 684 | 754 | ||
1882 | 685 | args.func(args) | 755 | if args.subparser_name == None: |
1883 | 756 | parser.print_help() | ||
1884 | 757 | else: | ||
1885 | 758 | args.func(args) |
OK, I se nothing nefarious here.