Merge lp:~townsend/libertine/release-1.3 into lp:libertine/trunk
- release-1.3
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Larry Price |
Approved revision: | 141 |
Merged at revision: | 141 |
Proposed branch: | lp:~townsend/libertine/release-1.3 |
Merge into: | lp:libertine/trunk |
Diff against target: |
3963 lines (+1319/-1135) 38 files modified
data/CMakeLists.txt (+4/-0) data/libertine-lxc-sudo (+1/-0) debian/changelog (+22/-0) debian/control (+2/-0) debian/libertine-tools.install (+0/-3) debian/python3-libertine-lxc.install (+5/-0) libertine/ContainerManager.cpp (+32/-5) libertine/ContainerManager.h (+1/-0) libertine/PasswordHelper.cpp (+0/-123) libertine/PasswordHelper.h (+0/-43) libertine/libertine.cpp (+0/-4) libertine/libertine.h (+0/-2) libertine/qml/AddExtraArchiveView.qml (+117/-0) libertine/qml/ContainerOptionsDialog.qml (+30/-8) libertine/qml/ContainerPasswordDialog.qml (+0/-98) libertine/qml/ContainersView.qml (+1/-2) libertine/qml/ExtraArchivesView.qml (+13/-61) libertine/qml/ManageContainer.qml (+1/-1) libertine/qml/WelcomeView.qml (+1/-2) liblibertine/CMakeLists.txt (+0/-1) po/en_GB.po (+91/-52) po/en_US.po (+388/-336) po/es.po (+96/-54) po/it.po (+79/-54) po/libertine.pot (+120/-100) python/libertine/ContainersConfig.py (+8/-5) python/libertine/Libertine.py (+119/-36) python/libertine/LxcContainer.py (+3/-10) python/libertine/__init__.py (+2/-1) tests/unit/CMakeLists.txt (+7/-11) tests/unit/libertine_launch_tests.py (+12/-34) tools/CMakeLists.txt (+1/-1) tools/libertine-container-manager (+64/-41) tools/libertine-container-manager.1 (+13/-8) tools/libertine-launch (+5/-20) tools/libertine-lxc-setup (+9/-0) tools/libertine-session-bridge (+6/-1) tools/update-puritine-containers (+66/-18) |
To merge this branch: | bzr merge lp:~townsend/libertine/release-1.3 |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Larry Price | Approve | ||
Review via email: mp+300494@code.launchpad.net |
Commit message
* This creates a LibertineApplic
* Rework the whole way we handle updating the necessary system files for unprivileged LXC's: (LP: #1598785)
- Add new script that does the updates.
- Add sudoers file for this script.
- Remove the password dialog in the UI.
* Add functionality to "favorite" the Libertine scope upon first installation of the Puritine click package. (LP: #1602397)
* Bump version to 1.3.
* Allow adding all forms of additional archives to containers.
* Support adding private PPAs inside of a container. (LP: #1599882)
Description of the change
- 142. By Christopher Townsend
-
Merge lp:libertine for replaces/breaks.
- 143. By Christopher Townsend
-
Merge lp:libertine for fix in using the wrong version number in previous merge.
Preview Diff
1 | === modified file 'data/CMakeLists.txt' |
2 | --- data/CMakeLists.txt 2016-05-19 14:29:57 +0000 |
3 | +++ data/CMakeLists.txt 2016-07-21 17:26:05 +0000 |
4 | @@ -1,3 +1,5 @@ |
5 | +set(CMAKE_INSTALL_SYSCONFDIR "/etc") |
6 | + |
7 | install(FILES libertine.desktop |
8 | DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) |
9 | install(FILES libertine_64.png libertine-lxc.conf |
10 | @@ -6,6 +8,8 @@ |
11 | DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions) |
12 | install(FILES puritine-15.04.1.framework |
13 | DESTINATION ${CMAKE_INSTALL_DATADIR}/click/frameworks) |
14 | +install(FILES libertine-lxc-sudo |
15 | + DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/sudoers.d) |
16 | |
17 | configure_file("libertine-tools.click-hook.in" |
18 | "${CMAKE_SOURCE_DIR}/debian/libertine-tools.click-hook" |
19 | |
20 | === added file 'data/libertine-lxc-sudo' |
21 | --- data/libertine-lxc-sudo 1970-01-01 00:00:00 +0000 |
22 | +++ data/libertine-lxc-sudo 2016-07-21 17:26:05 +0000 |
23 | @@ -0,0 +1,1 @@ |
24 | +ALL ALL=(ALL) NOPASSWD:/usr/bin/libertine-lxc-setup |
25 | |
26 | === modified file 'debian/changelog' |
27 | --- debian/changelog 2016-07-07 20:17:22 +0000 |
28 | +++ debian/changelog 2016-07-21 17:26:05 +0000 |
29 | @@ -1,3 +1,25 @@ |
30 | +libertine (1.3-0ubuntu1) UNRELEASED; urgency=medium |
31 | + |
32 | + [ Brandon Schaefer ] |
33 | + * This creates a LibertineApplication which wraps up the starting of a |
34 | + container. This way we can mock creations of an Application. |
35 | + |
36 | + [ Chris Townsend ] |
37 | + * Rework the whole way we handle updating the necessary system files for |
38 | + unprivileged LXC's: (LP: #1598785) |
39 | + - Add new script that does the updates. |
40 | + - Add sudoers file for this script. |
41 | + - Remove the password dialog in the UI. |
42 | + * Add functionality to "favorite" the Libertine scope upon first |
43 | + installation of the Puritine click package. (LP: #1602397) |
44 | + * Bump version to 1.3. |
45 | + |
46 | + [ Larry Price ] |
47 | + * Allow adding all forms of additional archives to containers. |
48 | + * Support adding private PPAs inside of a container. (LP: #1599882) |
49 | + |
50 | + -- Chris Townsend <christopher.townsend@canonical.com> Tue, 19 Jul 2016 11:28:00 -0400 |
51 | + |
52 | libertine (1.2.2+16.10.20160707-0ubuntu1) yakkety; urgency=medium |
53 | |
54 | [ Brandon Schaefer ] |
55 | |
56 | === modified file 'debian/control' |
57 | --- debian/control 2016-06-15 14:48:27 +0000 |
58 | +++ debian/control 2016-07-21 17:26:05 +0000 |
59 | @@ -116,6 +116,8 @@ |
60 | uidmap, |
61 | ${misc:Depends}, |
62 | ${python3:Depends} |
63 | +Replaces: libertine-tools (<< 1.3) |
64 | +Breaks: libertine-tools (<< 1.3) |
65 | Description: Python3 scripts for the Libertine application sandbox |
66 | This package provides the LXC-based container back end module for the |
67 | Libertine sandbox. It requires support for unprivileged LXC containers in the |
68 | |
69 | === modified file 'debian/libertine-tools.install' |
70 | --- debian/libertine-tools.install 2016-06-07 19:49:27 +0000 |
71 | +++ debian/libertine-tools.install 2016-07-21 17:26:05 +0000 |
72 | @@ -1,12 +1,9 @@ |
73 | usr/bin/libertine-launch |
74 | usr/bin/libertine-session-bridge |
75 | usr/bin/libertine-container-manager |
76 | -usr/bin/libertine-lxc-manager |
77 | usr/bin/libertine-xmir |
78 | usr/share/bash-completion/completions/libertine-container-manager |
79 | usr/lib/*/libertine/update-puritine-containers |
80 | usr/share/man |
81 | -usr/share/libertine/libertine-lxc.conf |
82 | -usr/share/upstart/sessions/libertine-lxc-manager.conf |
83 | usr/share/upstart/sessions/libertine-xmir.conf |
84 | usr/share/click/frameworks/puritine-15.04.1.framework |
85 | |
86 | === modified file 'debian/python3-libertine-lxc.install' |
87 | --- debian/python3-libertine-lxc.install 2015-11-30 14:37:36 +0000 |
88 | +++ debian/python3-libertine-lxc.install 2016-07-21 17:26:05 +0000 |
89 | @@ -1,1 +1,6 @@ |
90 | usr/lib/python*/*/libertine/LxcContainer.py |
91 | +usr/bin/libertine-lxc-manager |
92 | +usr/share/libertine/libertine-lxc.conf |
93 | +usr/share/upstart/sessions/libertine-lxc-manager.conf |
94 | +etc/sudoers.d/libertine-lxc-sudo |
95 | +usr/bin/libertine-lxc-setup |
96 | |
97 | === modified file 'libertine/ContainerManager.cpp' |
98 | --- libertine/ContainerManager.cpp 2016-06-08 21:56:53 +0000 |
99 | +++ libertine/ContainerManager.cpp 2016-07-21 17:26:05 +0000 |
100 | @@ -17,6 +17,7 @@ |
101 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
102 | */ |
103 | #include "libertine/ContainerManager.h" |
104 | +#include <QTemporaryFile> |
105 | |
106 | |
107 | namespace |
108 | @@ -34,10 +35,12 @@ |
109 | constexpr auto libertine_container_manager_tool = "libertine-container-manager"; |
110 | |
111 | |
112 | -static const QString readAllStdOutOrStdErr(QProcess& proc) |
113 | +static const QString readAllStdOutOrStdErr(QProcess& proc, const QString& default_output = "") |
114 | { |
115 | - auto out = proc.readAllStandardOutput(); |
116 | - return out.isEmpty() ? proc.readAllStandardError() : out; |
117 | + QByteArray out = proc.readAllStandardOutput(), |
118 | + err = proc.readAllStandardError(); |
119 | + return !out.isEmpty() ? out |
120 | + : !err.isEmpty() ? err : default_output; |
121 | } |
122 | |
123 | |
124 | @@ -175,7 +178,7 @@ |
125 | [=](int exitCode, QProcess::ExitStatus){ |
126 | if (exitCode != 0) |
127 | { |
128 | - emit error(PACKAGE_INSTALLATION_FAILED.arg(package_name), process_output_.isEmpty() ? process_.readAllStandardError() : process_output_); |
129 | + emit error(PACKAGE_INSTALLATION_FAILED.arg(package_name), readAllStdOutOrStdErr(process_, process_output_)); |
130 | } |
131 | emit operationFinished(container_id, package_name); |
132 | }); |
133 | @@ -268,13 +271,14 @@ |
134 | if (!output.isEmpty()) |
135 | { |
136 | emit updateOperationDetails(container_id, "", output); |
137 | + process_output_ += output; |
138 | } |
139 | }); |
140 | connect(&process_, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), |
141 | [=](int exitCode, QProcess::ExitStatus){ |
142 | if (exitCode != 0) |
143 | { |
144 | - emit error(CONTAINER_CONFIGURE_FAILED.arg(container_name), readAllStdOutOrStdErr(process_)); |
145 | + emit error(CONTAINER_CONFIGURE_FAILED.arg(container_name), readAllStdOutOrStdErr(process_, process_output_)); |
146 | } |
147 | else |
148 | { |
149 | @@ -290,6 +294,29 @@ |
150 | |
151 | |
152 | void ContainerManagerWorker:: |
153 | +addArchive(const QString& container_id, const QString& container_name, const QString& archive, const QByteArray& signing_key) |
154 | +{ |
155 | + QStringList command{"--archive", "add", "--archive-name", archive}; |
156 | + if (!signing_key.isEmpty()) |
157 | + { |
158 | + QTemporaryFile keyfile; |
159 | + if (!keyfile.open()) |
160 | + { |
161 | + emit error(CONTAINER_CONFIGURE_FAILED.arg(container_name), keyfile.errorString()); |
162 | + return; |
163 | + } |
164 | + |
165 | + keyfile.setAutoRemove(false); |
166 | + keyfile.write(signing_key); |
167 | + |
168 | + command << "--public-key-file" << keyfile.fileName(); |
169 | + } |
170 | + |
171 | + configureContainer(container_id, container_name, command); |
172 | +} |
173 | + |
174 | + |
175 | +void ContainerManagerWorker:: |
176 | fixIntegrity() |
177 | { |
178 | process_.start(libertine_container_manager_tool, QStringList{"fix-integrity"}); |
179 | |
180 | === modified file 'libertine/ContainerManager.h' |
181 | --- libertine/ContainerManager.h 2016-06-08 21:12:57 +0000 |
182 | +++ libertine/ContainerManager.h 2016-07-21 17:26:05 +0000 |
183 | @@ -42,6 +42,7 @@ |
184 | Q_INVOKABLE void updateContainer(const QString& container_id, const QString& container_name); |
185 | Q_INVOKABLE void runCommand(const QString& container_id, const QString& container_name, const QString& command_line); |
186 | Q_INVOKABLE void configureContainer(const QString& container_id, const QString& container_name, const QStringList& configure_command); |
187 | + Q_INVOKABLE void addArchive(const QString& container_id, const QString& container_name, const QString& archive, const QByteArray& signing_key); |
188 | Q_INVOKABLE void fixIntegrity(); |
189 | Q_INVOKABLE void setDefaultContainer(const QString& container_id, bool should_clear); |
190 | |
191 | |
192 | === removed file 'libertine/PasswordHelper.cpp' |
193 | --- libertine/PasswordHelper.cpp 2016-04-21 13:43:38 +0000 |
194 | +++ libertine/PasswordHelper.cpp 1970-01-01 00:00:00 +0000 |
195 | @@ -1,123 +0,0 @@ |
196 | -/** |
197 | - * @file PasswordHelper.cpp |
198 | - * @brief Helper class for managing password entry |
199 | - */ |
200 | -/* |
201 | - * Copyright 2015 Canonical Ltd |
202 | - * |
203 | - * Libertine is free software: you can redistribute it and/or modify it under |
204 | - * the terms of the GNU General Public License, version 3, as published by the |
205 | - * Free Software Foundation. |
206 | - * |
207 | - * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY |
208 | - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
209 | - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
210 | - * |
211 | - * You should have received a copy of the GNU General Public License |
212 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
213 | - */ |
214 | -#include "libertine/PasswordHelper.h" |
215 | - |
216 | -#include <iostream> |
217 | -#include <termios.h> |
218 | -#include <unistd.h> |
219 | - |
220 | -using namespace std; |
221 | - |
222 | -namespace |
223 | -{ |
224 | - |
225 | -struct pam_response *reply; |
226 | - |
227 | -int function_conversation(int, const struct pam_message**, struct pam_response **resp, void*) |
228 | -{ |
229 | - *resp = reply; |
230 | - return PAM_SUCCESS; |
231 | -} |
232 | - |
233 | -void set_stdin_echo(bool enable = true) |
234 | -{ |
235 | - struct termios tty; |
236 | - |
237 | - tcgetattr(STDIN_FILENO, &tty); |
238 | - if (!enable) |
239 | - tty.c_lflag &= ~ECHO; |
240 | - else |
241 | - tty.c_lflag |= ECHO; |
242 | - |
243 | - (void) tcsetattr(STDIN_FILENO, TCSANOW, &tty); |
244 | -} |
245 | - |
246 | -} // anonymous namespace |
247 | - |
248 | - |
249 | -PasswordHelper:: |
250 | -PasswordHelper() |
251 | -{ |
252 | -} |
253 | - |
254 | - |
255 | -PasswordHelper:: |
256 | -~PasswordHelper() |
257 | -{ |
258 | -} |
259 | - |
260 | - |
261 | -QString PasswordHelper:: |
262 | -GetPassword() |
263 | -{ |
264 | - string password; |
265 | - |
266 | - cout << "Please enter your password:" << endl; |
267 | - |
268 | - set_stdin_echo(false); |
269 | - getline(cin, password); |
270 | - set_stdin_echo(true); |
271 | - |
272 | - if (cin.fail() || cin.eof()) |
273 | - { |
274 | - return nullptr; |
275 | - } |
276 | - else |
277 | - { |
278 | - return QString::fromStdString(password); |
279 | - } |
280 | -} |
281 | - |
282 | - |
283 | -bool PasswordHelper:: |
284 | -VerifyUserPassword(QString const& password) |
285 | -{ |
286 | - char *username = getenv("USER"); |
287 | - int retval; |
288 | - |
289 | - const struct pam_conv local_conversation = { function_conversation, NULL }; |
290 | - pam_handle_t *local_auth_handle = NULL; |
291 | - |
292 | - retval = pam_start("common_auth", username, &local_conversation, &local_auth_handle); |
293 | - |
294 | - if (retval != PAM_SUCCESS) |
295 | - { |
296 | - return false; |
297 | - } |
298 | - |
299 | - reply = (struct pam_response *)malloc(sizeof(struct pam_response)); |
300 | - |
301 | - reply[0].resp = strdup(password.toStdString().c_str()); |
302 | - reply[0].resp_retcode = 0; |
303 | - |
304 | - retval = pam_authenticate(local_auth_handle, 0); |
305 | - |
306 | - if (retval != PAM_SUCCESS) |
307 | - { |
308 | - return false; |
309 | - } |
310 | - |
311 | - retval = pam_end(local_auth_handle, retval); |
312 | - |
313 | - if (retval != PAM_SUCCESS) |
314 | - { |
315 | - return false; |
316 | - } |
317 | - return true; |
318 | -} |
319 | |
320 | === removed file 'libertine/PasswordHelper.h' |
321 | --- libertine/PasswordHelper.h 2015-09-02 18:58:33 +0000 |
322 | +++ libertine/PasswordHelper.h 1970-01-01 00:00:00 +0000 |
323 | @@ -1,43 +0,0 @@ |
324 | -/** |
325 | - * @file PasswordHelper.h |
326 | - * @brief Helper class for managing password entry |
327 | - */ |
328 | -/* |
329 | - * Copyright 2015 Canonical Ltd |
330 | - * |
331 | - * Libertine is free software: you can redistribute it and/or modify it under |
332 | - * the terms of the GNU General Public License, version 3, as published by the |
333 | - * Free Software Foundation. |
334 | - * |
335 | - * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY |
336 | - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
337 | - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
338 | - * |
339 | - * You should have received a copy of the GNU General Public License |
340 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
341 | - */ |
342 | -#ifndef LIBERTINE_PASSWORD_HELPER_H_ |
343 | -#define LIBERTINE_PASSWORD_HELPER_H_ |
344 | - |
345 | -#include <iostream> |
346 | -#include <security/pam_appl.h> |
347 | -#include <QtCore/QObject> |
348 | -#include <QtCore/QString> |
349 | - |
350 | -class PasswordHelper |
351 | -: public QObject |
352 | -{ |
353 | - Q_OBJECT |
354 | - |
355 | -public: |
356 | - PasswordHelper(); |
357 | - ~PasswordHelper(); |
358 | - |
359 | - QString |
360 | - GetPassword(); |
361 | - |
362 | - Q_INVOKABLE bool |
363 | - VerifyUserPassword(QString const& password); |
364 | -}; |
365 | - |
366 | -#endif /* LIBERTINE_PASSWORD_HELPER_H_ */ |
367 | |
368 | === modified file 'libertine/libertine.cpp' |
369 | --- libertine/libertine.cpp 2016-03-09 15:09:05 +0000 |
370 | +++ libertine/libertine.cpp 2016-07-21 17:26:05 +0000 |
371 | @@ -26,7 +26,6 @@ |
372 | #include "libertine/ContainerConfigList.h" |
373 | #include "libertine/libertine.h" |
374 | #include "libertine/LibertineConfig.h" |
375 | -#include "libertine/PasswordHelper.h" |
376 | #include <QtCore/QDebug> |
377 | #include <QtCore/QDir> |
378 | #include <QtCore/QFile> |
379 | @@ -94,7 +93,6 @@ |
380 | config_.reset(new LibertineConfig(*this)); |
381 | qmlRegisterType<ContainerConfig>("Libertine", 1, 0, "ContainerConfig"); |
382 | qmlRegisterType<ContainerManagerWorker>("Libertine", 1, 0, "ContainerManagerWorker"); |
383 | - qmlRegisterType<PasswordHelper>("Libertine", 1, 0, "PasswordHelper"); |
384 | |
385 | watcher_.addPath(config_.data()->containers_config_file_name()); |
386 | connect(&watcher_, SIGNAL(fileChanged(QString)), SLOT(reload_config(QString))); |
387 | @@ -107,7 +105,6 @@ |
388 | containers_ = new ContainerConfigList(config_.data(), this); |
389 | container_apps_ = new ContainerAppsList(containers_, this); |
390 | container_archives_ = new ContainerArchivesList(containers_, this); |
391 | - password_helper_ = new PasswordHelper(); |
392 | |
393 | initialize_view(); |
394 | view_.show(); |
395 | @@ -134,7 +131,6 @@ |
396 | ctxt->setContextProperty("containerConfigList", containers_); |
397 | ctxt->setContextProperty("containerAppsList", container_apps_); |
398 | ctxt->setContextProperty("containerArchivesList", container_archives_); |
399 | - ctxt->setContextProperty("passwordHelper", password_helper_); |
400 | |
401 | view_.setSource(QUrl::fromLocalFile(main_qml_source_file_)); |
402 | connect(view_.engine(), SIGNAL(quit()), SLOT(quit())); |
403 | |
404 | === modified file 'libertine/libertine.h' |
405 | --- libertine/libertine.h 2016-03-09 15:09:05 +0000 |
406 | +++ libertine/libertine.h 2016-07-21 17:26:05 +0000 |
407 | @@ -28,7 +28,6 @@ |
408 | |
409 | class ContainerConfigList; |
410 | class LibertineConfig; |
411 | -class PasswordHelper; |
412 | class ContainerAppsList; |
413 | class ContainerArchivesList; |
414 | |
415 | @@ -57,7 +56,6 @@ |
416 | ContainerConfigList* containers_; |
417 | ContainerAppsList* container_apps_; |
418 | ContainerArchivesList* container_archives_; |
419 | - PasswordHelper* password_helper_; |
420 | QQuickView view_; |
421 | }; |
422 | |
423 | |
424 | === added file 'libertine/qml/AddExtraArchiveView.qml' |
425 | --- libertine/qml/AddExtraArchiveView.qml 1970-01-01 00:00:00 +0000 |
426 | +++ libertine/qml/AddExtraArchiveView.qml 2016-07-21 17:26:05 +0000 |
427 | @@ -0,0 +1,117 @@ |
428 | +/** |
429 | + * @file AddExtraArchiveView.qml |
430 | + * @brief Libertine container add archive view |
431 | + */ |
432 | +/* |
433 | + * Copyright 2016 Canonical Ltd |
434 | + * |
435 | + * Libertine is free software: you can redistribute it and/or modify it under |
436 | + * the terms of the GNU General Public License, version 3, as published by the |
437 | + * Free Software Foundation. |
438 | + * |
439 | + * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY |
440 | + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
441 | + * A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
442 | + * |
443 | + * You should have received a copy of the GNU General Public License |
444 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
445 | + */ |
446 | +import Libertine 1.0 |
447 | +import QtQuick 2.4 |
448 | +import Ubuntu.Components 1.3 |
449 | + |
450 | +Page { |
451 | + id: addExtraArchiveView |
452 | + header: PageHeader { |
453 | + id: pageHeader |
454 | + title: i18n.tr("Add Archive") |
455 | + } |
456 | + property string currentContainer: "" |
457 | + |
458 | + Column { |
459 | + spacing: units.gu(2) |
460 | + |
461 | + anchors { |
462 | + topMargin: pageHeader.height + units.gu(2) |
463 | + leftMargin: units.gu(2) |
464 | + rightMargin: units.gu(2) |
465 | + fill: parent |
466 | + } |
467 | + |
468 | + Label { |
469 | + text: i18n.tr("New archive identifier, e.g.") |
470 | + anchors { |
471 | + left: parent.left |
472 | + right: parent.right |
473 | + } |
474 | + } |
475 | + |
476 | + TextEdit { |
477 | + text: i18n.tr("multiverse\nppa:user/repository\ndeb http://myserver/repo stable repo") |
478 | + anchors { |
479 | + left: parent.left |
480 | + right: parent.right |
481 | + leftMargin: units.gu(4) |
482 | + } |
483 | + |
484 | + readOnly: true |
485 | + color: UbuntuColors.darkGrey |
486 | + } |
487 | + |
488 | + TextField { |
489 | + id: extraArchiveString |
490 | + anchors { |
491 | + left: parent.left |
492 | + right: parent.right |
493 | + } |
494 | + onAccepted: { |
495 | + addArchive() |
496 | + } |
497 | + } |
498 | + |
499 | + Label { |
500 | + text: i18n.tr("(Optional) Public signing key for archive") |
501 | + anchors { |
502 | + left: parent.left |
503 | + right: parent.right |
504 | + } |
505 | + } |
506 | + |
507 | + TextArea { |
508 | + id: publicSigningKey |
509 | + anchors { |
510 | + left: parent.left |
511 | + right: parent.right |
512 | + } |
513 | + height: Math.max(addExtraArchiveView.height/3, units.gu(6)) |
514 | + } |
515 | + |
516 | + Button { |
517 | + text: i18n.tr("Add") |
518 | + color: UbuntuColors.green |
519 | + onClicked: { |
520 | + addArchive() |
521 | + } |
522 | + } |
523 | + } |
524 | + |
525 | + function addArchive() { |
526 | + var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) |
527 | + worker.finishedConfigure.connect(finishedConfigure) |
528 | + worker.error.connect(mainView.error) |
529 | + worker.addArchive(currentContainer, containerConfigList.getContainerName(currentContainer), |
530 | + extraArchiveString.text, publicSigningKey.text.trim()) |
531 | + |
532 | + pageStack.pop() |
533 | + } |
534 | + |
535 | + Component.onCompleted: { |
536 | + extraArchiveString.forceActiveFocus() |
537 | + } |
538 | + |
539 | + function finishedConfigure() { |
540 | + if (addExtraArchiveView) { |
541 | + containerArchivesList.setContainerArchives(currentContainer) |
542 | + } |
543 | + } |
544 | +} |
545 | |
546 | === modified file 'libertine/qml/ContainerOptionsDialog.qml' |
547 | --- libertine/qml/ContainerOptionsDialog.qml 2016-05-06 21:13:01 +0000 |
548 | +++ libertine/qml/ContainerOptionsDialog.qml 2016-07-21 17:26:05 +0000 |
549 | @@ -26,10 +26,9 @@ |
550 | id: containerOptionsDialog |
551 | title: i18n.tr("Container Options") |
552 | text: i18n.tr("Configure options for container creation.") |
553 | - property var showPasswordDialog: false |
554 | - signal passwordDialogSignal(var enableMultiarch, var containerName) |
555 | |
556 | Row { |
557 | + visible: containerConfigList.getHostArchitecture() == 'x86_64' ? true : false |
558 | spacing: units.gu(1) |
559 | CheckBox { |
560 | id: enableMultiarchCheckbox |
561 | @@ -47,7 +46,7 @@ |
562 | |
563 | Label { |
564 | id: containerNameText |
565 | - text: i18n.tr("Enter or name for the container or leave blank for default name") |
566 | + text: i18n.tr("Enter a name for the container or leave blank for default name:") |
567 | wrapMode: Text.Wrap |
568 | } |
569 | |
570 | @@ -57,6 +56,20 @@ |
571 | onAccepted: okButton.clicked() |
572 | } |
573 | |
574 | + Label { |
575 | + id: containerPasswordText |
576 | + visible: true |
577 | + text: i18n.tr("Enter password for your user in the Libertine container or leave blank for no password:") |
578 | + wrapMode: Text.Wrap |
579 | + } |
580 | + |
581 | + TextField { |
582 | + id: containerPasswordInput |
583 | + visible: containerPasswordText.visible |
584 | + placeholderText: i18n.tr("password") |
585 | + echoMode: TextInput.Password |
586 | + } |
587 | + |
588 | Row { |
589 | spacing: units.gu(1) |
590 | Button { |
591 | @@ -65,7 +78,7 @@ |
592 | color: UbuntuColors.green |
593 | width: (parent.width - parent.spacing) / 2 |
594 | onClicked: { |
595 | - showPasswordDialog = true |
596 | + createContainer() |
597 | PopupUtils.close(containerOptionsDialog) |
598 | } |
599 | } |
600 | @@ -79,9 +92,18 @@ |
601 | } |
602 | } |
603 | |
604 | - Component.onDestruction: { |
605 | - if (showPasswordDialog) { |
606 | - passwordDialogSignal(enableMultiarchCheckbox.checked, containerNameInput.text) |
607 | - } |
608 | + function createContainer() { |
609 | + var container_id = containerConfigList.addNewContainer("lxc", containerNameInput.text) |
610 | + var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) |
611 | + |
612 | + worker.updateOperationDetails.connect(mainView.updateOperationDetails) |
613 | + worker.operationFinished.connect(mainView.resetOperationDetails) |
614 | + worker.error.connect(mainView.error) |
615 | + |
616 | + worker.createContainer(container_id, |
617 | + containerConfigList.getContainerName(container_id), |
618 | + containerConfigList.getContainerDistro(container_id), |
619 | + enableMultiarchCheckbox.checked, |
620 | + containerPasswordInput.text) |
621 | } |
622 | } |
623 | |
624 | === removed file 'libertine/qml/ContainerPasswordDialog.qml' |
625 | --- libertine/qml/ContainerPasswordDialog.qml 2016-06-10 13:22:16 +0000 |
626 | +++ libertine/qml/ContainerPasswordDialog.qml 1970-01-01 00:00:00 +0000 |
627 | @@ -1,98 +0,0 @@ |
628 | -/** |
629 | - * @file ContainerPasswordDialog.qml |
630 | - * @brief Libertine container password dialog |
631 | - */ |
632 | -/* |
633 | - * Copyright 2016 Canonical Ltd |
634 | - * |
635 | - * Libertine is free software: you can redistribute it and/or modify it under |
636 | - * the terms of the GNU General Public License, version 3, as published by the |
637 | - * Free Software Foundation. |
638 | - * |
639 | - * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY |
640 | - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
641 | - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
642 | - * |
643 | - * You should have received a copy of the GNU General Public License |
644 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
645 | - */ |
646 | -import Libertine 1.0 |
647 | -import QtQuick 2.4 |
648 | -import Ubuntu.Components 1.3 |
649 | -import Ubuntu.Components.Popups 1.3 |
650 | - |
651 | - |
652 | -Dialog { |
653 | - id: passwordDialog |
654 | - title: i18n.tr("Authentication required") |
655 | - text: i18n.tr("Password is required to create a Libertine container") |
656 | - property var enableMultiarch: false |
657 | - property var containerName: null |
658 | - property var switchPage: false |
659 | - |
660 | - Label { |
661 | - id: invalidPasswordText |
662 | - visible: false |
663 | - text: i18n.tr("Invalid password entered") |
664 | - } |
665 | - |
666 | - TextField { |
667 | - id: passwordInput |
668 | - placeholderText: i18n.tr("password") |
669 | - echoMode: TextInput.Password |
670 | - |
671 | - onAccepted: okButton.clicked() |
672 | - } |
673 | - |
674 | - Row { |
675 | - spacing: units.gu(1) |
676 | - |
677 | - Button { |
678 | - id: okButton |
679 | - text: i18n.tr("OK") |
680 | - color: UbuntuColors.green |
681 | - width: (parent.width - parent.spacing) / 2 |
682 | - onClicked: { |
683 | - if (passwordHelper.VerifyUserPassword(passwordInput.text)) { |
684 | - passwordAccepted(text) |
685 | - switchPage = true |
686 | - PopupUtils.close(passwordDialog) |
687 | - } |
688 | - else { |
689 | - invalidPasswordText.visible = true |
690 | - } |
691 | - passwordInput.text = "" |
692 | - } |
693 | - } |
694 | - |
695 | - Button { |
696 | - id: cancelButton |
697 | - text: i18n.tr("Cancel") |
698 | - color: UbuntuColors.red |
699 | - width: (parent.width - parent.spacing) / 2 |
700 | - onClicked: PopupUtils.close(passwordDialog) |
701 | - } |
702 | - } |
703 | - |
704 | - Component.onCompleted: passwordInput.forceActiveFocus() |
705 | - |
706 | - Component.onDestruction: { |
707 | - if (switchPage) { |
708 | - pageStack.clear() |
709 | - pageStack.push(Qt.resolvedUrl("ContainersView.qml")) |
710 | - } |
711 | - } |
712 | - |
713 | - function passwordAccepted(password) { |
714 | - var container_id = containerConfigList.addNewContainer("lxc", containerName) |
715 | - var comp = Qt.createComponent("ContainerManager.qml") |
716 | - var worker = comp.createObject(mainView) |
717 | - |
718 | - worker.updateOperationDetails.connect(mainView.updateOperationDetails) |
719 | - worker.operationFinished.connect(mainView.resetOperationDetails) |
720 | - worker.error.connect(mainView.error) |
721 | - |
722 | - worker.createContainer(container_id, containerConfigList.getContainerName(container_id), |
723 | - containerConfigList.getContainerDistro(container_id), enableMultiarch, password) |
724 | - } |
725 | -} |
726 | |
727 | === modified file 'libertine/qml/ContainersView.qml' |
728 | --- libertine/qml/ContainersView.qml 2016-06-08 21:36:14 +0000 |
729 | +++ libertine/qml/ContainersView.qml 2016-07-21 17:26:05 +0000 |
730 | @@ -35,8 +35,7 @@ |
731 | Action { |
732 | iconName: "add" |
733 | onTriggered: { |
734 | - var popup = PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) |
735 | - popup.passwordDialogSignal.connect(showPasswordDialog) |
736 | + PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) |
737 | } |
738 | } |
739 | ] |
740 | |
741 | === modified file 'libertine/qml/ExtraArchivesView.qml' |
742 | --- libertine/qml/ExtraArchivesView.qml 2016-06-27 14:43:49 +0000 |
743 | +++ libertine/qml/ExtraArchivesView.qml 2016-07-21 17:26:05 +0000 |
744 | @@ -1,6 +1,6 @@ |
745 | /** |
746 | * @file ExtraArchiveView.qml |
747 | - * @brief Libertine container add archive view |
748 | + * @brief Libertine container extra archive view |
749 | */ |
750 | /* |
751 | * Copyright 2016 Canonical Ltd |
752 | @@ -19,59 +19,25 @@ |
753 | import Libertine 1.0 |
754 | import QtQuick 2.4 |
755 | import Ubuntu.Components 1.3 |
756 | -import Ubuntu.Components.Popups 1.3 |
757 | |
758 | Page { |
759 | id: extraArchiveView |
760 | header: PageHeader { |
761 | id: pageHeader |
762 | - title: i18n.tr("Additional Archives and PPAs") |
763 | + title: i18n.tr("Additional Archives") |
764 | trailingActionBar.actions: [ |
765 | Action { |
766 | iconName: "add" |
767 | text: i18n.tr("add") |
768 | - description: i18n.tr("Add a new PPA") |
769 | - onTriggered: PopupUtils.open(addArchivePopup) |
770 | + description: i18n.tr("Add a new archive") |
771 | + onTriggered: pageStack.push(Qt.resolvedUrl("AddExtraArchiveView.qml"), {currentContainer: currentContainer}) |
772 | } |
773 | ] |
774 | } |
775 | - property var archive_name: null |
776 | - property var worker: null |
777 | + property string currentContainer: "" |
778 | + |
779 | signal error(string description, string details) |
780 | |
781 | - Component { |
782 | - id: addArchivePopup |
783 | - Dialog { |
784 | - id: addArchiveDialog |
785 | - title: i18n.tr("Add additional PPA") |
786 | - text: i18n.tr("Enter name of PPA in the form ppa:user/ppa-name:") |
787 | - |
788 | - TextField { |
789 | - id: extraArchiveString |
790 | - onAccepted: { |
791 | - PopupUtils.close(addArchiveDialog) |
792 | - addArchive(text) |
793 | - } |
794 | - } |
795 | - Button { |
796 | - text: i18n.tr("OK") |
797 | - color: UbuntuColors.green |
798 | - onClicked: { |
799 | - PopupUtils.close(addArchiveDialog) |
800 | - addArchive(extraArchiveString.text) |
801 | - } |
802 | - } |
803 | - Button { |
804 | - text: i18n.tr("Cancel") |
805 | - color: UbuntuColors.red |
806 | - onClicked: PopupUtils.close(addArchiveDialog) |
807 | - } |
808 | - Component.onCompleted: { |
809 | - extraArchiveString.forceActiveFocus() |
810 | - } |
811 | - } |
812 | - } |
813 | - |
814 | UbuntuListView { |
815 | id: extraArchiveList |
816 | anchors { |
817 | @@ -88,6 +54,8 @@ |
818 | leftMargin: units.gu(2) |
819 | } |
820 | text: archiveName |
821 | + width: parent.width - units.gu(8) |
822 | + elide: Text.ElideMiddle |
823 | } |
824 | ActivityIndicator { |
825 | id: extraArchiveActivity |
826 | @@ -125,18 +93,11 @@ |
827 | text: i18n.tr("No additional archives and PPA's have been added") |
828 | } |
829 | |
830 | - function addArchive(archive) { |
831 | - var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) |
832 | - worker.finishedConfigure.connect(finishedConfigure) |
833 | - worker.error.connect(sendAddError) |
834 | - worker.configureContainer(mainView.currentContainer, containerConfigList.getContainerName(mainView.currentContainer), ["--add-archive", archive]) |
835 | - } |
836 | - |
837 | function deleteArchive(archive) { |
838 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) |
839 | worker.finishedConfigure.connect(finishedConfigure) |
840 | worker.error.connect(sendDeleteError) |
841 | - worker.configureContainer(mainView.currentContainer, containerConfigList.getContainerName(mainView.currentContainer), ["--delete-archive", archive]) |
842 | + worker.configureContainer(currentContainer, containerConfigList.getContainerName(currentContainer), ["--archive", "remove", "--archive-name", "\"" + archive + "\""]) |
843 | } |
844 | |
845 | Component.onCompleted: { |
846 | @@ -146,28 +107,19 @@ |
847 | |
848 | Component.onDestruction: { |
849 | containerConfigList.configChanged.disconnect(reloadArchives) |
850 | - |
851 | error.disconnect(mainView.error) |
852 | - |
853 | - if (worker) { |
854 | - worker.finishedConfigure.disconnect(finishedConfigure) |
855 | - worker.error.disconnect(sendAddError) |
856 | - worker.error.disconnect(sendDeleteError) |
857 | - } |
858 | } |
859 | |
860 | function reloadArchives() { |
861 | - containerArchivesList.setContainerArchives(mainView.currentContainer) |
862 | + containerArchivesList.setContainerArchives(currentContainer) |
863 | |
864 | extraArchiveList.visible = !containerArchivesList.empty() ? true : false |
865 | } |
866 | |
867 | function finishedConfigure() { |
868 | - containerArchivesList.setContainerArchives(mainView.currentContainer) |
869 | - } |
870 | - |
871 | - function sendAddError(desc, details) { |
872 | - error(i18n.tr("Adding archive failed"), details) |
873 | + if (extraArchiveView) { |
874 | + containerArchivesList.setContainerArchives(currentContainer) |
875 | + } |
876 | } |
877 | |
878 | function sendDeleteError(desc, details) { |
879 | |
880 | === modified file 'libertine/qml/ManageContainer.qml' |
881 | --- libertine/qml/ManageContainer.qml 2016-06-08 21:56:53 +0000 |
882 | +++ libertine/qml/ManageContainer.qml 2016-07-21 17:26:05 +0000 |
883 | @@ -74,7 +74,7 @@ |
884 | progression: true |
885 | onClicked: { |
886 | containerArchivesList.setContainerArchives(currentContainer) |
887 | - pageStack.push(Qt.resolvedUrl("ExtraArchivesView.qml")) |
888 | + pageStack.push(Qt.resolvedUrl("ExtraArchivesView.qml"), {currentContainer: currentContainer}) |
889 | } |
890 | } |
891 | |
892 | |
893 | === modified file 'libertine/qml/WelcomeView.qml' |
894 | --- libertine/qml/WelcomeView.qml 2016-05-09 13:24:23 +0000 |
895 | +++ libertine/qml/WelcomeView.qml 2016-07-21 17:26:05 +0000 |
896 | @@ -67,8 +67,7 @@ |
897 | color: UbuntuColors.green |
898 | |
899 | onClicked: { |
900 | - var popup = PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) |
901 | - popup.passwordDialogSignal.connect(showPasswordDialog) |
902 | + PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) |
903 | } |
904 | } |
905 | } |
906 | |
907 | === modified file 'liblibertine/CMakeLists.txt' |
908 | --- liblibertine/CMakeLists.txt 2016-03-09 15:09:05 +0000 |
909 | +++ liblibertine/CMakeLists.txt 2016-07-21 17:26:05 +0000 |
910 | @@ -12,7 +12,6 @@ |
911 | ${libertine_src}/ContainerManager.cpp |
912 | ${libertine_src}/ContainerAppsList.cpp |
913 | ${libertine_src}/ContainerArchivesList.cpp |
914 | - ${libertine_src}/PasswordHelper.cpp |
915 | ) |
916 | set_target_properties(libertine-common PROPERTIES |
917 | VERSION ${ABI_VERSION}.0.0 |
918 | |
919 | === modified file 'po/en_GB.po' |
920 | --- po/en_GB.po 2016-07-15 05:42:05 +0000 |
921 | +++ po/en_GB.po 2016-07-21 17:26:05 +0000 |
922 | @@ -6,15 +6,16 @@ |
923 | msgid "" |
924 | msgstr "" |
925 | "Project-Id-Version: libertine\n" |
926 | -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
927 | +"Report-Msgid-Bugs-To: \n" |
928 | "POT-Creation-Date: 2016-06-07 07:58-0400\n" |
929 | "PO-Revision-Date: 2016-05-20 16:53+0000\n" |
930 | "Last-Translator: Andi Chandler <Unknown>\n" |
931 | "Language-Team: English (United Kingdom) <en_GB@li.org>\n" |
932 | +"Language: \n" |
933 | "MIME-Version: 1.0\n" |
934 | "Content-Type: text/plain; charset=UTF-8\n" |
935 | "Content-Transfer-Encoding: 8bit\n" |
936 | -"X-Launchpad-Export-Date: 2016-07-15 05:42+0000\n" |
937 | +"X-Launchpad-Export-Date: 2016-07-01 06:06+0000\n" |
938 | "X-Generator: Launchpad (build 18115)\n" |
939 | |
940 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
941 | @@ -22,32 +23,32 @@ |
942 | msgstr "new" |
943 | |
944 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
945 | -#: ../libertine/qml/ContainersView.qml:81 |
946 | -#: ../libertine/qml/ExtraArchivesView.qml:106 ../libertine/qml/HomeView.qml:205 |
947 | +#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:197 |
948 | +#: ../libertine/qml/ExtraArchivesView.qml:99 |
949 | msgid "installing" |
950 | msgstr "installing" |
951 | |
952 | -#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:118 |
953 | -#: ../libertine/qml/ManageContainer.qml:85 |
954 | -#: ../libertine/qml/ManageContainer.qml:152 |
955 | +#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:119 |
956 | +#: ../libertine/qml/ManageContainer.qml:79 |
957 | +#: ../libertine/qml/ManageContainer.qml:119 |
958 | msgid "ready" |
959 | msgstr "ready" |
960 | |
961 | -#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:119 |
962 | -#: ../libertine/qml/ManageContainer.qml:97 |
963 | -#: ../libertine/qml/ManageContainer.qml:148 |
964 | +#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:120 |
965 | +#: ../libertine/qml/ManageContainer.qml:91 |
966 | +#: ../libertine/qml/ManageContainer.qml:115 |
967 | msgid "updating" |
968 | msgstr "updating" |
969 | |
970 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
971 | -#: ../libertine/qml/ContainersView.qml:82 |
972 | -#: ../libertine/qml/ExtraArchivesView.qml:107 ../libertine/qml/HomeView.qml:206 |
973 | +#: ../libertine/qml/ContainersView.qml:82 ../libertine/qml/HomeView.qml:198 |
974 | +#: ../libertine/qml/ExtraArchivesView.qml:100 |
975 | msgid "removing" |
976 | msgstr "removing" |
977 | |
978 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
979 | -#: ../libertine/qml/ContainerInfoView.qml:143 |
980 | -#: ../libertine/qml/PackageInfoView.qml:148 |
981 | +#: ../libertine/qml/PackageInfoView.qml:131 |
982 | +#: ../libertine/qml/ContainerInfoView.qml:93 |
983 | msgid "removed" |
984 | msgstr "removed" |
985 | |
986 | @@ -115,7 +116,7 @@ |
987 | msgid "My Containers" |
988 | msgstr "My Containers" |
989 | |
990 | -#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:218 |
991 | +#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:210 |
992 | msgid "delete" |
993 | msgstr "delete" |
994 | |
995 | @@ -123,19 +124,19 @@ |
996 | msgid "Delete Container" |
997 | msgstr "Delete Container" |
998 | |
999 | -#: ../libertine/qml/ContainersView.qml:107 ../libertine/qml/HomeView.qml:230 |
1000 | +#: ../libertine/qml/ContainersView.qml:108 ../libertine/qml/HomeView.qml:222 |
1001 | msgid "info" |
1002 | msgstr "info" |
1003 | |
1004 | -#: ../libertine/qml/ContainersView.qml:108 |
1005 | +#: ../libertine/qml/ContainersView.qml:109 |
1006 | msgid "Container Info" |
1007 | msgstr "Container Info" |
1008 | |
1009 | -#: ../libertine/qml/ContainersView.qml:116 |
1010 | +#: ../libertine/qml/ContainersView.qml:117 |
1011 | msgid "edit" |
1012 | msgstr "edit" |
1013 | |
1014 | -#: ../libertine/qml/ContainersView.qml:117 |
1015 | +#: ../libertine/qml/ContainersView.qml:118 |
1016 | msgid "Container Apps" |
1017 | msgstr "Container Apps" |
1018 | |
1019 | @@ -152,17 +153,17 @@ |
1020 | msgid "search" |
1021 | msgstr "search" |
1022 | |
1023 | +#: ../libertine/qml/SearchPackagesDialog.qml:39 |
1024 | +#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
1025 | +#: ../libertine/qml/HomeView.qml:68 ../libertine/qml/ExtraArchivesView.qml:57 |
1026 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 |
1027 | -#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
1028 | -#: ../libertine/qml/ExtraArchivesView.qml:64 ../libertine/qml/HomeView.qml:68 |
1029 | -#: ../libertine/qml/SearchPackagesDialog.qml:39 |
1030 | msgid "OK" |
1031 | msgstr "OK" |
1032 | |
1033 | +#: ../libertine/qml/SearchPackagesDialog.qml:57 |
1034 | +#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
1035 | +#: ../libertine/qml/HomeView.qml:88 ../libertine/qml/ExtraArchivesView.qml:65 |
1036 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 |
1037 | -#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
1038 | -#: ../libertine/qml/ExtraArchivesView.qml:72 ../libertine/qml/HomeView.qml:88 |
1039 | -#: ../libertine/qml/SearchPackagesDialog.qml:57 |
1040 | msgid "Cancel" |
1041 | msgstr "Cancel" |
1042 | |
1043 | @@ -174,15 +175,15 @@ |
1044 | msgid "Obtaining package version…" |
1045 | msgstr "Obtaining package version…" |
1046 | |
1047 | -#: ../libertine/qml/PackageInfoView.qml:60 |
1048 | +#: ../libertine/qml/PackageInfoView.qml:59 |
1049 | msgid "Package version" |
1050 | msgstr "Package version" |
1051 | |
1052 | -#: ../libertine/qml/PackageInfoView.qml:68 |
1053 | +#: ../libertine/qml/PackageInfoView.qml:67 |
1054 | msgid "Install status" |
1055 | msgstr "Install status" |
1056 | |
1057 | -#: ../libertine/qml/PackageInfoView.qml:159 |
1058 | +#: ../libertine/qml/PackageInfoView.qml:140 |
1059 | msgid "Unknown" |
1060 | msgstr "Unknown" |
1061 | |
1062 | @@ -210,8 +211,8 @@ |
1063 | msgid "Searching for packages…" |
1064 | msgstr "Searching for packages…" |
1065 | |
1066 | +#: ../libertine/qml/SearchResults.qml:60 |
1067 | #: ../libertine/qml/DebianPackagePicker.qml:70 |
1068 | -#: ../libertine/qml/SearchResults.qml:60 |
1069 | msgid "Install Package" |
1070 | msgstr "Install Package" |
1071 | |
1072 | @@ -219,20 +220,20 @@ |
1073 | msgid "Manage %1" |
1074 | msgstr "Manage %1" |
1075 | |
1076 | +#: ../libertine/qml/ManageContainer.qml:63 |
1077 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 |
1078 | -#: ../libertine/qml/ManageContainer.qml:69 |
1079 | msgid "i386 multiarch support" |
1080 | msgstr "i386 multiarch support" |
1081 | |
1082 | -#: ../libertine/qml/ManageContainer.qml:73 |
1083 | +#: ../libertine/qml/ManageContainer.qml:67 |
1084 | msgid "Additional archives and PPAs" |
1085 | msgstr "Additional archives and PPAs" |
1086 | |
1087 | -#: ../libertine/qml/ManageContainer.qml:84 |
1088 | +#: ../libertine/qml/ManageContainer.qml:78 |
1089 | msgid "Update…" |
1090 | msgstr "Update…" |
1091 | |
1092 | -#: ../libertine/qml/ManageContainer.qml:100 |
1093 | +#: ../libertine/qml/ManageContainer.qml:94 |
1094 | msgid "Update container" |
1095 | msgstr "Update container" |
1096 | |
1097 | @@ -282,39 +283,39 @@ |
1098 | msgstr "" |
1099 | "The %1 package is already installed. Please try a different package name." |
1100 | |
1101 | -#: ../libertine/qml/HomeView.qml:105 |
1102 | +#: ../libertine/qml/HomeView.qml:104 |
1103 | msgid "Manage Container" |
1104 | msgstr "Manage Container" |
1105 | |
1106 | -#: ../libertine/qml/HomeView.qml:112 |
1107 | +#: ../libertine/qml/HomeView.qml:110 |
1108 | msgid "Container Information" |
1109 | msgstr "Container Information" |
1110 | |
1111 | -#: ../libertine/qml/HomeView.qml:119 |
1112 | +#: ../libertine/qml/HomeView.qml:116 |
1113 | msgid "Switch Container" |
1114 | msgstr "Switch Container" |
1115 | |
1116 | -#: ../libertine/qml/HomeView.qml:135 |
1117 | +#: ../libertine/qml/HomeView.qml:132 |
1118 | msgid "Enter package name or Debian file" |
1119 | msgstr "Enter package name or Debian file" |
1120 | |
1121 | -#: ../libertine/qml/HomeView.qml:143 |
1122 | +#: ../libertine/qml/HomeView.qml:138 |
1123 | msgid "Choose Debian package to install" |
1124 | msgstr "Choose Debian package to install" |
1125 | |
1126 | -#: ../libertine/qml/HomeView.qml:152 |
1127 | +#: ../libertine/qml/HomeView.qml:145 |
1128 | msgid "Search archives for a package" |
1129 | msgstr "Search archives for a package" |
1130 | |
1131 | -#: ../libertine/qml/HomeView.qml:219 |
1132 | +#: ../libertine/qml/HomeView.qml:211 |
1133 | msgid "Remove Package" |
1134 | msgstr "Remove Package" |
1135 | |
1136 | -#: ../libertine/qml/HomeView.qml:231 |
1137 | +#: ../libertine/qml/HomeView.qml:223 |
1138 | msgid "Package Info" |
1139 | msgstr "Package Info" |
1140 | |
1141 | -#: ../libertine/qml/HomeView.qml:248 |
1142 | +#: ../libertine/qml/HomeView.qml:240 |
1143 | msgid "No packages are installed" |
1144 | msgstr "No packages are installed" |
1145 | |
1146 | @@ -338,27 +339,27 @@ |
1147 | msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
1148 | msgstr "Enter name of PPA in the form ppa:user/ppa-name:" |
1149 | |
1150 | -#: ../libertine/qml/ExtraArchivesView.qml:114 |
1151 | +#: ../libertine/qml/ExtraArchivesView.qml:107 |
1152 | msgid "remove" |
1153 | msgstr "remove" |
1154 | |
1155 | -#: ../libertine/qml/ExtraArchivesView.qml:115 |
1156 | +#: ../libertine/qml/ExtraArchivesView.qml:108 |
1157 | msgid "Remove extra archive" |
1158 | msgstr "Remove extra archive" |
1159 | |
1160 | -#: ../libertine/qml/ExtraArchivesView.qml:132 |
1161 | +#: ../libertine/qml/ExtraArchivesView.qml:125 |
1162 | msgid "No additional archives and PPA's have been added" |
1163 | msgstr "No additional archives and PPAs have been added" |
1164 | |
1165 | -#: ../libertine/qml/ExtraArchivesView.qml:177 |
1166 | +#: ../libertine/qml/ExtraArchivesView.qml:173 |
1167 | msgid "Adding archive failed" |
1168 | msgstr "Adding archive failed" |
1169 | |
1170 | -#: ../libertine/qml/ExtraArchivesView.qml:181 |
1171 | +#: ../libertine/qml/ExtraArchivesView.qml:177 |
1172 | msgid "Deleting archive failed" |
1173 | msgstr "Deleting archive failed" |
1174 | |
1175 | -#: ../libertine/qml/GenericErrorDialog.qml:46 |
1176 | +#: ../libertine/qml/GenericErrorDialog.qml:32 |
1177 | msgid "Dismiss" |
1178 | msgstr "Dismiss" |
1179 | |
1180 | @@ -388,19 +389,19 @@ |
1181 | msgid "Container information for %1" |
1182 | msgstr "Container information for %1" |
1183 | |
1184 | -#: ../libertine/qml/ContainerInfoView.qml:56 |
1185 | +#: ../libertine/qml/ContainerInfoView.qml:53 |
1186 | msgid "ID" |
1187 | msgstr "ID" |
1188 | |
1189 | -#: ../libertine/qml/ContainerInfoView.qml:64 |
1190 | +#: ../libertine/qml/ContainerInfoView.qml:60 |
1191 | msgid "Name" |
1192 | msgstr "Name" |
1193 | |
1194 | -#: ../libertine/qml/ContainerInfoView.qml:72 |
1195 | +#: ../libertine/qml/ContainerInfoView.qml:67 |
1196 | msgid "Distribution" |
1197 | msgstr "Distribution" |
1198 | |
1199 | -#: ../libertine/qml/ContainerInfoView.qml:80 |
1200 | +#: ../libertine/qml/ContainerInfoView.qml:74 |
1201 | msgid "Status" |
1202 | msgstr "Status" |
1203 | |
1204 | @@ -419,3 +420,41 @@ |
1205 | #: ../libertine/qml/ContainerOptionsDialog.qml:56 |
1206 | msgid "container name" |
1207 | msgstr "container name" |
1208 | + |
1209 | +#, fuzzy |
1210 | +#~ msgid "Add" |
1211 | +#~ msgstr "add" |
1212 | + |
1213 | +#, fuzzy |
1214 | +#~ msgid "Add Archive" |
1215 | +#~ msgstr "Adding archive failed" |
1216 | + |
1217 | +#, fuzzy |
1218 | +#~ msgid "Add a new archive" |
1219 | +#~ msgstr "Add additional PPA" |
1220 | + |
1221 | +#, fuzzy |
1222 | +#~ msgid "Additional Archives" |
1223 | +#~ msgstr "Add additional PPA" |
1224 | + |
1225 | +#, fuzzy |
1226 | +#~ msgid "Attempt to set container as default failed" |
1227 | +#~ msgstr "Attempt to configure container %1 failed" |
1228 | + |
1229 | +#, fuzzy |
1230 | +#~ msgid "Default container" |
1231 | +#~ msgstr "Delete Container" |
1232 | + |
1233 | +#, fuzzy |
1234 | +#~ msgid "Enter a name for the container or leave blank for default name:" |
1235 | +#~ msgstr "Enter or name for the container or leave blank for default name" |
1236 | + |
1237 | +#, fuzzy |
1238 | +#~ msgid "" |
1239 | +#~ "Enter password for your user in the Libertine container or leave blank " |
1240 | +#~ "for no password:" |
1241 | +#~ msgstr "Enter or name for the container or leave blank for default name" |
1242 | + |
1243 | +#, fuzzy |
1244 | +#~ msgid "new archive name" |
1245 | +#~ msgstr "Adding archive failed" |
1246 | |
1247 | === modified file 'po/en_US.po' |
1248 | --- po/en_US.po 2016-06-10 12:07:31 +0000 |
1249 | +++ po/en_US.po 2016-07-21 17:26:05 +0000 |
1250 | @@ -7,7 +7,7 @@ |
1251 | msgstr "" |
1252 | "Project-Id-Version: PACKAGE VERSION\n" |
1253 | "Report-Msgid-Bugs-To: \n" |
1254 | -"POT-Creation-Date: 2016-06-07 07:58-0400\n" |
1255 | +"POT-Creation-Date: 2016-07-15 14:24-0400\n" |
1256 | "PO-Revision-Date: 2016-03-21 10:21-0400\n" |
1257 | "Last-Translator: Chris Townsend <christopher.townsend@canonical.com>\n" |
1258 | "Language-Team: English\n" |
1259 | @@ -17,348 +17,332 @@ |
1260 | "Content-Transfer-Encoding: 8bit\n" |
1261 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
1262 | |
1263 | -#: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
1264 | -msgid "new" |
1265 | -msgstr "new" |
1266 | - |
1267 | -#: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
1268 | -#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:197 |
1269 | -#: ../libertine/qml/ExtraArchivesView.qml:99 |
1270 | -msgid "installing" |
1271 | -msgstr "installing" |
1272 | - |
1273 | -#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:119 |
1274 | -#: ../libertine/qml/ManageContainer.qml:79 |
1275 | -#: ../libertine/qml/ManageContainer.qml:119 |
1276 | -msgid "ready" |
1277 | -msgstr "ready" |
1278 | - |
1279 | -#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:120 |
1280 | -#: ../libertine/qml/ManageContainer.qml:91 |
1281 | -#: ../libertine/qml/ManageContainer.qml:115 |
1282 | -msgid "updating" |
1283 | -msgstr "updating" |
1284 | - |
1285 | -#: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
1286 | -#: ../libertine/qml/ContainersView.qml:82 ../libertine/qml/HomeView.qml:198 |
1287 | -#: ../libertine/qml/ExtraArchivesView.qml:100 |
1288 | -msgid "removing" |
1289 | -msgstr "removing" |
1290 | - |
1291 | -#: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
1292 | -#: ../libertine/qml/PackageInfoView.qml:131 |
1293 | -#: ../libertine/qml/ContainerInfoView.qml:93 |
1294 | -msgid "removed" |
1295 | -msgstr "removed" |
1296 | - |
1297 | -#: ../libertine/ContainerConfig.cpp:153 ../libertine/ContainerConfig.cpp:187 |
1298 | -msgid "failed" |
1299 | -msgstr "failed" |
1300 | - |
1301 | -#: ../libertine/ContainerConfig.cpp:186 |
1302 | -msgid "installed" |
1303 | -msgstr "installed" |
1304 | - |
1305 | -#: ../libertine/ContainerManager.cpp:24 |
1306 | +#: ../libertine/ContainerManager.cpp:25 |
1307 | msgid "%1 failed to start" |
1308 | msgstr "%1 failed to start" |
1309 | |
1310 | -#: ../libertine/ContainerManager.cpp:25 |
1311 | -msgid "Installation of package %1 failed" |
1312 | -msgstr "Installation of package %1 failed" |
1313 | - |
1314 | -#: ../libertine/ContainerManager.cpp:26 |
1315 | -msgid "Removal of package %1 failed" |
1316 | -msgstr "Removal of package %1 failed" |
1317 | - |
1318 | -#: ../libertine/ContainerManager.cpp:27 |
1319 | -msgid "Searching for query %1 failed" |
1320 | -msgstr "Searching for query %1 failed" |
1321 | - |
1322 | -#: ../libertine/ContainerManager.cpp:28 |
1323 | -msgid "Updating container %1 failed" |
1324 | -msgstr "Updating container %1 failed" |
1325 | - |
1326 | -#: ../libertine/ContainerManager.cpp:29 |
1327 | +#: ../libertine/qml/AddExtraArchiveView.qml:73 |
1328 | +msgid "(Optional) Public signing key for archive" |
1329 | +msgstr "" |
1330 | + |
1331 | +#: ../libertine/qml/AddExtraArchiveView.qml:90 |
1332 | +#, fuzzy |
1333 | +msgid "Add" |
1334 | +msgstr "add" |
1335 | + |
1336 | +#: ../libertine/qml/AddExtraArchiveView.qml:27 |
1337 | +#, fuzzy |
1338 | +msgid "Add Archive" |
1339 | +msgstr "Adding archive failed" |
1340 | + |
1341 | +#: ../libertine/qml/ExtraArchivesView.qml:32 |
1342 | +#, fuzzy |
1343 | +msgid "Add a new archive" |
1344 | +msgstr "Add additional PPA" |
1345 | + |
1346 | +#: ../libertine/qml/ExtraArchivesView.qml:27 |
1347 | +#, fuzzy |
1348 | +msgid "Additional Archives" |
1349 | +msgstr "Add additional PPA" |
1350 | + |
1351 | +#: ../libertine/qml/ManageContainer.qml:73 |
1352 | +msgid "Additional archives and PPAs" |
1353 | +msgstr "Additional archives and PPAs" |
1354 | + |
1355 | +#: ../libertine/ContainerManager.cpp:33 |
1356 | +msgid "Attempt to configure container %1 failed" |
1357 | +msgstr "Attempt to configure container %1 failed" |
1358 | + |
1359 | +#: ../libertine/ContainerManager.cpp:34 |
1360 | +#, fuzzy |
1361 | +msgid "Attempt to set container as default failed" |
1362 | +msgstr "Attempt to configure container %1 failed" |
1363 | + |
1364 | +#: ../libertine/qml/DebianPackagePicker.qml:28 |
1365 | +msgid "Available Debian Packages to Install" |
1366 | +msgstr "Available Debian Packages to Install" |
1367 | + |
1368 | +#: ../libertine/qml/SearchPackagesDialog.qml:57 |
1369 | +#: ../libertine/qml/HomeView.qml:88 |
1370 | +#: ../libertine/qml/ContainerOptionsDialog.qml:88 |
1371 | +msgid "Cancel" |
1372 | +msgstr "Cancel" |
1373 | + |
1374 | +#: ../libertine/qml/HomeView.qml:143 |
1375 | +msgid "Choose Debian package to install" |
1376 | +msgstr "Choose Debian package to install" |
1377 | + |
1378 | +#: ../libertine/qml/HomeView.qml:29 |
1379 | +msgid "Classic Apps - %1" |
1380 | +msgstr "Classic Apps - %1" |
1381 | + |
1382 | +#: ../libertine/qml/ContainerOptionsDialog.qml:28 |
1383 | +msgid "Configure options for container creation." |
1384 | +msgstr "Configure options for container creation." |
1385 | + |
1386 | +#: ../libertine/qml/ContainersView.qml:116 |
1387 | +msgid "Container Apps" |
1388 | +msgstr "Container Apps" |
1389 | + |
1390 | +#: ../libertine/qml/ContainersView.qml:107 |
1391 | +msgid "Container Info" |
1392 | +msgstr "Container Info" |
1393 | + |
1394 | +#: ../libertine/qml/HomeView.qml:112 |
1395 | +msgid "Container Information" |
1396 | +msgstr "Container Information" |
1397 | + |
1398 | +#: ../libertine/qml/ContainerOptionsDialog.qml:27 |
1399 | +msgid "Container Options" |
1400 | +msgstr "Container Options" |
1401 | + |
1402 | +#: ../libertine/qml/ContainerInfoView.qml:30 |
1403 | +msgid "Container information for %1" |
1404 | +msgstr "Container information for %1" |
1405 | + |
1406 | +#: ../libertine/qml/GenericErrorDialog.qml:39 |
1407 | +msgid "Copy to Clipboard" |
1408 | +msgstr "" |
1409 | + |
1410 | +#: ../libertine/ContainerManager.cpp:30 |
1411 | msgid "Creating container %1 failed" |
1412 | msgstr "Creating container %1 failed" |
1413 | |
1414 | -#: ../libertine/ContainerManager.cpp:30 |
1415 | +#: ../libertine/qml/ManageContainer.qml:117 |
1416 | +#, fuzzy |
1417 | +msgid "Default container" |
1418 | +msgstr "Delete Container" |
1419 | + |
1420 | +#: ../libertine/qml/ContainersView.qml:92 |
1421 | +msgid "Delete Container" |
1422 | +msgstr "Delete Container" |
1423 | + |
1424 | +#: ../libertine/qml/ExtraArchivesView.qml:126 |
1425 | +msgid "Deleting archive failed" |
1426 | +msgstr "Deleting archive failed" |
1427 | + |
1428 | +#: ../libertine/ContainerManager.cpp:31 |
1429 | msgid "Destroying container %1 failed" |
1430 | msgstr "Destroying container %1 failed" |
1431 | |
1432 | -#: ../libertine/ContainerManager.cpp:31 |
1433 | -msgid "Running command %1 failed" |
1434 | -msgstr "Running command %1 failed" |
1435 | - |
1436 | -#: ../libertine/ContainerManager.cpp:32 |
1437 | -msgid "Attempt to configure container %1 failed" |
1438 | -msgstr "Attempt to configure container %1 failed" |
1439 | - |
1440 | -#: ../libertine/qml/PackageExistsDialog.qml:28 |
1441 | -msgid "The %1 package is already installed." |
1442 | -msgstr "The %1 package is already installed." |
1443 | - |
1444 | -#: .:./libertine/qml/PackageExistsDialog.qml:29 |
1445 | -msgid "Search again or return to search results." |
1446 | -msgstr "Search again or return to search results." |
1447 | - |
1448 | -#: ../libertine/qml/PackageExistsDialog.qml:33 |
1449 | -msgid "Search again" |
1450 | -msgstr "Search again" |
1451 | - |
1452 | -#: ../libertine/qml/PackageExistsDialog.qml:43 |
1453 | -msgid "Return to search results" |
1454 | -msgstr "Return to search results" |
1455 | +#: ../libertine/qml/GenericErrorDialog.qml:46 |
1456 | +msgid "Dismiss" |
1457 | +msgstr "Dismiss" |
1458 | + |
1459 | +#: ../libertine/qml/ContainerInfoView.qml:72 |
1460 | +msgid "Distribution" |
1461 | +msgstr "Distribution" |
1462 | + |
1463 | +#: ../libertine/qml/ContainerOptionsDialog.qml:49 |
1464 | +#, fuzzy |
1465 | +msgid "Enter a name for the container or leave blank for default name:" |
1466 | +msgstr "Enter or name for the container or leave blank for default name" |
1467 | + |
1468 | +#: ../libertine/qml/HomeView.qml:49 |
1469 | +msgid "Enter exact package name or full path to a Debian package file" |
1470 | +msgstr "Enter exact package name or full path to a Debian package file" |
1471 | + |
1472 | +#: ../libertine/qml/HomeView.qml:135 |
1473 | +msgid "Enter package name or Debian file" |
1474 | +msgstr "Enter package name or Debian file" |
1475 | + |
1476 | +#: ../libertine/qml/ContainerOptionsDialog.qml:62 |
1477 | +#, fuzzy |
1478 | +msgid "" |
1479 | +"Enter password for your user in the Libertine container or leave blank for " |
1480 | +"no password:" |
1481 | +msgstr "Enter or name for the container or leave blank for default name" |
1482 | + |
1483 | +#: ../libertine/qml/ContainerInfoView.qml:56 |
1484 | +msgid "ID" |
1485 | +msgstr "ID" |
1486 | + |
1487 | +#: ../libertine/qml/PackageInfoView.qml:30 |
1488 | +msgid "Information for the %1 package" |
1489 | +msgstr "Information for the %1 package" |
1490 | + |
1491 | +#: ../libertine/qml/WelcomeView.qml:66 |
1492 | +msgid "Install" |
1493 | +msgstr "Install" |
1494 | + |
1495 | +#: ../libertine/qml/SearchResults.qml:60 |
1496 | +#: ../libertine/qml/DebianPackagePicker.qml:70 |
1497 | +msgid "Install Package" |
1498 | +msgstr "Install Package" |
1499 | + |
1500 | +#: ../libertine/qml/HomeView.qml:48 |
1501 | +msgid "Install new package" |
1502 | +msgstr "Install new package" |
1503 | + |
1504 | +#: ../libertine/qml/PackageInfoView.qml:68 |
1505 | +msgid "Install status" |
1506 | +msgstr "Install status" |
1507 | + |
1508 | +#: ../libertine/ContainerManager.cpp:26 |
1509 | +msgid "Installation of package %1 failed" |
1510 | +msgstr "Installation of package %1 failed" |
1511 | + |
1512 | +#: ../libertine/qml/ManageContainer.qml:29 |
1513 | +msgid "Manage %1" |
1514 | +msgstr "Manage %1" |
1515 | + |
1516 | +#: ../libertine/qml/HomeView.qml:105 |
1517 | +msgid "Manage Container" |
1518 | +msgstr "Manage Container" |
1519 | |
1520 | #: ../libertine/qml/ContainersView.qml:33 |
1521 | msgid "My Containers" |
1522 | msgstr "My Containers" |
1523 | |
1524 | -#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:210 |
1525 | -msgid "delete" |
1526 | -msgstr "delete" |
1527 | - |
1528 | -#: ../libertine/qml/ContainersView.qml:93 |
1529 | -msgid "Delete Container" |
1530 | -msgstr "Delete Container" |
1531 | - |
1532 | -#: ../libertine/qml/ContainersView.qml:108 ../libertine/qml/HomeView.qml:222 |
1533 | -msgid "info" |
1534 | -msgstr "info" |
1535 | - |
1536 | -#: ../libertine/qml/ContainersView.qml:109 |
1537 | -msgid "Container Info" |
1538 | -msgstr "Container Info" |
1539 | - |
1540 | -#: ../libertine/qml/ContainersView.qml:117 |
1541 | -msgid "edit" |
1542 | -msgstr "edit" |
1543 | - |
1544 | -#: ../libertine/qml/ContainersView.qml:118 |
1545 | -msgid "Container Apps" |
1546 | -msgstr "Container Apps" |
1547 | - |
1548 | -#: ../libertine/qml/SearchPackagesDialog.qml:26 |
1549 | -#: ../libertine/qml/SearchResultsView.qml:36 |
1550 | -msgid "Search for packages" |
1551 | -msgstr "Search for packages" |
1552 | - |
1553 | -#: ../libertine/qml/SearchPackagesDialog.qml:27 |
1554 | -msgid "Search archives for packages" |
1555 | -msgstr "Search archives for packages" |
1556 | - |
1557 | -#: ../libertine/qml/SearchPackagesDialog.qml:31 |
1558 | -msgid "search" |
1559 | -msgstr "search" |
1560 | +#: ../libertine/qml/ContainerInfoView.qml:64 |
1561 | +msgid "Name" |
1562 | +msgstr "Name" |
1563 | + |
1564 | +#: ../libertine/qml/AddExtraArchiveView.qml:42 |
1565 | +msgid "New archive identifier, e.g." |
1566 | +msgstr "" |
1567 | + |
1568 | +#: ../libertine/qml/DebianPackagePicker.qml:87 |
1569 | +msgid "No Debian packages available" |
1570 | +msgstr "No Debian packages available" |
1571 | + |
1572 | +#: ../libertine/qml/SearchResultsView.qml:52 |
1573 | +msgid "No Search Results Found" |
1574 | +msgstr "No Search Results Found" |
1575 | + |
1576 | +#: ../libertine/qml/ExtraArchivesView.qml:93 |
1577 | +msgid "No additional archives and PPA's have been added" |
1578 | +msgstr "No additional archives and PPA's have been added" |
1579 | + |
1580 | +#: ../libertine/qml/HomeView.qml:248 |
1581 | +msgid "No packages are installed" |
1582 | +msgstr "No packages are installed" |
1583 | |
1584 | #: ../libertine/qml/SearchPackagesDialog.qml:39 |
1585 | -#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
1586 | -#: ../libertine/qml/HomeView.qml:68 ../libertine/qml/ExtraArchivesView.qml:57 |
1587 | -#: ../libertine/qml/ContainerOptionsDialog.qml:64 |
1588 | +#: ../libertine/qml/HomeView.qml:68 |
1589 | +#: ../libertine/qml/ContainerOptionsDialog.qml:77 |
1590 | msgid "OK" |
1591 | msgstr "OK" |
1592 | |
1593 | -#: ../libertine/qml/SearchPackagesDialog.qml:57 |
1594 | -#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
1595 | -#: ../libertine/qml/HomeView.qml:88 ../libertine/qml/ExtraArchivesView.qml:65 |
1596 | -#: ../libertine/qml/ContainerOptionsDialog.qml:75 |
1597 | -msgid "Cancel" |
1598 | -msgstr "Cancel" |
1599 | - |
1600 | -#: ../libertine/qml/PackageInfoView.qml:30 |
1601 | -msgid "Information for the %1 package" |
1602 | -msgstr "Information for the %1 package" |
1603 | - |
1604 | #: ../libertine/qml/PackageInfoView.qml:35 |
1605 | msgid "Obtaining package version…" |
1606 | msgstr "Obtaining package version…" |
1607 | |
1608 | -#: ../libertine/qml/PackageInfoView.qml:59 |
1609 | -msgid "Package version" |
1610 | -msgstr "Package version" |
1611 | - |
1612 | -#: ../libertine/qml/PackageInfoView.qml:67 |
1613 | -msgid "Install status" |
1614 | -msgstr "Install status" |
1615 | - |
1616 | -#: ../libertine/qml/PackageInfoView.qml:140 |
1617 | -msgid "Unknown" |
1618 | -msgstr "Unknown" |
1619 | +#: ../libertine/qml/PackageInfoView.qml:85 |
1620 | +#: ../libertine/qml/ContainerInfoView.qml:97 |
1621 | +msgid "Operation details" |
1622 | +msgstr "" |
1623 | + |
1624 | +#: ../libertine/qml/HomeView.qml:231 |
1625 | +msgid "Package Info" |
1626 | +msgstr "Package Info" |
1627 | |
1628 | #: ../libertine/qml/SearchResultsView.qml:31 |
1629 | msgid "Package Search Results" |
1630 | msgstr "Package Search Results" |
1631 | |
1632 | +#: ../libertine/qml/HomeView.qml:59 |
1633 | +msgid "Package name or Debian package path" |
1634 | +msgstr "Package name or Debian package path" |
1635 | + |
1636 | +#: ../libertine/qml/PackageInfoView.qml:60 |
1637 | +msgid "Package version" |
1638 | +msgstr "Package version" |
1639 | + |
1640 | +#: ../libertine/ContainerManager.cpp:27 |
1641 | +msgid "Removal of package %1 failed" |
1642 | +msgstr "Removal of package %1 failed" |
1643 | + |
1644 | +#: ../libertine/qml/HomeView.qml:219 |
1645 | +msgid "Remove Package" |
1646 | +msgstr "Remove Package" |
1647 | + |
1648 | +#: ../libertine/qml/ExtraArchivesView.qml:76 |
1649 | +msgid "Remove extra archive" |
1650 | +msgstr "Remove extra archive" |
1651 | + |
1652 | +#: ../libertine/qml/SearchResultsView.qml:67 |
1653 | +msgid "Return to Apps Page" |
1654 | +msgstr "Return to Apps Page" |
1655 | + |
1656 | +#: ../libertine/qml/PackageExistsDialog.qml:43 |
1657 | +msgid "Return to search results" |
1658 | +msgstr "Return to search results" |
1659 | + |
1660 | +#: ../libertine/ContainerManager.cpp:32 |
1661 | +msgid "Running command %1 failed" |
1662 | +msgstr "Running command %1 failed" |
1663 | + |
1664 | #: ../libertine/qml/SearchResultsView.qml:35 |
1665 | msgid "Search" |
1666 | msgstr "Search" |
1667 | |
1668 | -#: ../libertine/qml/SearchResultsView.qml:52 |
1669 | -msgid "No Search Results Found" |
1670 | -msgstr "No Search Results Found" |
1671 | - |
1672 | #: ../libertine/qml/SearchResultsView.qml:57 |
1673 | msgid "Search Again" |
1674 | msgstr "Search Again" |
1675 | |
1676 | -#: ../libertine/qml/SearchResultsView.qml:67 |
1677 | -msgid "Return to Apps Page" |
1678 | -msgstr "Return to Apps Page" |
1679 | +#: ../libertine/qml/PackageExistsDialog.qml:33 |
1680 | +msgid "Search again" |
1681 | +msgstr "Search again" |
1682 | + |
1683 | +#: ../libertine/qml/PackageExistsDialog.qml:29 |
1684 | +msgid "Search again or return to search results." |
1685 | +msgstr "Search again or return to search results." |
1686 | + |
1687 | +#: ../libertine/qml/HomeView.qml:152 |
1688 | +msgid "Search archives for a package" |
1689 | +msgstr "Search archives for a package" |
1690 | + |
1691 | +#: ../libertine/qml/SearchPackagesDialog.qml:27 |
1692 | +msgid "Search archives for packages" |
1693 | +msgstr "Search archives for packages" |
1694 | + |
1695 | +#: ../libertine/qml/SearchPackagesDialog.qml:26 |
1696 | +#: ../libertine/qml/SearchResultsView.qml:36 |
1697 | +msgid "Search for packages" |
1698 | +msgstr "Search for packages" |
1699 | |
1700 | #: ../libertine/qml/SearchResultsView.qml:95 |
1701 | msgid "Searching for packages…" |
1702 | msgstr "Searching for packages…" |
1703 | |
1704 | -#: ../libertine/qml/SearchResults.qml:60 |
1705 | -#: ../libertine/qml/DebianPackagePicker.qml:70 |
1706 | -msgid "Install Package" |
1707 | -msgstr "Install Package" |
1708 | - |
1709 | -#: ../libertine/qml/ManageContainer.qml:29 |
1710 | -msgid "Manage %1" |
1711 | -msgstr "Manage %1" |
1712 | - |
1713 | -#: ../libertine/qml/ManageContainer.qml:63 |
1714 | -#: ../libertine/qml/ContainerOptionsDialog.qml:40 |
1715 | -msgid "i386 multiarch support" |
1716 | -msgstr "i386 multiarch support" |
1717 | - |
1718 | -#: ../libertine/qml/ManageContainer.qml:67 |
1719 | -msgid "Additional archives and PPAs" |
1720 | -msgstr "Additional archives and PPAs" |
1721 | - |
1722 | -#: ../libertine/qml/ManageContainer.qml:78 |
1723 | +#: ../libertine/ContainerManager.cpp:28 |
1724 | +msgid "Searching for query %1 failed" |
1725 | +msgstr "Searching for query %1 failed" |
1726 | + |
1727 | +#: ../libertine/qml/ContainerInfoView.qml:80 |
1728 | +msgid "Status" |
1729 | +msgstr "Status" |
1730 | + |
1731 | +#: ../libertine/qml/HomeView.qml:119 |
1732 | +msgid "Switch Container" |
1733 | +msgstr "Switch Container" |
1734 | + |
1735 | +#: ../libertine/qml/PackageExistsDialog.qml:28 |
1736 | +msgid "The %1 package is already installed." |
1737 | +msgstr "The %1 package is already installed." |
1738 | + |
1739 | +#: ../libertine/qml/HomeView.qml:78 |
1740 | +msgid "" |
1741 | +"The %1 package is already installed. Please try a different package name." |
1742 | +msgstr "" |
1743 | +"The %1 package is already installed. Please try a different package name." |
1744 | + |
1745 | +#: ../libertine/qml/PackageInfoView.qml:159 |
1746 | +msgid "Unknown" |
1747 | +msgstr "Unknown" |
1748 | + |
1749 | +#: ../libertine/qml/ManageContainer.qml:100 |
1750 | +msgid "Update container" |
1751 | +msgstr "Update container" |
1752 | + |
1753 | +#: ../libertine/qml/ManageContainer.qml:84 |
1754 | msgid "Update…" |
1755 | msgstr "Update…" |
1756 | |
1757 | -#: ../libertine/qml/ManageContainer.qml:94 |
1758 | -msgid "Update container" |
1759 | -msgstr "Update container" |
1760 | - |
1761 | -#: ../libertine/qml/DebianPackagePicker.qml:28 |
1762 | -msgid "Available Debian Packages to Install" |
1763 | -msgstr "Available Debian Packages to Install" |
1764 | - |
1765 | -#: ../libertine/qml/DebianPackagePicker.qml:87 |
1766 | -msgid "No Debian packages available" |
1767 | -msgstr "No Debian packages available" |
1768 | - |
1769 | -#: ../libertine/qml/ContainerPasswordDialog.qml:27 |
1770 | -msgid "Authentication required" |
1771 | -msgstr "Authentication required" |
1772 | - |
1773 | -#: ../libertine/qml/ContainerPasswordDialog.qml:28 |
1774 | -msgid "Password is required to create a Libertine container" |
1775 | -msgstr "Password is required to create a Libertine container" |
1776 | - |
1777 | -#: ../libertine/qml/ContainerPasswordDialog.qml:36 |
1778 | -msgid "Invalid password entered" |
1779 | -msgstr "Invalid password entered" |
1780 | - |
1781 | -#: ../libertine/qml/ContainerPasswordDialog.qml:41 |
1782 | -msgid "password" |
1783 | -msgstr "password" |
1784 | - |
1785 | -#: ../libertine/qml/HomeView.qml:29 |
1786 | -msgid "Classic Apps - %1" |
1787 | -msgstr "Classic Apps - %1" |
1788 | - |
1789 | -#: ../libertine/qml/HomeView.qml:48 |
1790 | -msgid "Install new package" |
1791 | -msgstr "Install new package" |
1792 | - |
1793 | -#: ../libertine/qml/HomeView.qml:49 |
1794 | -msgid "Enter exact package name or full path to a Debian package file" |
1795 | -msgstr "Enter exact package name or full path to a Debian package file" |
1796 | - |
1797 | -#: ../libertine/qml/HomeView.qml:59 |
1798 | -msgid "Package name or Debian package path" |
1799 | -msgstr "Package name or Debian package path" |
1800 | - |
1801 | -#: ../libertine/qml/HomeView.qml:78 |
1802 | -msgid "The %1 package is already installed. Please try a different package name." |
1803 | -msgstr "The %1 package is already installed. Please try a different package name." |
1804 | - |
1805 | -#: ../libertine/qml/HomeView.qml:104 |
1806 | -msgid "Manage Container" |
1807 | -msgstr "Manage Container" |
1808 | - |
1809 | -#: ../libertine/qml/HomeView.qml:110 |
1810 | -msgid "Container Information" |
1811 | -msgstr "Container Information" |
1812 | - |
1813 | -#: ../libertine/qml/HomeView.qml:116 |
1814 | -msgid "Switch Container" |
1815 | -msgstr "Switch Container" |
1816 | - |
1817 | -#: ../libertine/qml/HomeView.qml:132 |
1818 | -msgid "Enter package name or Debian file" |
1819 | -msgstr "Enter package name or Debian file" |
1820 | - |
1821 | -#: ../libertine/qml/HomeView.qml:138 |
1822 | -msgid "Choose Debian package to install" |
1823 | -msgstr "Choose Debian package to install" |
1824 | - |
1825 | -#: ../libertine/qml/HomeView.qml:145 |
1826 | -msgid "Search archives for a package" |
1827 | -msgstr "Search archives for a package" |
1828 | - |
1829 | -#: ../libertine/qml/HomeView.qml:211 |
1830 | -msgid "Remove Package" |
1831 | -msgstr "Remove Package" |
1832 | - |
1833 | -#: ../libertine/qml/HomeView.qml:223 |
1834 | -msgid "Package Info" |
1835 | -msgstr "Package Info" |
1836 | - |
1837 | -#: ../libertine/qml/HomeView.qml:240 |
1838 | -msgid "No packages are installed" |
1839 | -msgstr "No packages are installed" |
1840 | - |
1841 | -#: ../libertine/qml/ExtraArchivesView.qml:28 |
1842 | -msgid "Additional Archives and PPAs" |
1843 | -msgstr "Additional Archives and PPAs" |
1844 | - |
1845 | -#: ../libertine/qml/ExtraArchivesView.qml:32 |
1846 | -msgid "add" |
1847 | -msgstr "add" |
1848 | - |
1849 | -#: ../libertine/qml/ExtraArchivesView.qml:33 |
1850 | -msgid "Add a new PPA" |
1851 | -msgstr "Add a new PPA" |
1852 | - |
1853 | -#: ../libertine/qml/ExtraArchivesView.qml:46 |
1854 | -msgid "Add additional PPA" |
1855 | -msgstr "Add additional PPA" |
1856 | - |
1857 | -#: ../libertine/qml/ExtraArchivesView.qml:47 |
1858 | -msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
1859 | -msgstr "Enter name of PPA in the form ppa:user/ppa-name:" |
1860 | - |
1861 | -#: ../libertine/qml/ExtraArchivesView.qml:107 |
1862 | -msgid "remove" |
1863 | -msgstr "remove" |
1864 | - |
1865 | -#: ../libertine/qml/ExtraArchivesView.qml:108 |
1866 | -msgid "Remove extra archive" |
1867 | -msgstr "Remove extra archive" |
1868 | - |
1869 | -#: ../libertine/qml/ExtraArchivesView.qml:125 |
1870 | -msgid "No additional archives and PPA's have been added" |
1871 | -msgstr "No additional archives and PPA's have been added" |
1872 | - |
1873 | -#: ../libertine/qml/ExtraArchivesView.qml:173 |
1874 | -msgid "Adding archive failed" |
1875 | -msgstr "Adding archive failed" |
1876 | - |
1877 | -#: ../libertine/qml/ExtraArchivesView.qml:177 |
1878 | -msgid "Deleting archive failed" |
1879 | -msgstr "Deleting archive failed" |
1880 | - |
1881 | -#: ../libertine/qml/GenericErrorDialog.qml:32 |
1882 | -msgid "Dismiss" |
1883 | -msgstr "Dismiss" |
1884 | +#: ../libertine/ContainerManager.cpp:29 |
1885 | +msgid "Updating container %1 failed" |
1886 | +msgstr "Updating container %1 failed" |
1887 | |
1888 | #: ../libertine/qml/WelcomeView.qml:28 |
1889 | msgid "Welcome" |
1890 | @@ -378,52 +362,110 @@ |
1891 | "Downloading and setting up the required environment takes some time and " |
1892 | "network bandwidth." |
1893 | |
1894 | -#: ../libertine/qml/WelcomeView.qml:66 |
1895 | -msgid "Install" |
1896 | -msgstr "Install" |
1897 | - |
1898 | -#: ../libertine/qml/ContainerInfoView.qml:30 |
1899 | -msgid "Container information for %1" |
1900 | -msgstr "Container information for %1" |
1901 | - |
1902 | -#: ../libertine/qml/ContainerInfoView.qml:53 |
1903 | -msgid "ID" |
1904 | -msgstr "ID" |
1905 | - |
1906 | -#: ../libertine/qml/ContainerInfoView.qml:60 |
1907 | -msgid "Name" |
1908 | -msgstr "Name" |
1909 | - |
1910 | -#: ../libertine/qml/ContainerInfoView.qml:67 |
1911 | -msgid "Distribution" |
1912 | -msgstr "Distribution" |
1913 | - |
1914 | -#: ../libertine/qml/ContainerInfoView.qml:74 |
1915 | -msgid "Status" |
1916 | -msgstr "Status" |
1917 | - |
1918 | -#: ../libertine/qml/ContainerOptionsDialog.qml:27 |
1919 | -msgid "Container Options" |
1920 | -msgstr "Container Options" |
1921 | - |
1922 | -#: ../libertine/qml/ContainerOptionsDialog.qml:28 |
1923 | -msgid "Configure options for container creation." |
1924 | -msgstr "Configure options for container creation." |
1925 | - |
1926 | -#: ../libertine/qml/ContainerOptionsDialog.qml:50 |
1927 | -msgid "Enter or name for the container or leave blank for default name" |
1928 | -msgstr "Enter or name for the container or leave blank for default name" |
1929 | - |
1930 | -#: ../libertine/qml/ContainerOptionsDialog.qml:56 |
1931 | +#: ../libertine/qml/ExtraArchivesView.qml:31 |
1932 | +msgid "add" |
1933 | +msgstr "add" |
1934 | + |
1935 | +#: ../libertine/qml/ContainerOptionsDialog.qml:55 |
1936 | msgid "container name" |
1937 | msgstr "container name" |
1938 | |
1939 | +#: ../libertine/qml/ContainersView.qml:91 ../libertine/qml/HomeView.qml:218 |
1940 | +msgid "delete" |
1941 | +msgstr "delete" |
1942 | + |
1943 | +#: ../libertine/qml/ContainersView.qml:115 |
1944 | +msgid "edit" |
1945 | +msgstr "edit" |
1946 | + |
1947 | +#: ../libertine/ContainerConfig.cpp:153 ../libertine/ContainerConfig.cpp:187 |
1948 | +msgid "failed" |
1949 | +msgstr "failed" |
1950 | + |
1951 | +#: ../libertine/qml/ManageContainer.qml:69 |
1952 | +#: ../libertine/qml/ContainerOptionsDialog.qml:39 |
1953 | +msgid "i386 multiarch support" |
1954 | +msgstr "i386 multiarch support" |
1955 | + |
1956 | +#: ../libertine/qml/ContainersView.qml:106 ../libertine/qml/HomeView.qml:230 |
1957 | +msgid "info" |
1958 | +msgstr "info" |
1959 | + |
1960 | +#: ../libertine/ContainerConfig.cpp:186 |
1961 | +msgid "installed" |
1962 | +msgstr "installed" |
1963 | + |
1964 | +#: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
1965 | +#: ../libertine/qml/ContainersView.qml:80 ../libertine/qml/HomeView.qml:205 |
1966 | +#: ../libertine/qml/ExtraArchivesView.qml:67 |
1967 | +msgid "installing" |
1968 | +msgstr "installing" |
1969 | + |
1970 | +#: ../libertine/qml/AddExtraArchiveView.qml:50 |
1971 | +msgid "" |
1972 | +"multiverse\n" |
1973 | +"ppa:user/repository\n" |
1974 | +"deb http://myserver/repo stable repo" |
1975 | +msgstr "" |
1976 | + |
1977 | +#: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
1978 | +msgid "new" |
1979 | +msgstr "new" |
1980 | + |
1981 | +#: ../libertine/qml/ContainerOptionsDialog.qml:69 |
1982 | +msgid "password" |
1983 | +msgstr "password" |
1984 | + |
1985 | +#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:117 |
1986 | +#: ../libertine/qml/ManageContainer.qml:85 |
1987 | +#: ../libertine/qml/ManageContainer.qml:152 |
1988 | +msgid "ready" |
1989 | +msgstr "ready" |
1990 | + |
1991 | +#: ../libertine/qml/ExtraArchivesView.qml:75 |
1992 | +msgid "remove" |
1993 | +msgstr "remove" |
1994 | + |
1995 | +#: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
1996 | +#: ../libertine/qml/PackageInfoView.qml:148 |
1997 | +#: ../libertine/qml/ContainerInfoView.qml:143 |
1998 | +msgid "removed" |
1999 | +msgstr "removed" |
2000 | + |
2001 | +#: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
2002 | +#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:206 |
2003 | +#: ../libertine/qml/ExtraArchivesView.qml:68 |
2004 | +msgid "removing" |
2005 | +msgstr "removing" |
2006 | + |
2007 | +#: ../libertine/qml/SearchPackagesDialog.qml:31 |
2008 | +msgid "search" |
2009 | +msgstr "search" |
2010 | + |
2011 | +#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:118 |
2012 | +#: ../libertine/qml/ManageContainer.qml:97 |
2013 | +#: ../libertine/qml/ManageContainer.qml:148 |
2014 | +msgid "updating" |
2015 | +msgstr "updating" |
2016 | + |
2017 | +#~ msgid "Add a new PPA" |
2018 | +#~ msgstr "Add a new PPA" |
2019 | + |
2020 | +#~ msgid "Additional Archives and PPAs" |
2021 | +#~ msgstr "Additional Archives and PPAs" |
2022 | + |
2023 | +#~ msgid "Authentication required" |
2024 | +#~ msgstr "Authentication required" |
2025 | + |
2026 | #~ msgid "Configure %1" |
2027 | #~ msgstr "Configure %1" |
2028 | |
2029 | #~ msgid "Configure Container" |
2030 | #~ msgstr "Configure Container" |
2031 | |
2032 | +#~ msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
2033 | +#~ msgstr "Enter name of PPA in the form ppa:user/ppa-name:" |
2034 | + |
2035 | #, fuzzy |
2036 | #~ msgid "Failure %1 the %2 package." |
2037 | #~ msgstr "Information for the %1 package" |
2038 | @@ -434,6 +476,12 @@ |
2039 | #~ msgid "Install Apps" |
2040 | #~ msgstr "Install Apps" |
2041 | |
2042 | +#~ msgid "Invalid password entered" |
2043 | +#~ msgstr "Invalid password entered" |
2044 | + |
2045 | +#~ msgid "Password is required to create a Libertine container" |
2046 | +#~ msgstr "Password is required to create a Libertine container" |
2047 | + |
2048 | #~ msgid "Please enter a package name to search for:" |
2049 | #~ msgstr "Please enter a package name to search for:" |
2050 | |
2051 | @@ -443,3 +491,7 @@ |
2052 | #, fuzzy |
2053 | #~ msgid "finding information for" |
2054 | #~ msgstr "Container information for %1" |
2055 | + |
2056 | +#, fuzzy |
2057 | +#~ msgid "new archive name" |
2058 | +#~ msgstr "Adding archive failed" |
2059 | |
2060 | === modified file 'po/es.po' |
2061 | --- po/es.po 2016-07-15 05:42:05 +0000 |
2062 | +++ po/es.po 2016-07-21 17:26:05 +0000 |
2063 | @@ -6,15 +6,16 @@ |
2064 | msgid "" |
2065 | msgstr "" |
2066 | "Project-Id-Version: libertine\n" |
2067 | -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2068 | +"Report-Msgid-Bugs-To: \n" |
2069 | "POT-Creation-Date: 2016-06-07 07:58-0400\n" |
2070 | "PO-Revision-Date: 2016-06-12 08:23+0000\n" |
2071 | "Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n" |
2072 | "Language-Team: Spanish <es@li.org>\n" |
2073 | +"Language: es\n" |
2074 | "MIME-Version: 1.0\n" |
2075 | "Content-Type: text/plain; charset=UTF-8\n" |
2076 | "Content-Transfer-Encoding: 8bit\n" |
2077 | -"X-Launchpad-Export-Date: 2016-07-15 05:42+0000\n" |
2078 | +"X-Launchpad-Export-Date: 2016-07-01 06:06+0000\n" |
2079 | "X-Generator: Launchpad (build 18115)\n" |
2080 | |
2081 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
2082 | @@ -22,32 +23,32 @@ |
2083 | msgstr "nuevo" |
2084 | |
2085 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
2086 | -#: ../libertine/qml/ContainersView.qml:81 |
2087 | -#: ../libertine/qml/ExtraArchivesView.qml:106 ../libertine/qml/HomeView.qml:205 |
2088 | +#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:197 |
2089 | +#: ../libertine/qml/ExtraArchivesView.qml:99 |
2090 | msgid "installing" |
2091 | msgstr "instalando" |
2092 | |
2093 | -#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:118 |
2094 | -#: ../libertine/qml/ManageContainer.qml:85 |
2095 | -#: ../libertine/qml/ManageContainer.qml:152 |
2096 | +#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:119 |
2097 | +#: ../libertine/qml/ManageContainer.qml:79 |
2098 | +#: ../libertine/qml/ManageContainer.qml:119 |
2099 | msgid "ready" |
2100 | msgstr "preparado" |
2101 | |
2102 | -#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:119 |
2103 | -#: ../libertine/qml/ManageContainer.qml:97 |
2104 | -#: ../libertine/qml/ManageContainer.qml:148 |
2105 | +#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:120 |
2106 | +#: ../libertine/qml/ManageContainer.qml:91 |
2107 | +#: ../libertine/qml/ManageContainer.qml:115 |
2108 | msgid "updating" |
2109 | msgstr "actualizando" |
2110 | |
2111 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
2112 | -#: ../libertine/qml/ContainersView.qml:82 |
2113 | -#: ../libertine/qml/ExtraArchivesView.qml:107 ../libertine/qml/HomeView.qml:206 |
2114 | +#: ../libertine/qml/ContainersView.qml:82 ../libertine/qml/HomeView.qml:198 |
2115 | +#: ../libertine/qml/ExtraArchivesView.qml:100 |
2116 | msgid "removing" |
2117 | msgstr "desinstalando" |
2118 | |
2119 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
2120 | -#: ../libertine/qml/ContainerInfoView.qml:143 |
2121 | -#: ../libertine/qml/PackageInfoView.qml:148 |
2122 | +#: ../libertine/qml/PackageInfoView.qml:131 |
2123 | +#: ../libertine/qml/ContainerInfoView.qml:93 |
2124 | msgid "removed" |
2125 | msgstr "desinstalado" |
2126 | |
2127 | @@ -115,7 +116,7 @@ |
2128 | msgid "My Containers" |
2129 | msgstr "Mis contenedores" |
2130 | |
2131 | -#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:218 |
2132 | +#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:210 |
2133 | msgid "delete" |
2134 | msgstr "eliminar" |
2135 | |
2136 | @@ -123,19 +124,19 @@ |
2137 | msgid "Delete Container" |
2138 | msgstr "Eliminar contenedor" |
2139 | |
2140 | -#: ../libertine/qml/ContainersView.qml:107 ../libertine/qml/HomeView.qml:230 |
2141 | +#: ../libertine/qml/ContainersView.qml:108 ../libertine/qml/HomeView.qml:222 |
2142 | msgid "info" |
2143 | msgstr "información" |
2144 | |
2145 | -#: ../libertine/qml/ContainersView.qml:108 |
2146 | +#: ../libertine/qml/ContainersView.qml:109 |
2147 | msgid "Container Info" |
2148 | msgstr "Información del contenedor" |
2149 | |
2150 | -#: ../libertine/qml/ContainersView.qml:116 |
2151 | +#: ../libertine/qml/ContainersView.qml:117 |
2152 | msgid "edit" |
2153 | msgstr "editar" |
2154 | |
2155 | -#: ../libertine/qml/ContainersView.qml:117 |
2156 | +#: ../libertine/qml/ContainersView.qml:118 |
2157 | msgid "Container Apps" |
2158 | msgstr "Aplicaciones del contenedor" |
2159 | |
2160 | @@ -152,17 +153,17 @@ |
2161 | msgid "search" |
2162 | msgstr "buscar" |
2163 | |
2164 | +#: ../libertine/qml/SearchPackagesDialog.qml:39 |
2165 | +#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
2166 | +#: ../libertine/qml/HomeView.qml:68 ../libertine/qml/ExtraArchivesView.qml:57 |
2167 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 |
2168 | -#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
2169 | -#: ../libertine/qml/ExtraArchivesView.qml:64 ../libertine/qml/HomeView.qml:68 |
2170 | -#: ../libertine/qml/SearchPackagesDialog.qml:39 |
2171 | msgid "OK" |
2172 | msgstr "Aceptar" |
2173 | |
2174 | +#: ../libertine/qml/SearchPackagesDialog.qml:57 |
2175 | +#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
2176 | +#: ../libertine/qml/HomeView.qml:88 ../libertine/qml/ExtraArchivesView.qml:65 |
2177 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 |
2178 | -#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
2179 | -#: ../libertine/qml/ExtraArchivesView.qml:72 ../libertine/qml/HomeView.qml:88 |
2180 | -#: ../libertine/qml/SearchPackagesDialog.qml:57 |
2181 | msgid "Cancel" |
2182 | msgstr "Cancelar" |
2183 | |
2184 | @@ -174,15 +175,15 @@ |
2185 | msgid "Obtaining package version…" |
2186 | msgstr "Obteniendo la versión del paquete…" |
2187 | |
2188 | -#: ../libertine/qml/PackageInfoView.qml:60 |
2189 | +#: ../libertine/qml/PackageInfoView.qml:59 |
2190 | msgid "Package version" |
2191 | msgstr "Versión del paquete" |
2192 | |
2193 | -#: ../libertine/qml/PackageInfoView.qml:68 |
2194 | +#: ../libertine/qml/PackageInfoView.qml:67 |
2195 | msgid "Install status" |
2196 | msgstr "Estado de la instalación" |
2197 | |
2198 | -#: ../libertine/qml/PackageInfoView.qml:159 |
2199 | +#: ../libertine/qml/PackageInfoView.qml:140 |
2200 | msgid "Unknown" |
2201 | msgstr "Desconocido" |
2202 | |
2203 | @@ -210,8 +211,8 @@ |
2204 | msgid "Searching for packages…" |
2205 | msgstr "Buscando paquetes…" |
2206 | |
2207 | +#: ../libertine/qml/SearchResults.qml:60 |
2208 | #: ../libertine/qml/DebianPackagePicker.qml:70 |
2209 | -#: ../libertine/qml/SearchResults.qml:60 |
2210 | msgid "Install Package" |
2211 | msgstr "Instalar paquete" |
2212 | |
2213 | @@ -219,20 +220,20 @@ |
2214 | msgid "Manage %1" |
2215 | msgstr "Gestionar %1" |
2216 | |
2217 | +#: ../libertine/qml/ManageContainer.qml:63 |
2218 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 |
2219 | -#: ../libertine/qml/ManageContainer.qml:69 |
2220 | msgid "i386 multiarch support" |
2221 | msgstr "Compatibilidad con i386 multiarquitectura" |
2222 | |
2223 | -#: ../libertine/qml/ManageContainer.qml:73 |
2224 | +#: ../libertine/qml/ManageContainer.qml:67 |
2225 | msgid "Additional archives and PPAs" |
2226 | msgstr "Archivos y PPA adicionales" |
2227 | |
2228 | -#: ../libertine/qml/ManageContainer.qml:84 |
2229 | +#: ../libertine/qml/ManageContainer.qml:78 |
2230 | msgid "Update…" |
2231 | msgstr "Actualizar…" |
2232 | |
2233 | -#: ../libertine/qml/ManageContainer.qml:100 |
2234 | +#: ../libertine/qml/ManageContainer.qml:94 |
2235 | msgid "Update container" |
2236 | msgstr "Actualizar contenedor" |
2237 | |
2238 | @@ -281,42 +282,41 @@ |
2239 | #: ../libertine/qml/HomeView.qml:78 |
2240 | msgid "" |
2241 | "The %1 package is already installed. Please try a different package name." |
2242 | -msgstr "" |
2243 | -"El paquete «%1» ya está instalado. Pruebe con otro nombre de paquete." |
2244 | +msgstr "El paquete «%1» ya está instalado. Pruebe con otro nombre de paquete." |
2245 | |
2246 | -#: ../libertine/qml/HomeView.qml:105 |
2247 | +#: ../libertine/qml/HomeView.qml:104 |
2248 | msgid "Manage Container" |
2249 | msgstr "Gestionar contenedor" |
2250 | |
2251 | -#: ../libertine/qml/HomeView.qml:112 |
2252 | +#: ../libertine/qml/HomeView.qml:110 |
2253 | msgid "Container Information" |
2254 | msgstr "Información del contenedor" |
2255 | |
2256 | -#: ../libertine/qml/HomeView.qml:119 |
2257 | +#: ../libertine/qml/HomeView.qml:116 |
2258 | msgid "Switch Container" |
2259 | msgstr "Cambiar de contenedor" |
2260 | |
2261 | -#: ../libertine/qml/HomeView.qml:135 |
2262 | +#: ../libertine/qml/HomeView.qml:132 |
2263 | msgid "Enter package name or Debian file" |
2264 | msgstr "Escriba el nombre de un paquete o indique un archivo de Debian" |
2265 | |
2266 | -#: ../libertine/qml/HomeView.qml:143 |
2267 | +#: ../libertine/qml/HomeView.qml:138 |
2268 | msgid "Choose Debian package to install" |
2269 | msgstr "Elija el paquete de Debian que se instalará" |
2270 | |
2271 | -#: ../libertine/qml/HomeView.qml:152 |
2272 | +#: ../libertine/qml/HomeView.qml:145 |
2273 | msgid "Search archives for a package" |
2274 | msgstr "Buscar un paquete en los archivos" |
2275 | |
2276 | -#: ../libertine/qml/HomeView.qml:219 |
2277 | +#: ../libertine/qml/HomeView.qml:211 |
2278 | msgid "Remove Package" |
2279 | msgstr "Desinstalar paquete" |
2280 | |
2281 | -#: ../libertine/qml/HomeView.qml:231 |
2282 | +#: ../libertine/qml/HomeView.qml:223 |
2283 | msgid "Package Info" |
2284 | msgstr "Información del paquete" |
2285 | |
2286 | -#: ../libertine/qml/HomeView.qml:248 |
2287 | +#: ../libertine/qml/HomeView.qml:240 |
2288 | msgid "No packages are installed" |
2289 | msgstr "No hay ningún paquete instalado" |
2290 | |
2291 | @@ -341,27 +341,27 @@ |
2292 | msgstr "" |
2293 | "Escriba el nombre del PPA según el formato «ppa:usuario/nombre-de-ppa»:" |
2294 | |
2295 | -#: ../libertine/qml/ExtraArchivesView.qml:114 |
2296 | +#: ../libertine/qml/ExtraArchivesView.qml:107 |
2297 | msgid "remove" |
2298 | msgstr "quitar" |
2299 | |
2300 | -#: ../libertine/qml/ExtraArchivesView.qml:115 |
2301 | +#: ../libertine/qml/ExtraArchivesView.qml:108 |
2302 | msgid "Remove extra archive" |
2303 | msgstr "quitar archivo adicional" |
2304 | |
2305 | -#: ../libertine/qml/ExtraArchivesView.qml:132 |
2306 | +#: ../libertine/qml/ExtraArchivesView.qml:125 |
2307 | msgid "No additional archives and PPA's have been added" |
2308 | msgstr "No se ha añadido ningún archivo ni PPA adicional" |
2309 | |
2310 | -#: ../libertine/qml/ExtraArchivesView.qml:177 |
2311 | +#: ../libertine/qml/ExtraArchivesView.qml:173 |
2312 | msgid "Adding archive failed" |
2313 | msgstr "Falló la adición del archivo" |
2314 | |
2315 | -#: ../libertine/qml/ExtraArchivesView.qml:181 |
2316 | +#: ../libertine/qml/ExtraArchivesView.qml:177 |
2317 | msgid "Deleting archive failed" |
2318 | msgstr "Falló la eliminación del archivo" |
2319 | |
2320 | -#: ../libertine/qml/GenericErrorDialog.qml:46 |
2321 | +#: ../libertine/qml/GenericErrorDialog.qml:32 |
2322 | msgid "Dismiss" |
2323 | msgstr "Descartar" |
2324 | |
2325 | @@ -392,19 +392,19 @@ |
2326 | msgid "Container information for %1" |
2327 | msgstr "Información del contenedor «%1»" |
2328 | |
2329 | -#: ../libertine/qml/ContainerInfoView.qml:56 |
2330 | +#: ../libertine/qml/ContainerInfoView.qml:53 |
2331 | msgid "ID" |
2332 | msgstr "Id." |
2333 | |
2334 | -#: ../libertine/qml/ContainerInfoView.qml:64 |
2335 | +#: ../libertine/qml/ContainerInfoView.qml:60 |
2336 | msgid "Name" |
2337 | msgstr "Nombre" |
2338 | |
2339 | -#: ../libertine/qml/ContainerInfoView.qml:72 |
2340 | +#: ../libertine/qml/ContainerInfoView.qml:67 |
2341 | msgid "Distribution" |
2342 | msgstr "Distribución" |
2343 | |
2344 | -#: ../libertine/qml/ContainerInfoView.qml:80 |
2345 | +#: ../libertine/qml/ContainerInfoView.qml:74 |
2346 | msgid "Status" |
2347 | msgstr "Estado" |
2348 | |
2349 | @@ -424,3 +424,45 @@ |
2350 | #: ../libertine/qml/ContainerOptionsDialog.qml:56 |
2351 | msgid "container name" |
2352 | msgstr "nombre del contenedor" |
2353 | + |
2354 | +#, fuzzy |
2355 | +#~ msgid "Add" |
2356 | +#~ msgstr "añadir" |
2357 | + |
2358 | +#, fuzzy |
2359 | +#~ msgid "Add Archive" |
2360 | +#~ msgstr "Falló la adición del archivo" |
2361 | + |
2362 | +#, fuzzy |
2363 | +#~ msgid "Add a new archive" |
2364 | +#~ msgstr "Añadir un PPA adicional" |
2365 | + |
2366 | +#, fuzzy |
2367 | +#~ msgid "Additional Archives" |
2368 | +#~ msgstr "Añadir un PPA adicional" |
2369 | + |
2370 | +#, fuzzy |
2371 | +#~ msgid "Attempt to set container as default failed" |
2372 | +#~ msgstr "Falló el intento de configuración del contenedor «%1»" |
2373 | + |
2374 | +#, fuzzy |
2375 | +#~ msgid "Default container" |
2376 | +#~ msgstr "Eliminar contenedor" |
2377 | + |
2378 | +#, fuzzy |
2379 | +#~ msgid "Enter a name for the container or leave blank for default name:" |
2380 | +#~ msgstr "" |
2381 | +#~ "Escriba el nombre del contenedor o déjelo vacÃo para usar el " |
2382 | +#~ "predeterminado" |
2383 | + |
2384 | +#, fuzzy |
2385 | +#~ msgid "" |
2386 | +#~ "Enter password for your user in the Libertine container or leave blank " |
2387 | +#~ "for no password:" |
2388 | +#~ msgstr "" |
2389 | +#~ "Escriba el nombre del contenedor o déjelo vacÃo para usar el " |
2390 | +#~ "predeterminado" |
2391 | + |
2392 | +#, fuzzy |
2393 | +#~ msgid "new archive name" |
2394 | +#~ msgstr "Falló la adición del archivo" |
2395 | |
2396 | === modified file 'po/it.po' |
2397 | --- po/it.po 2016-07-15 05:42:05 +0000 |
2398 | +++ po/it.po 2016-07-21 17:26:05 +0000 |
2399 | @@ -6,15 +6,16 @@ |
2400 | msgid "" |
2401 | msgstr "" |
2402 | "Project-Id-Version: libertine\n" |
2403 | -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2404 | +"Report-Msgid-Bugs-To: \n" |
2405 | "POT-Creation-Date: 2016-06-07 07:58-0400\n" |
2406 | "PO-Revision-Date: 2016-06-10 13:00+0000\n" |
2407 | "Last-Translator: Emanuele Antonio Faraone <emanueleant03@gmail.com>\n" |
2408 | "Language-Team: Italian <it@li.org>\n" |
2409 | +"Language: it\n" |
2410 | "MIME-Version: 1.0\n" |
2411 | "Content-Type: text/plain; charset=UTF-8\n" |
2412 | "Content-Transfer-Encoding: 8bit\n" |
2413 | -"X-Launchpad-Export-Date: 2016-07-15 05:42+0000\n" |
2414 | +"X-Launchpad-Export-Date: 2016-07-01 06:06+0000\n" |
2415 | "X-Generator: Launchpad (build 18115)\n" |
2416 | |
2417 | #: ../libertine/ContainerConfig.cpp:147 ../libertine/ContainerConfig.cpp:184 |
2418 | @@ -22,32 +23,32 @@ |
2419 | msgstr "nuovo" |
2420 | |
2421 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
2422 | -#: ../libertine/qml/ContainersView.qml:81 |
2423 | -#: ../libertine/qml/ExtraArchivesView.qml:106 ../libertine/qml/HomeView.qml:205 |
2424 | +#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:197 |
2425 | +#: ../libertine/qml/ExtraArchivesView.qml:99 |
2426 | msgid "installing" |
2427 | msgstr "installando" |
2428 | |
2429 | -#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:118 |
2430 | -#: ../libertine/qml/ManageContainer.qml:85 |
2431 | -#: ../libertine/qml/ManageContainer.qml:152 |
2432 | +#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:119 |
2433 | +#: ../libertine/qml/ManageContainer.qml:79 |
2434 | +#: ../libertine/qml/ManageContainer.qml:119 |
2435 | msgid "ready" |
2436 | msgstr "pronto" |
2437 | |
2438 | -#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:119 |
2439 | -#: ../libertine/qml/ManageContainer.qml:97 |
2440 | -#: ../libertine/qml/ManageContainer.qml:148 |
2441 | +#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:120 |
2442 | +#: ../libertine/qml/ManageContainer.qml:91 |
2443 | +#: ../libertine/qml/ManageContainer.qml:115 |
2444 | msgid "updating" |
2445 | msgstr "aggiornando" |
2446 | |
2447 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
2448 | -#: ../libertine/qml/ContainersView.qml:82 |
2449 | -#: ../libertine/qml/ExtraArchivesView.qml:107 ../libertine/qml/HomeView.qml:206 |
2450 | +#: ../libertine/qml/ContainersView.qml:82 ../libertine/qml/HomeView.qml:198 |
2451 | +#: ../libertine/qml/ExtraArchivesView.qml:100 |
2452 | msgid "removing" |
2453 | msgstr "rimozione" |
2454 | |
2455 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
2456 | -#: ../libertine/qml/ContainerInfoView.qml:143 |
2457 | -#: ../libertine/qml/PackageInfoView.qml:148 |
2458 | +#: ../libertine/qml/PackageInfoView.qml:131 |
2459 | +#: ../libertine/qml/ContainerInfoView.qml:93 |
2460 | msgid "removed" |
2461 | msgstr "rimosso" |
2462 | |
2463 | @@ -115,7 +116,7 @@ |
2464 | msgid "My Containers" |
2465 | msgstr "Miei Contenitori" |
2466 | |
2467 | -#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:218 |
2468 | +#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:210 |
2469 | msgid "delete" |
2470 | msgstr "elimina" |
2471 | |
2472 | @@ -123,19 +124,19 @@ |
2473 | msgid "Delete Container" |
2474 | msgstr "Elimina Contenitore" |
2475 | |
2476 | -#: ../libertine/qml/ContainersView.qml:107 ../libertine/qml/HomeView.qml:230 |
2477 | +#: ../libertine/qml/ContainersView.qml:108 ../libertine/qml/HomeView.qml:222 |
2478 | msgid "info" |
2479 | msgstr "Informazioni" |
2480 | |
2481 | -#: ../libertine/qml/ContainersView.qml:108 |
2482 | +#: ../libertine/qml/ContainersView.qml:109 |
2483 | msgid "Container Info" |
2484 | msgstr "Informazioni Contenitore" |
2485 | |
2486 | -#: ../libertine/qml/ContainersView.qml:116 |
2487 | +#: ../libertine/qml/ContainersView.qml:117 |
2488 | msgid "edit" |
2489 | msgstr "modifica" |
2490 | |
2491 | -#: ../libertine/qml/ContainersView.qml:117 |
2492 | +#: ../libertine/qml/ContainersView.qml:118 |
2493 | msgid "Container Apps" |
2494 | msgstr "Contenitori App" |
2495 | |
2496 | @@ -152,17 +153,17 @@ |
2497 | msgid "search" |
2498 | msgstr "Cerca" |
2499 | |
2500 | +#: ../libertine/qml/SearchPackagesDialog.qml:39 |
2501 | +#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
2502 | +#: ../libertine/qml/HomeView.qml:68 ../libertine/qml/ExtraArchivesView.qml:57 |
2503 | #: ../libertine/qml/ContainerOptionsDialog.qml:64 |
2504 | -#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
2505 | -#: ../libertine/qml/ExtraArchivesView.qml:64 ../libertine/qml/HomeView.qml:68 |
2506 | -#: ../libertine/qml/SearchPackagesDialog.qml:39 |
2507 | msgid "OK" |
2508 | msgstr "Ok" |
2509 | |
2510 | +#: ../libertine/qml/SearchPackagesDialog.qml:57 |
2511 | +#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
2512 | +#: ../libertine/qml/HomeView.qml:88 ../libertine/qml/ExtraArchivesView.qml:65 |
2513 | #: ../libertine/qml/ContainerOptionsDialog.qml:75 |
2514 | -#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
2515 | -#: ../libertine/qml/ExtraArchivesView.qml:72 ../libertine/qml/HomeView.qml:88 |
2516 | -#: ../libertine/qml/SearchPackagesDialog.qml:57 |
2517 | msgid "Cancel" |
2518 | msgstr "Annulla" |
2519 | |
2520 | @@ -174,15 +175,15 @@ |
2521 | msgid "Obtaining package version…" |
2522 | msgstr "" |
2523 | |
2524 | -#: ../libertine/qml/PackageInfoView.qml:60 |
2525 | +#: ../libertine/qml/PackageInfoView.qml:59 |
2526 | msgid "Package version" |
2527 | msgstr "Versione pacchetto" |
2528 | |
2529 | -#: ../libertine/qml/PackageInfoView.qml:68 |
2530 | +#: ../libertine/qml/PackageInfoView.qml:67 |
2531 | msgid "Install status" |
2532 | msgstr "Stato installazione" |
2533 | |
2534 | -#: ../libertine/qml/PackageInfoView.qml:159 |
2535 | +#: ../libertine/qml/PackageInfoView.qml:140 |
2536 | msgid "Unknown" |
2537 | msgstr "Sconosciuto" |
2538 | |
2539 | @@ -210,8 +211,8 @@ |
2540 | msgid "Searching for packages…" |
2541 | msgstr "Cercando nei pacchetti..." |
2542 | |
2543 | +#: ../libertine/qml/SearchResults.qml:60 |
2544 | #: ../libertine/qml/DebianPackagePicker.qml:70 |
2545 | -#: ../libertine/qml/SearchResults.qml:60 |
2546 | msgid "Install Package" |
2547 | msgstr "Installa pacchetto" |
2548 | |
2549 | @@ -219,20 +220,20 @@ |
2550 | msgid "Manage %1" |
2551 | msgstr "" |
2552 | |
2553 | +#: ../libertine/qml/ManageContainer.qml:63 |
2554 | #: ../libertine/qml/ContainerOptionsDialog.qml:40 |
2555 | -#: ../libertine/qml/ManageContainer.qml:69 |
2556 | msgid "i386 multiarch support" |
2557 | msgstr "Supporto i386 multiarchitettura" |
2558 | |
2559 | -#: ../libertine/qml/ManageContainer.qml:73 |
2560 | +#: ../libertine/qml/ManageContainer.qml:67 |
2561 | msgid "Additional archives and PPAs" |
2562 | msgstr "Archivi e PPA addizionali" |
2563 | |
2564 | -#: ../libertine/qml/ManageContainer.qml:84 |
2565 | +#: ../libertine/qml/ManageContainer.qml:78 |
2566 | msgid "Update…" |
2567 | msgstr "Aggiorno..." |
2568 | |
2569 | -#: ../libertine/qml/ManageContainer.qml:100 |
2570 | +#: ../libertine/qml/ManageContainer.qml:94 |
2571 | msgid "Update container" |
2572 | msgstr "Aggiorna contenitore" |
2573 | |
2574 | @@ -281,39 +282,39 @@ |
2575 | "The %1 package is already installed. Please try a different package name." |
2576 | msgstr "" |
2577 | |
2578 | -#: ../libertine/qml/HomeView.qml:105 |
2579 | +#: ../libertine/qml/HomeView.qml:104 |
2580 | msgid "Manage Container" |
2581 | msgstr "" |
2582 | |
2583 | -#: ../libertine/qml/HomeView.qml:112 |
2584 | +#: ../libertine/qml/HomeView.qml:110 |
2585 | msgid "Container Information" |
2586 | msgstr "Informazioni Contenitore" |
2587 | |
2588 | -#: ../libertine/qml/HomeView.qml:119 |
2589 | +#: ../libertine/qml/HomeView.qml:116 |
2590 | msgid "Switch Container" |
2591 | msgstr "Cambia contenitore" |
2592 | |
2593 | -#: ../libertine/qml/HomeView.qml:135 |
2594 | +#: ../libertine/qml/HomeView.qml:132 |
2595 | msgid "Enter package name or Debian file" |
2596 | msgstr "" |
2597 | |
2598 | -#: ../libertine/qml/HomeView.qml:143 |
2599 | +#: ../libertine/qml/HomeView.qml:138 |
2600 | msgid "Choose Debian package to install" |
2601 | msgstr "" |
2602 | |
2603 | -#: ../libertine/qml/HomeView.qml:152 |
2604 | +#: ../libertine/qml/HomeView.qml:145 |
2605 | msgid "Search archives for a package" |
2606 | msgstr "" |
2607 | |
2608 | -#: ../libertine/qml/HomeView.qml:219 |
2609 | +#: ../libertine/qml/HomeView.qml:211 |
2610 | msgid "Remove Package" |
2611 | msgstr "Rimuovi pacchetto" |
2612 | |
2613 | -#: ../libertine/qml/HomeView.qml:231 |
2614 | +#: ../libertine/qml/HomeView.qml:223 |
2615 | msgid "Package Info" |
2616 | msgstr "Informazioni pacchetto" |
2617 | |
2618 | -#: ../libertine/qml/HomeView.qml:248 |
2619 | +#: ../libertine/qml/HomeView.qml:240 |
2620 | msgid "No packages are installed" |
2621 | msgstr "Nessun pacchetto installato" |
2622 | |
2623 | @@ -337,27 +338,27 @@ |
2624 | msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
2625 | msgstr "" |
2626 | |
2627 | -#: ../libertine/qml/ExtraArchivesView.qml:114 |
2628 | +#: ../libertine/qml/ExtraArchivesView.qml:107 |
2629 | msgid "remove" |
2630 | msgstr "rimuovi" |
2631 | |
2632 | -#: ../libertine/qml/ExtraArchivesView.qml:115 |
2633 | +#: ../libertine/qml/ExtraArchivesView.qml:108 |
2634 | msgid "Remove extra archive" |
2635 | msgstr "" |
2636 | |
2637 | -#: ../libertine/qml/ExtraArchivesView.qml:132 |
2638 | +#: ../libertine/qml/ExtraArchivesView.qml:125 |
2639 | msgid "No additional archives and PPA's have been added" |
2640 | msgstr "" |
2641 | |
2642 | +#: ../libertine/qml/ExtraArchivesView.qml:173 |
2643 | +msgid "Adding archive failed" |
2644 | +msgstr "" |
2645 | + |
2646 | #: ../libertine/qml/ExtraArchivesView.qml:177 |
2647 | -msgid "Adding archive failed" |
2648 | -msgstr "" |
2649 | - |
2650 | -#: ../libertine/qml/ExtraArchivesView.qml:181 |
2651 | msgid "Deleting archive failed" |
2652 | msgstr "" |
2653 | |
2654 | -#: ../libertine/qml/GenericErrorDialog.qml:46 |
2655 | +#: ../libertine/qml/GenericErrorDialog.qml:32 |
2656 | msgid "Dismiss" |
2657 | msgstr "Declina" |
2658 | |
2659 | @@ -384,19 +385,19 @@ |
2660 | msgid "Container information for %1" |
2661 | msgstr "" |
2662 | |
2663 | -#: ../libertine/qml/ContainerInfoView.qml:56 |
2664 | +#: ../libertine/qml/ContainerInfoView.qml:53 |
2665 | msgid "ID" |
2666 | msgstr "ID" |
2667 | |
2668 | -#: ../libertine/qml/ContainerInfoView.qml:64 |
2669 | +#: ../libertine/qml/ContainerInfoView.qml:60 |
2670 | msgid "Name" |
2671 | msgstr "Nome" |
2672 | |
2673 | -#: ../libertine/qml/ContainerInfoView.qml:72 |
2674 | +#: ../libertine/qml/ContainerInfoView.qml:67 |
2675 | msgid "Distribution" |
2676 | msgstr "Distribuzione" |
2677 | |
2678 | -#: ../libertine/qml/ContainerInfoView.qml:80 |
2679 | +#: ../libertine/qml/ContainerInfoView.qml:74 |
2680 | msgid "Status" |
2681 | msgstr "Stato" |
2682 | |
2683 | @@ -415,3 +416,27 @@ |
2684 | #: ../libertine/qml/ContainerOptionsDialog.qml:56 |
2685 | msgid "container name" |
2686 | msgstr "nome contenitore" |
2687 | + |
2688 | +#, fuzzy |
2689 | +#~ msgid "Add" |
2690 | +#~ msgstr "aggiungi" |
2691 | + |
2692 | +#, fuzzy |
2693 | +#~ msgid "Add Archive" |
2694 | +#~ msgstr "Aggiungi PPA addizionale" |
2695 | + |
2696 | +#, fuzzy |
2697 | +#~ msgid "Add a new archive" |
2698 | +#~ msgstr "Aggiungi PPA addizionale" |
2699 | + |
2700 | +#, fuzzy |
2701 | +#~ msgid "Additional Archives" |
2702 | +#~ msgstr "Aggiungi PPA addizionale" |
2703 | + |
2704 | +#, fuzzy |
2705 | +#~ msgid "Default container" |
2706 | +#~ msgstr "Elimina Contenitore" |
2707 | + |
2708 | +#, fuzzy |
2709 | +#~ msgid "new archive name" |
2710 | +#~ msgstr "nome contenitore" |
2711 | |
2712 | === modified file 'po/libertine.pot' |
2713 | --- po/libertine.pot 2016-06-10 12:07:31 +0000 |
2714 | +++ po/libertine.pot 2016-07-21 17:26:05 +0000 |
2715 | @@ -8,7 +8,7 @@ |
2716 | msgstr "" |
2717 | "Project-Id-Version: PACKAGE VERSION\n" |
2718 | "Report-Msgid-Bugs-To: \n" |
2719 | -"POT-Creation-Date: 2016-06-07 07:58-0400\n" |
2720 | +"POT-Creation-Date: 2016-07-15 14:24-0400\n" |
2721 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
2722 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2723 | "Language-Team: LANGUAGE <LL@li.org>\n" |
2724 | @@ -22,32 +22,32 @@ |
2725 | msgstr "" |
2726 | |
2727 | #: ../libertine/ContainerConfig.cpp:148 ../libertine/ContainerConfig.cpp:185 |
2728 | -#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:197 |
2729 | -#: ../libertine/qml/ExtraArchivesView.qml:99 |
2730 | +#: ../libertine/qml/ContainersView.qml:80 ../libertine/qml/HomeView.qml:205 |
2731 | +#: ../libertine/qml/ExtraArchivesView.qml:67 |
2732 | msgid "installing" |
2733 | msgstr "" |
2734 | |
2735 | -#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:119 |
2736 | -#: ../libertine/qml/ManageContainer.qml:79 |
2737 | -#: ../libertine/qml/ManageContainer.qml:119 |
2738 | +#: ../libertine/ContainerConfig.cpp:149 ../libertine/qml/ContainersView.qml:117 |
2739 | +#: ../libertine/qml/ManageContainer.qml:85 |
2740 | +#: ../libertine/qml/ManageContainer.qml:152 |
2741 | msgid "ready" |
2742 | msgstr "" |
2743 | |
2744 | -#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:120 |
2745 | -#: ../libertine/qml/ManageContainer.qml:91 |
2746 | -#: ../libertine/qml/ManageContainer.qml:115 |
2747 | +#: ../libertine/ContainerConfig.cpp:150 ../libertine/qml/ContainersView.qml:118 |
2748 | +#: ../libertine/qml/ManageContainer.qml:97 |
2749 | +#: ../libertine/qml/ManageContainer.qml:148 |
2750 | msgid "updating" |
2751 | msgstr "" |
2752 | |
2753 | #: ../libertine/ContainerConfig.cpp:151 ../libertine/ContainerConfig.cpp:188 |
2754 | -#: ../libertine/qml/ContainersView.qml:82 ../libertine/qml/HomeView.qml:198 |
2755 | -#: ../libertine/qml/ExtraArchivesView.qml:100 |
2756 | +#: ../libertine/qml/ContainersView.qml:81 ../libertine/qml/HomeView.qml:206 |
2757 | +#: ../libertine/qml/ExtraArchivesView.qml:68 |
2758 | msgid "removing" |
2759 | msgstr "" |
2760 | |
2761 | #: ../libertine/ContainerConfig.cpp:152 ../libertine/ContainerConfig.cpp:189 |
2762 | -#: ../libertine/qml/PackageInfoView.qml:131 |
2763 | -#: ../libertine/qml/ContainerInfoView.qml:93 |
2764 | +#: ../libertine/qml/PackageInfoView.qml:148 |
2765 | +#: ../libertine/qml/ContainerInfoView.qml:143 |
2766 | msgid "removed" |
2767 | msgstr "" |
2768 | |
2769 | @@ -59,42 +59,46 @@ |
2770 | msgid "installed" |
2771 | msgstr "" |
2772 | |
2773 | -#: ../libertine/ContainerManager.cpp:24 |
2774 | +#: ../libertine/ContainerManager.cpp:25 |
2775 | msgid "%1 failed to start" |
2776 | msgstr "" |
2777 | |
2778 | -#: ../libertine/ContainerManager.cpp:25 |
2779 | +#: ../libertine/ContainerManager.cpp:26 |
2780 | msgid "Installation of package %1 failed" |
2781 | msgstr "" |
2782 | |
2783 | -#: ../libertine/ContainerManager.cpp:26 |
2784 | +#: ../libertine/ContainerManager.cpp:27 |
2785 | msgid "Removal of package %1 failed" |
2786 | msgstr "" |
2787 | |
2788 | -#: ../libertine/ContainerManager.cpp:27 |
2789 | +#: ../libertine/ContainerManager.cpp:28 |
2790 | msgid "Searching for query %1 failed" |
2791 | msgstr "" |
2792 | |
2793 | -#: ../libertine/ContainerManager.cpp:28 |
2794 | +#: ../libertine/ContainerManager.cpp:29 |
2795 | msgid "Updating container %1 failed" |
2796 | msgstr "" |
2797 | |
2798 | -#: ../libertine/ContainerManager.cpp:29 |
2799 | +#: ../libertine/ContainerManager.cpp:30 |
2800 | msgid "Creating container %1 failed" |
2801 | msgstr "" |
2802 | |
2803 | -#: ../libertine/ContainerManager.cpp:30 |
2804 | +#: ../libertine/ContainerManager.cpp:31 |
2805 | msgid "Destroying container %1 failed" |
2806 | msgstr "" |
2807 | |
2808 | -#: ../libertine/ContainerManager.cpp:31 |
2809 | +#: ../libertine/ContainerManager.cpp:32 |
2810 | msgid "Running command %1 failed" |
2811 | msgstr "" |
2812 | |
2813 | -#: ../libertine/ContainerManager.cpp:32 |
2814 | +#: ../libertine/ContainerManager.cpp:33 |
2815 | msgid "Attempt to configure container %1 failed" |
2816 | msgstr "" |
2817 | |
2818 | +#: ../libertine/ContainerManager.cpp:34 |
2819 | +msgid "Attempt to set container as default failed" |
2820 | +msgstr "" |
2821 | + |
2822 | #: ../libertine/qml/PackageExistsDialog.qml:28 |
2823 | msgid "The %1 package is already installed." |
2824 | msgstr "" |
2825 | @@ -115,27 +119,27 @@ |
2826 | msgid "My Containers" |
2827 | msgstr "" |
2828 | |
2829 | -#: ../libertine/qml/ContainersView.qml:92 ../libertine/qml/HomeView.qml:210 |
2830 | +#: ../libertine/qml/ContainersView.qml:91 ../libertine/qml/HomeView.qml:218 |
2831 | msgid "delete" |
2832 | msgstr "" |
2833 | |
2834 | -#: ../libertine/qml/ContainersView.qml:93 |
2835 | +#: ../libertine/qml/ContainersView.qml:92 |
2836 | msgid "Delete Container" |
2837 | msgstr "" |
2838 | |
2839 | -#: ../libertine/qml/ContainersView.qml:108 ../libertine/qml/HomeView.qml:222 |
2840 | +#: ../libertine/qml/ContainersView.qml:106 ../libertine/qml/HomeView.qml:230 |
2841 | msgid "info" |
2842 | msgstr "" |
2843 | |
2844 | -#: ../libertine/qml/ContainersView.qml:109 |
2845 | +#: ../libertine/qml/ContainersView.qml:107 |
2846 | msgid "Container Info" |
2847 | msgstr "" |
2848 | |
2849 | -#: ../libertine/qml/ContainersView.qml:117 |
2850 | +#: ../libertine/qml/ContainersView.qml:115 |
2851 | msgid "edit" |
2852 | msgstr "" |
2853 | |
2854 | -#: ../libertine/qml/ContainersView.qml:118 |
2855 | +#: ../libertine/qml/ContainersView.qml:116 |
2856 | msgid "Container Apps" |
2857 | msgstr "" |
2858 | |
2859 | @@ -153,16 +157,14 @@ |
2860 | msgstr "" |
2861 | |
2862 | #: ../libertine/qml/SearchPackagesDialog.qml:39 |
2863 | -#: ../libertine/qml/ContainerPasswordDialog.qml:52 |
2864 | -#: ../libertine/qml/HomeView.qml:68 ../libertine/qml/ExtraArchivesView.qml:57 |
2865 | -#: ../libertine/qml/ContainerOptionsDialog.qml:64 |
2866 | +#: ../libertine/qml/HomeView.qml:68 |
2867 | +#: ../libertine/qml/ContainerOptionsDialog.qml:77 |
2868 | msgid "OK" |
2869 | msgstr "" |
2870 | |
2871 | #: ../libertine/qml/SearchPackagesDialog.qml:57 |
2872 | -#: ../libertine/qml/ContainerPasswordDialog.qml:70 |
2873 | -#: ../libertine/qml/HomeView.qml:88 ../libertine/qml/ExtraArchivesView.qml:65 |
2874 | -#: ../libertine/qml/ContainerOptionsDialog.qml:75 |
2875 | +#: ../libertine/qml/HomeView.qml:88 |
2876 | +#: ../libertine/qml/ContainerOptionsDialog.qml:88 |
2877 | msgid "Cancel" |
2878 | msgstr "" |
2879 | |
2880 | @@ -174,15 +176,20 @@ |
2881 | msgid "Obtaining package version…" |
2882 | msgstr "" |
2883 | |
2884 | -#: ../libertine/qml/PackageInfoView.qml:59 |
2885 | +#: ../libertine/qml/PackageInfoView.qml:60 |
2886 | msgid "Package version" |
2887 | msgstr "" |
2888 | |
2889 | -#: ../libertine/qml/PackageInfoView.qml:67 |
2890 | +#: ../libertine/qml/PackageInfoView.qml:68 |
2891 | msgid "Install status" |
2892 | msgstr "" |
2893 | |
2894 | -#: ../libertine/qml/PackageInfoView.qml:140 |
2895 | +#: ../libertine/qml/PackageInfoView.qml:85 |
2896 | +#: ../libertine/qml/ContainerInfoView.qml:97 |
2897 | +msgid "Operation details" |
2898 | +msgstr "" |
2899 | + |
2900 | +#: ../libertine/qml/PackageInfoView.qml:159 |
2901 | msgid "Unknown" |
2902 | msgstr "" |
2903 | |
2904 | @@ -219,23 +226,27 @@ |
2905 | msgid "Manage %1" |
2906 | msgstr "" |
2907 | |
2908 | -#: ../libertine/qml/ManageContainer.qml:63 |
2909 | -#: ../libertine/qml/ContainerOptionsDialog.qml:40 |
2910 | +#: ../libertine/qml/ManageContainer.qml:69 |
2911 | +#: ../libertine/qml/ContainerOptionsDialog.qml:39 |
2912 | msgid "i386 multiarch support" |
2913 | msgstr "" |
2914 | |
2915 | -#: ../libertine/qml/ManageContainer.qml:67 |
2916 | +#: ../libertine/qml/ManageContainer.qml:73 |
2917 | msgid "Additional archives and PPAs" |
2918 | msgstr "" |
2919 | |
2920 | -#: ../libertine/qml/ManageContainer.qml:78 |
2921 | +#: ../libertine/qml/ManageContainer.qml:84 |
2922 | msgid "Update…" |
2923 | msgstr "" |
2924 | |
2925 | -#: ../libertine/qml/ManageContainer.qml:94 |
2926 | +#: ../libertine/qml/ManageContainer.qml:100 |
2927 | msgid "Update container" |
2928 | msgstr "" |
2929 | |
2930 | +#: ../libertine/qml/ManageContainer.qml:117 |
2931 | +msgid "Default container" |
2932 | +msgstr "" |
2933 | + |
2934 | #: ../libertine/qml/DebianPackagePicker.qml:28 |
2935 | msgid "Available Debian Packages to Install" |
2936 | msgstr "" |
2937 | @@ -244,22 +255,6 @@ |
2938 | msgid "No Debian packages available" |
2939 | msgstr "" |
2940 | |
2941 | -#: ../libertine/qml/ContainerPasswordDialog.qml:27 |
2942 | -msgid "Authentication required" |
2943 | -msgstr "" |
2944 | - |
2945 | -#: ../libertine/qml/ContainerPasswordDialog.qml:28 |
2946 | -msgid "Password is required to create a Libertine container" |
2947 | -msgstr "" |
2948 | - |
2949 | -#: ../libertine/qml/ContainerPasswordDialog.qml:36 |
2950 | -msgid "Invalid password entered" |
2951 | -msgstr "" |
2952 | - |
2953 | -#: ../libertine/qml/ContainerPasswordDialog.qml:41 |
2954 | -msgid "password" |
2955 | -msgstr "" |
2956 | - |
2957 | #: ../libertine/qml/HomeView.qml:29 |
2958 | msgid "Classic Apps - %1" |
2959 | msgstr "" |
2960 | @@ -281,83 +276,75 @@ |
2961 | "The %1 package is already installed. Please try a different package name." |
2962 | msgstr "" |
2963 | |
2964 | -#: ../libertine/qml/HomeView.qml:104 |
2965 | +#: ../libertine/qml/HomeView.qml:105 |
2966 | msgid "Manage Container" |
2967 | msgstr "" |
2968 | |
2969 | -#: ../libertine/qml/HomeView.qml:110 |
2970 | +#: ../libertine/qml/HomeView.qml:112 |
2971 | msgid "Container Information" |
2972 | msgstr "" |
2973 | |
2974 | -#: ../libertine/qml/HomeView.qml:116 |
2975 | +#: ../libertine/qml/HomeView.qml:119 |
2976 | msgid "Switch Container" |
2977 | msgstr "" |
2978 | |
2979 | -#: ../libertine/qml/HomeView.qml:132 |
2980 | +#: ../libertine/qml/HomeView.qml:135 |
2981 | msgid "Enter package name or Debian file" |
2982 | msgstr "" |
2983 | |
2984 | -#: ../libertine/qml/HomeView.qml:138 |
2985 | +#: ../libertine/qml/HomeView.qml:143 |
2986 | msgid "Choose Debian package to install" |
2987 | msgstr "" |
2988 | |
2989 | -#: ../libertine/qml/HomeView.qml:145 |
2990 | +#: ../libertine/qml/HomeView.qml:152 |
2991 | msgid "Search archives for a package" |
2992 | msgstr "" |
2993 | |
2994 | -#: ../libertine/qml/HomeView.qml:211 |
2995 | +#: ../libertine/qml/HomeView.qml:219 |
2996 | msgid "Remove Package" |
2997 | msgstr "" |
2998 | |
2999 | -#: ../libertine/qml/HomeView.qml:223 |
3000 | +#: ../libertine/qml/HomeView.qml:231 |
3001 | msgid "Package Info" |
3002 | msgstr "" |
3003 | |
3004 | -#: ../libertine/qml/HomeView.qml:240 |
3005 | +#: ../libertine/qml/HomeView.qml:248 |
3006 | msgid "No packages are installed" |
3007 | msgstr "" |
3008 | |
3009 | -#: ../libertine/qml/ExtraArchivesView.qml:28 |
3010 | -msgid "Additional Archives and PPAs" |
3011 | +#: ../libertine/qml/ExtraArchivesView.qml:27 |
3012 | +msgid "Additional Archives" |
3013 | +msgstr "" |
3014 | + |
3015 | +#: ../libertine/qml/ExtraArchivesView.qml:31 |
3016 | +msgid "add" |
3017 | msgstr "" |
3018 | |
3019 | #: ../libertine/qml/ExtraArchivesView.qml:32 |
3020 | -msgid "add" |
3021 | -msgstr "" |
3022 | - |
3023 | -#: ../libertine/qml/ExtraArchivesView.qml:33 |
3024 | -msgid "Add a new PPA" |
3025 | -msgstr "" |
3026 | - |
3027 | -#: ../libertine/qml/ExtraArchivesView.qml:46 |
3028 | -msgid "Add additional PPA" |
3029 | -msgstr "" |
3030 | - |
3031 | -#: ../libertine/qml/ExtraArchivesView.qml:47 |
3032 | -msgid "Enter name of PPA in the form ppa:user/ppa-name:" |
3033 | -msgstr "" |
3034 | - |
3035 | -#: ../libertine/qml/ExtraArchivesView.qml:107 |
3036 | +msgid "Add a new archive" |
3037 | +msgstr "" |
3038 | + |
3039 | +#: ../libertine/qml/ExtraArchivesView.qml:75 |
3040 | msgid "remove" |
3041 | msgstr "" |
3042 | |
3043 | -#: ../libertine/qml/ExtraArchivesView.qml:108 |
3044 | +#: ../libertine/qml/ExtraArchivesView.qml:76 |
3045 | msgid "Remove extra archive" |
3046 | msgstr "" |
3047 | |
3048 | -#: ../libertine/qml/ExtraArchivesView.qml:125 |
3049 | +#: ../libertine/qml/ExtraArchivesView.qml:93 |
3050 | msgid "No additional archives and PPA's have been added" |
3051 | msgstr "" |
3052 | |
3053 | -#: ../libertine/qml/ExtraArchivesView.qml:173 |
3054 | -msgid "Adding archive failed" |
3055 | -msgstr "" |
3056 | - |
3057 | -#: ../libertine/qml/ExtraArchivesView.qml:177 |
3058 | +#: ../libertine/qml/ExtraArchivesView.qml:126 |
3059 | msgid "Deleting archive failed" |
3060 | msgstr "" |
3061 | |
3062 | -#: ../libertine/qml/GenericErrorDialog.qml:32 |
3063 | +#: ../libertine/qml/GenericErrorDialog.qml:39 |
3064 | +msgid "Copy to Clipboard" |
3065 | +msgstr "" |
3066 | + |
3067 | +#: ../libertine/qml/GenericErrorDialog.qml:46 |
3068 | msgid "Dismiss" |
3069 | msgstr "" |
3070 | |
3071 | @@ -384,22 +371,45 @@ |
3072 | msgid "Container information for %1" |
3073 | msgstr "" |
3074 | |
3075 | -#: ../libertine/qml/ContainerInfoView.qml:53 |
3076 | +#: ../libertine/qml/ContainerInfoView.qml:56 |
3077 | msgid "ID" |
3078 | msgstr "" |
3079 | |
3080 | -#: ../libertine/qml/ContainerInfoView.qml:60 |
3081 | +#: ../libertine/qml/ContainerInfoView.qml:64 |
3082 | msgid "Name" |
3083 | msgstr "" |
3084 | |
3085 | -#: ../libertine/qml/ContainerInfoView.qml:67 |
3086 | +#: ../libertine/qml/ContainerInfoView.qml:72 |
3087 | msgid "Distribution" |
3088 | msgstr "" |
3089 | |
3090 | -#: ../libertine/qml/ContainerInfoView.qml:74 |
3091 | +#: ../libertine/qml/ContainerInfoView.qml:80 |
3092 | msgid "Status" |
3093 | msgstr "" |
3094 | |
3095 | +#: ../libertine/qml/AddExtraArchiveView.qml:27 |
3096 | +msgid "Add Archive" |
3097 | +msgstr "" |
3098 | + |
3099 | +#: ../libertine/qml/AddExtraArchiveView.qml:42 |
3100 | +msgid "New archive identifier, e.g." |
3101 | +msgstr "" |
3102 | + |
3103 | +#: ../libertine/qml/AddExtraArchiveView.qml:50 |
3104 | +msgid "" |
3105 | +"multiverse\n" |
3106 | +"ppa:user/repository\n" |
3107 | +"deb http://myserver/repo stable repo" |
3108 | +msgstr "" |
3109 | + |
3110 | +#: ../libertine/qml/AddExtraArchiveView.qml:73 |
3111 | +msgid "(Optional) Public signing key for archive" |
3112 | +msgstr "" |
3113 | + |
3114 | +#: ../libertine/qml/AddExtraArchiveView.qml:90 |
3115 | +msgid "Add" |
3116 | +msgstr "" |
3117 | + |
3118 | #: ../libertine/qml/ContainerOptionsDialog.qml:27 |
3119 | msgid "Container Options" |
3120 | msgstr "" |
3121 | @@ -408,10 +418,20 @@ |
3122 | msgid "Configure options for container creation." |
3123 | msgstr "" |
3124 | |
3125 | -#: ../libertine/qml/ContainerOptionsDialog.qml:50 |
3126 | -msgid "Enter or name for the container or leave blank for default name" |
3127 | +#: ../libertine/qml/ContainerOptionsDialog.qml:49 |
3128 | +msgid "Enter a name for the container or leave blank for default name:" |
3129 | msgstr "" |
3130 | |
3131 | -#: ../libertine/qml/ContainerOptionsDialog.qml:56 |
3132 | +#: ../libertine/qml/ContainerOptionsDialog.qml:55 |
3133 | msgid "container name" |
3134 | msgstr "" |
3135 | + |
3136 | +#: ../libertine/qml/ContainerOptionsDialog.qml:62 |
3137 | +msgid "" |
3138 | +"Enter password for your user in the Libertine container or leave blank for " |
3139 | +"no password:" |
3140 | +msgstr "" |
3141 | + |
3142 | +#: ../libertine/qml/ContainerOptionsDialog.qml:69 |
3143 | +msgid "password" |
3144 | +msgstr "" |
3145 | |
3146 | === modified file 'python/libertine/ContainersConfig.py' |
3147 | --- python/libertine/ContainersConfig.py 2016-06-27 20:32:33 +0000 |
3148 | +++ python/libertine/ContainersConfig.py 2016-07-21 17:26:05 +0000 |
3149 | @@ -115,7 +115,7 @@ |
3150 | if item[object_key] == value: |
3151 | container[array_key].remove(item) |
3152 | write_container_config_file(self.container_list) |
3153 | - return |
3154 | + return |
3155 | |
3156 | def _test_key_value_exists(self, container_id, key, value=None): |
3157 | key_value = self._get_value_by_key(container_id, key) |
3158 | @@ -149,7 +149,7 @@ |
3159 | if container['id'] == container_id: |
3160 | return container |
3161 | |
3162 | - return None |
3163 | + return None |
3164 | |
3165 | def merge_container_config_files(self, filepath): |
3166 | merged_json = [] |
3167 | @@ -199,7 +199,7 @@ |
3168 | self.container_list.pop('defaultContainer', None) |
3169 | |
3170 | if write_json: |
3171 | - write_container_config_file(self.container_list) |
3172 | + write_container_config_file(self.container_list) |
3173 | |
3174 | """ |
3175 | Operations for the container itself. |
3176 | @@ -261,7 +261,7 @@ |
3177 | """ |
3178 | def add_container_archive(self, container_id, archive_name): |
3179 | archive_obj = {'archiveName': archive_name, 'archiveStatus': 'new'} |
3180 | - self._set_value_by_key(container_id, 'extraArchives', archive_obj) |
3181 | + self._set_value_by_key(container_id, 'extraArchives', archive_obj) |
3182 | |
3183 | def delete_container_archive(self, container_id, archive_name): |
3184 | self._delete_array_object_by_key_value(container_id, 'extraArchives', |
3185 | @@ -271,6 +271,10 @@ |
3186 | self._set_array_object_value_by_key(container_id, 'extraArchives', 'archiveName', |
3187 | archive_name, 'archiveStatus', new_status) |
3188 | |
3189 | + def get_archive_install_status(self, container_id, archive_name): |
3190 | + return self._get_array_object_value_by_key(container_id, 'extraArchives', 'archiveName', |
3191 | + archive_name, 'archiveStatus') |
3192 | + |
3193 | def archive_exists(self, container_id, archive_name): |
3194 | return self._test_array_object_key_value_exists(container_id, 'extraArchives', 'archiveName', |
3195 | archive_name) |
3196 | @@ -306,4 +310,3 @@ |
3197 | |
3198 | def get_container_type(self, container_id): |
3199 | return self._get_value_by_key(container_id, 'type') |
3200 | - |
3201 | |
3202 | === modified file 'python/libertine/Libertine.py' |
3203 | --- python/libertine/Libertine.py 2016-07-07 15:59:49 +0000 |
3204 | +++ python/libertine/Libertine.py 2016-07-21 17:26:05 +0000 |
3205 | @@ -18,7 +18,9 @@ |
3206 | import contextlib |
3207 | import libertine.utils |
3208 | import os |
3209 | +import psutil |
3210 | import shutil |
3211 | +import shlex |
3212 | |
3213 | from libertine.ContainersConfig import ContainersConfig |
3214 | from libertine.HostInfo import HostInfo |
3215 | @@ -61,7 +63,6 @@ |
3216 | self.root_path = libertine.utils.get_libertine_container_rootfs_path(self.container_id) |
3217 | self.default_packages = ['matchbox', |
3218 | 'libnss-extrausers', |
3219 | - 'software-properties-common', |
3220 | 'humanity-icon-theme', |
3221 | 'maliit-inputcontext-gtk2', |
3222 | 'maliit-inputcontext-gtk3', |
3223 | @@ -161,32 +162,52 @@ |
3224 | os.environ['DEBIAN_FRONTEND'] = 'readline' |
3225 | return self.run_in_container(apt_command_prefix(verbosity) + " install '" + package_name + "'") == 0 |
3226 | |
3227 | - def configure_command(self, command, *args, verbosity=1): |
3228 | - """ |
3229 | - Configures the container based on what the command is. |
3230 | - |
3231 | - :param command: The configuration command to run. |
3232 | - :param *args: List of arguments used for the given configuration command |
3233 | - """ |
3234 | - if command == 'multiarch': |
3235 | - if args[0] == 'enable': |
3236 | - ret = self.run_in_container("dpkg --add-architecture i386") |
3237 | - if ret or ret == 0: |
3238 | - self.run_in_container(apt_command_prefix(verbosity) + '--force-yes update') |
3239 | - return ret |
3240 | - else: |
3241 | - self.run_in_container(apt_command_prefix(verbosity) + "purge \".*:i386\"") |
3242 | - return self.run_in_container("dpkg --remove-architecture i386") |
3243 | - |
3244 | - elif command == 'add-archive': |
3245 | - if not os.path.exists(os.path.join(self.root_path, 'usr', 'bin', 'add-apt-repository')): |
3246 | - self.update_packages(verbosity) |
3247 | - self.install_package("software-properties-common", verbosity) |
3248 | - |
3249 | - return self.run_in_container("add-apt-repository -y " + args[0]) |
3250 | - |
3251 | - elif command == 'delete-archive': |
3252 | - return self.run_in_container("add-apt-repository -y -r " + args[0]) |
3253 | + def configure_multiarch(self, should_enable, verbosity=1): |
3254 | + """ |
3255 | + Enables or disables multiarch repositories. |
3256 | + |
3257 | + :param should_enable: Whether or not to enable multiarch support. |
3258 | + :param verbosity: the chattiness of the output on a range from 0 to 2 |
3259 | + """ |
3260 | + if should_enable: |
3261 | + ret = self.run_in_container("dpkg --add-architecture i386") |
3262 | + if ret or ret == 0: |
3263 | + self.run_in_container(apt_command_prefix(verbosity) + '--force-yes update') |
3264 | + return ret |
3265 | + else: |
3266 | + self.run_in_container(apt_command_prefix(verbosity) + "purge \".*:i386\"") |
3267 | + return self.run_in_container("dpkg --remove-architecture i386") |
3268 | + |
3269 | + def configure_add_archive(self, archive, public_key_file, verbosity=1): |
3270 | + """ |
3271 | + Adds the given archive. If this archive requires a key, prompt user. |
3272 | + |
3273 | + :param archive: The configuration command to run. |
3274 | + :param public_key_file: file containing the public key used to sign this archive |
3275 | + :param verbosity: the chattiness of the output on a range from 0 to 2 |
3276 | + """ |
3277 | + if not os.path.exists(os.path.join(self.root_path, 'usr', 'bin', 'add-apt-repository')): |
3278 | + self.update_packages(verbosity) |
3279 | + self.install_package("software-properties-common", verbosity) |
3280 | + if 'https://' in archive and not os.path.exists(os.path.join(self.root_path, 'usr', 'lib', 'apt', 'methods', 'https')): |
3281 | + self.update_packages(verbosity) |
3282 | + self.install_package("apt-transport-https", verbosity) |
3283 | + |
3284 | + retcode = self.run_in_container("add-apt-repository -y " + archive) |
3285 | + if retcode is 0 and public_key_file is not None: |
3286 | + with open(public_key_file, 'r') as keyfile: |
3287 | + return self.run_in_container("bash -c 'echo \"%s\" | apt-key add -'" % keyfile.read()) |
3288 | + |
3289 | + return retcode |
3290 | + |
3291 | + def configure_remove_archive(self, archive, verbosity=1): |
3292 | + """ |
3293 | + Removes the given archive. |
3294 | + |
3295 | + :param archive: The configuration command to run. |
3296 | + :param verbosity: the chattiness of the output on a range from 0 to 2 |
3297 | + """ |
3298 | + return self.run_in_container("add-apt-repository -y -r " + archive) |
3299 | |
3300 | @property |
3301 | def name(self): |
3302 | @@ -247,7 +268,9 @@ |
3303 | """ |
3304 | super().__init__() |
3305 | |
3306 | - container_type = ContainersConfig().get_container_type(container_id) |
3307 | + self.containers_config = ContainersConfig() |
3308 | + |
3309 | + container_type = self.containers_config.get_container_type(container_id) |
3310 | |
3311 | if container_type == None or container_type == "lxc": |
3312 | from libertine.LxcContainer import LibertineLXC |
3313 | @@ -287,7 +310,7 @@ |
3314 | Creates the container. |
3315 | """ |
3316 | self.container.architecture = HostInfo().get_host_architecture() |
3317 | - self.container.installed_release = ContainersConfig().get_container_distro(self.container_id) |
3318 | + self.container.installed_release = self.containers_config.get_container_distro(self.container_id) |
3319 | |
3320 | return self.container.create_libertine_container(password, multiarch, verbosity) |
3321 | |
3322 | @@ -349,7 +372,7 @@ |
3323 | :param app_exec_line: the application exec line as passed in by |
3324 | ubuntu-app-launch |
3325 | """ |
3326 | - if ContainersConfig().container_exists(self.container.container_id): |
3327 | + if self.containers_config.container_exists(self.container.container_id): |
3328 | # Update $PATH as necessary |
3329 | if '/usr/games' not in os.environ['PATH']: |
3330 | os.environ['PATH'] = os.environ['PATH'] + ":/usr/games" |
3331 | @@ -390,9 +413,69 @@ |
3332 | except RuntimeError as e: |
3333 | return handle_runtime_error(e) |
3334 | |
3335 | - def configure_command(self, command, *args): |
3336 | - try: |
3337 | - with ContainerRunning(self.container): |
3338 | - return self.container.configure_command(command, *args) |
3339 | - except RuntimeError as e: |
3340 | - return handle_runtime_error(e) |
3341 | + def configure_multiarch(self, should_enable, verbosity=1): |
3342 | + try: |
3343 | + with ContainerRunning(self.container): |
3344 | + return self.container.configure_multiarch(should_enable, verbosity) |
3345 | + except RuntimeError as e: |
3346 | + return handle_runtime_error(e) |
3347 | + |
3348 | + def configure_add_archive(self, archive, key, verbosity): |
3349 | + try: |
3350 | + with ContainerRunning(self.container): |
3351 | + return self.container.configure_add_archive(archive, key, verbosity) |
3352 | + except RuntimeError as e: |
3353 | + return handle_runtime_error(e) |
3354 | + |
3355 | + def configure_remove_archive(self, archive, verbosity): |
3356 | + try: |
3357 | + with ContainerRunning(self.container): |
3358 | + return self.container.configure_remove_archive(archive, verbosity) |
3359 | + except RuntimeError as e: |
3360 | + return handle_runtime_error(e) |
3361 | + |
3362 | + |
3363 | +class LibertineApplication(object): |
3364 | + """ |
3365 | + Launches a libertine container with a session bridge for sockets such as dbus |
3366 | + |
3367 | + :param container_id: The container id. |
3368 | + "param app_exec_line: The exec line used to start the app in the container. |
3369 | + """ |
3370 | + def __init__(self, container_id, app_exec_line): |
3371 | + self.container_id = container_id |
3372 | + self.app_exec_line = app_exec_line |
3373 | + self.session_bridge = None |
3374 | + |
3375 | + """ |
3376 | + Launches the libertine session bridge. This creates a proxy socket to read to and from |
3377 | + for abstract sockets such as dbus. |
3378 | + |
3379 | + :param session_socket_paths: A list of socket paths the session will create. |
3380 | + """ |
3381 | + def launch_session_bridge(self, session_socket_paths): |
3382 | + session_bridge_arguments = '' |
3383 | + for paths in session_socket_paths: |
3384 | + session_bridge_arguments += paths + ' ' |
3385 | + |
3386 | + libertine_session_bridge_cmd = "libertine-session-bridge " + session_bridge_arguments |
3387 | + |
3388 | + args = shlex.split(libertine_session_bridge_cmd) |
3389 | + self.session_bridge = psutil.Popen(args) |
3390 | + |
3391 | + """ |
3392 | + Launches the container from the id and attempts to run the application exec. |
3393 | + """ |
3394 | + def launch_application(self): |
3395 | + if not ContainersConfig().container_exists(self.container_id): |
3396 | + raise RuntimeError("Container ID %s does not exist." % self.container_id) |
3397 | + |
3398 | + container = LibertineContainer(self.container_id) |
3399 | + |
3400 | + try: |
3401 | + container.launch_application(self.app_exec_line) |
3402 | + except: |
3403 | + raise |
3404 | + finally: |
3405 | + if self.session_bridge is not None: |
3406 | + self.session_bridge.terminate() |
3407 | |
3408 | === modified file 'python/libertine/LxcContainer.py' |
3409 | --- python/libertine/LxcContainer.py 2016-06-29 12:54:58 +0000 |
3410 | +++ python/libertine/LxcContainer.py 2016-07-21 17:26:05 +0000 |
3411 | @@ -41,18 +41,11 @@ |
3412 | return found |
3413 | |
3414 | |
3415 | -def setup_host_environment(username, password): |
3416 | +def setup_host_environment(username): |
3417 | lxc_net_entry = "%s veth lxcbr0 10" % str(username) |
3418 | |
3419 | if not check_lxc_net_entry(lxc_net_entry): |
3420 | - passwd = subprocess.Popen(["sudo", "--stdin", "usermod", "--add-subuids", "100000-165536", |
3421 | - "--add-subgids", "100000-165536", str(username)], |
3422 | - stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, |
3423 | - stderr=subprocess.STDOUT) |
3424 | - passwd.communicate((password + '\n').encode('UTF-8')) |
3425 | - |
3426 | - add_user_cmd = "echo %s | sudo tee -a /etc/lxc/lxc-usernet > /dev/null" % lxc_net_entry |
3427 | - subprocess.Popen(add_user_cmd, shell=True) |
3428 | + subprocess.Popen(["sudo", "libertine-lxc-setup", str(username)]).wait() |
3429 | |
3430 | |
3431 | def get_lxc_default_config_path(): |
3432 | @@ -151,7 +144,7 @@ |
3433 | user_id = os.getuid() |
3434 | group_id = os.getgid() |
3435 | |
3436 | - setup_host_environment(username, password) |
3437 | + setup_host_environment(username) |
3438 | |
3439 | # Generate the default lxc default config, if it doesn't exist |
3440 | config_path = get_lxc_default_config_path() |
3441 | |
3442 | === modified file 'python/libertine/__init__.py' |
3443 | --- python/libertine/__init__.py 2015-11-23 20:04:30 +0000 |
3444 | +++ python/libertine/__init__.py 2016-07-21 17:26:05 +0000 |
3445 | @@ -22,9 +22,10 @@ |
3446 | |
3447 | __all__ = [ |
3448 | # from Libertine |
3449 | - 'LibertineContainer', 'utils' |
3450 | + 'LibertineContainer', 'utils', 'LibertineApplication' |
3451 | ] |
3452 | |
3453 | __docformat__ = "restructuredtext en" |
3454 | |
3455 | from libertine.Libertine import LibertineContainer |
3456 | +from libertine.Libertine import LibertineApplication |
3457 | |
3458 | === modified file 'tests/unit/CMakeLists.txt' |
3459 | --- tests/unit/CMakeLists.txt 2016-06-27 16:41:52 +0000 |
3460 | +++ tests/unit/CMakeLists.txt 2016-07-21 17:26:05 +0000 |
3461 | @@ -44,14 +44,10 @@ |
3462 | ENVIRONMENT |
3463 | "GI_TYPELIB_PATH=${CMAKE_BINARY_DIR}/liblibertine;LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/liblibertine:${LD_LIBRARY_PATH};CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR};PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_SOURCE_DIR}/python;CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}") |
3464 | |
3465 | -set(DISABLED 1) |
3466 | - |
3467 | -if (NOT DISABLED) |
3468 | - add_test(test_libertine_launch |
3469 | - "/usr/bin/python3" "-m" "testtools.run" "libertine_launch_tests" |
3470 | - ) |
3471 | - set_tests_properties(test_libertine_launch |
3472 | - PROPERTIES |
3473 | - ENVIRONMENT |
3474 | - "GI_TYPELIB_PATH=${CMAKE_BINARY_DIR}/liblibertine;LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/liblibertine:${LD_LIBRARY_PATH};CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR};PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_SOURCE_DIR}/python;CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}") |
3475 | -endif() |
3476 | +add_test(test_libertine_launch |
3477 | + "/usr/bin/python3" "-m" "testtools.run" "libertine_launch_tests" |
3478 | +) |
3479 | +set_tests_properties(test_libertine_launch |
3480 | + PROPERTIES |
3481 | + ENVIRONMENT |
3482 | + "GI_TYPELIB_PATH=${CMAKE_BINARY_DIR}/liblibertine;LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/liblibertine:${LD_LIBRARY_PATH};CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR};PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_SOURCE_DIR}/python;CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}") |
3483 | |
3484 | === modified file 'tests/unit/libertine_launch_tests.py' |
3485 | --- tests/unit/libertine_launch_tests.py 2015-12-18 20:31:46 +0000 |
3486 | +++ tests/unit/libertine_launch_tests.py 2016-07-21 17:26:05 +0000 |
3487 | @@ -18,34 +18,32 @@ |
3488 | import subprocess |
3489 | import tempfile |
3490 | |
3491 | +from libertine import LibertineApplication |
3492 | + |
3493 | from testtools import TestCase |
3494 | from testtools.matchers import Equals, NotEquals |
3495 | |
3496 | class TestLibertineLaunch(TestCase): |
3497 | - |
3498 | def setUp(self): |
3499 | super(TestLibertineLaunch, self).setUp() |
3500 | self.cmake_source_dir = os.environ['CMAKE_SOURCE_DIR'] |
3501 | self.cmake_binary_dir = os.environ['CMAKE_BINARY_DIR'] |
3502 | |
3503 | - # Set the paths to the config file |
3504 | container_config_path = os.path.join(self.cmake_binary_dir, 'tests', 'unit', 'libertine-config') |
3505 | - container_config_file = os.path.join(container_config_path, 'libertine', 'ContainersConfig.json') |
3506 | |
3507 | # Set necessary enviroment variables |
3508 | os.environ['XDG_DATA_HOME'] = container_config_path |
3509 | os.environ['XDG_RUNTIME_DIR'] = tempfile.mkdtemp() |
3510 | - os.environ['DISPLAY'] = ':0' |
3511 | os.environ['PATH'] = (self.cmake_source_dir + '/tests/mocks:' + |
3512 | self.cmake_source_dir + '/tools:' + os.environ['PATH']) |
3513 | |
3514 | self.addCleanup(self.cleanup) |
3515 | |
3516 | - # Make a mock container |
3517 | + # Lets figure out how to really mock this.... |
3518 | cli_cmd = self.cmake_source_dir + '/tools/libertine-container-manager create -i test -n Test -t mock' |
3519 | args = shlex.split(cli_cmd) |
3520 | subprocess.Popen(args).wait() |
3521 | - |
3522 | + |
3523 | def cleanup(self): |
3524 | shutil.rmtree(os.environ['XDG_RUNTIME_DIR']) |
3525 | |
3526 | @@ -53,46 +51,26 @@ |
3527 | ''' |
3528 | Base line test to ensure launching an app in an existing container works. |
3529 | ''' |
3530 | - cli_cmd = self.cmake_source_dir + '/tools/libertine-launch test true' |
3531 | - args = shlex.split(cli_cmd) |
3532 | - p = subprocess.Popen(args) |
3533 | - p.wait() |
3534 | - |
3535 | - self.assertThat(p.returncode, Equals(0)) |
3536 | + la = LibertineApplication('test', 'true') |
3537 | + la.launch_application() |
3538 | |
3539 | def test_launch_app_nonexistent_container(self): |
3540 | ''' |
3541 | Test to make sure that things gracefully handle a non-existing container. |
3542 | ''' |
3543 | - cli_cmd = self.cmake_source_dir + '/tools/libertine-launch test1 true' |
3544 | - args = shlex.split(cli_cmd) |
3545 | - p = subprocess.Popen(args) |
3546 | - p.wait() |
3547 | - |
3548 | - # Should fail due to nonexistent container |
3549 | - self.assertThat(p.returncode, Equals(1)) |
3550 | + la = LibertineApplication('test1', 'true') |
3551 | + self.assertRaises(RuntimeError, la.launch_application) |
3552 | |
3553 | def test_launch_good_app(self): |
3554 | ''' |
3555 | Test to make sure that launching an app actually works. |
3556 | ''' |
3557 | - cli_cmd = self.cmake_source_dir + '/tools/libertine-launch test mock_app' |
3558 | - args = shlex.split(cli_cmd) |
3559 | - p = subprocess.Popen(args) |
3560 | - p.wait() |
3561 | - |
3562 | - self.assertThat(p.returncode, Equals(0)) |
3563 | - self.assertThat(os.path.exists(os.path.join(os.environ['XDG_RUNTIME_DIR'], 'mock')), Equals(True)) |
3564 | - |
3565 | - os.remove(os.path.join(os.path.join(os.environ['XDG_RUNTIME_DIR'], 'mock'))) |
3566 | + la = LibertineApplication('test', 'mock_app') |
3567 | + la.launch_application() |
3568 | |
3569 | def test_launch_bad_app(self): |
3570 | ''' |
3571 | Test to make sure launching an app that doesn't exist doesn't break things |
3572 | ''' |
3573 | - cli_cmd = self.cmake_source_dir + '/tools/libertine-launch test foo' |
3574 | - args = shlex.split(cli_cmd) |
3575 | - p = subprocess.Popen(args) |
3576 | - p.wait() |
3577 | - |
3578 | - self.assertThat(p.returncode, Equals(1)) |
3579 | + la = LibertineApplication('test', 'foo') |
3580 | + self.assertRaises(FileNotFoundError, la.launch_application) |
3581 | |
3582 | === modified file 'tools/CMakeLists.txt' |
3583 | --- tools/CMakeLists.txt 2016-06-07 19:49:27 +0000 |
3584 | +++ tools/CMakeLists.txt 2016-07-21 17:26:05 +0000 |
3585 | @@ -1,4 +1,4 @@ |
3586 | -install(PROGRAMS libertine-container-manager libertine-launch libertine-session-bridge libertine-lxc-manager libertine-xmir |
3587 | +install(PROGRAMS libertine-container-manager libertine-launch libertine-session-bridge libertine-lxc-manager libertine-xmir libertine-lxc-setup |
3588 | DESTINATION ${CMAKE_INSTALL_BINDIR}) |
3589 | install(FILES libertine-launch.1 libertine-container-manager.1 libertine-session-bridge.1 libertine-lxc-manager.1 libertine-xmir.1 |
3590 | DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 |
3591 | |
3592 | === modified file 'tools/libertine-container-manager' |
3593 | --- tools/libertine-container-manager 2016-07-06 18:39:53 +0000 |
3594 | +++ tools/libertine-container-manager 2016-07-21 17:26:05 +0000 |
3595 | @@ -74,7 +74,7 @@ |
3596 | if args.password: |
3597 | password = args.password |
3598 | elif sys.stdin.isatty(): |
3599 | - print("Your user password is required for creating a Libertine container.") |
3600 | + print("Enter password for your user in the Libertine container or leave blank for no password:") |
3601 | password = getpass.getpass() |
3602 | else: |
3603 | password = sys.stdin.readline().rstrip() |
3604 | @@ -206,10 +206,14 @@ |
3605 | if not container.exec_command(args.command): |
3606 | sys.exit(1) |
3607 | |
3608 | - def delete_archive_by_name(self, container_id, archive_name): |
3609 | + def delete_archive_by_name(self, container_id, archive_name, verbosity=1): |
3610 | self.containers_config.update_archive_install_status(container_id, archive_name, 'removing') |
3611 | - if LibertineContainer(container_id).configure_command('delete-archive', archive_name) is not 0: |
3612 | - return False |
3613 | + if self.containers_config.get_archive_install_status(container_id, archive_name) == 'installed': |
3614 | + self.containers_config.update_archive_install_status(container_id, archive_name, 'removing') |
3615 | + if LibertineContainer(container_id).configure_remove_archive("\"" + archive_name + "\"", verbosity) is not 0: |
3616 | + self.containers_config.update_archive_install_status(container_id, archive_name, 'installed') |
3617 | + return False |
3618 | + |
3619 | self.containers_config.delete_container_archive(container_id, archive_name) |
3620 | return True |
3621 | |
3622 | @@ -228,31 +232,41 @@ |
3623 | print("i386 multiarch support is already %s" % multiarch) |
3624 | sys.exit(1) |
3625 | |
3626 | - if container.configure_command('multiarch', args.multiarch) is not 0: |
3627 | + if container.configure_multiarch(args.multiarch, args.verbosity) is not 0: |
3628 | sys.exit(1) |
3629 | |
3630 | self.containers_config.update_container_multiarch_support(container_id, multiarch) |
3631 | |
3632 | - elif args.add_archive: |
3633 | - if self.containers_config.archive_exists(container_id, args.add_archive): |
3634 | - print("%s already added in container." % args.add_archive) |
3635 | - sys.exit(1) |
3636 | - |
3637 | - self.containers_config.add_container_archive(container_id, args.add_archive) |
3638 | - self.containers_config.update_archive_install_status(container_id, args.add_archive, 'installing') |
3639 | - if container.configure_command('add-archive', args.add_archive) is not 0: |
3640 | - self.containers_config.delete_container_archive(container_id, args.add_archive) |
3641 | - sys.exit(1) |
3642 | - |
3643 | - self.containers_config.update_archive_install_status(container_id, args.add_archive, 'installed') |
3644 | - |
3645 | - elif args.delete_archive: |
3646 | - if not self.containers_config.archive_exists(container_id, args.delete_archive): |
3647 | - print("%s is not added in container." % args.delete_archive) |
3648 | - sys.exit(1) |
3649 | - |
3650 | - if not self.delete_archive_by_name(container_id, args.delete_archive): |
3651 | - sys.exit(1) |
3652 | + elif args.archive is not None: |
3653 | + archive_name = args.archive_name.strip("\'\"") |
3654 | + archive_name_esc = "\"" + archive_name + "\"" |
3655 | + |
3656 | + if args.archive == 'add': |
3657 | + if self.containers_config.archive_exists(container_id, archive_name): |
3658 | + print("%s already added in container." % archive_name) |
3659 | + sys.exit(1) |
3660 | + |
3661 | + self.containers_config.add_container_archive(container_id, archive_name) |
3662 | + self.containers_config.update_archive_install_status(container_id, archive_name, 'installing') |
3663 | + if container.configure_add_archive(archive_name_esc, args.public_key_file, args.verbosity) is not 0: |
3664 | + self.containers_config.delete_container_archive(container_id, archive_name) |
3665 | + sys.exit(1) |
3666 | + |
3667 | + self.containers_config.update_archive_install_status(container_id, archive_name, 'installed') |
3668 | + |
3669 | + elif args.archive == 'remove': |
3670 | + if not self.containers_config.archive_exists(container_id, archive_name): |
3671 | + print("%s is not added in container." % archive_name) |
3672 | + sys.exit(1) |
3673 | + |
3674 | + if not self.delete_archive_by_name(container_id, archive_name): |
3675 | + print("%s was not properly deleted." % archive_name) |
3676 | + sys.exit(1) |
3677 | + |
3678 | + else: |
3679 | + print("Configure called with no subcommand. See configure --help for usage.") |
3680 | + sys.exit(1) |
3681 | + |
3682 | |
3683 | def merge(self, args): |
3684 | self.containers_config.merge_container_config_files(args.file) |
3685 | @@ -435,22 +449,31 @@ |
3686 | parser_configure.add_argument( |
3687 | '-i', '--id', |
3688 | help=("Container identifier. Default container is used if omitted.")) |
3689 | - parser_configure.add_argument( |
3690 | - '-m', '--multiarch', |
3691 | - choices=['enable', 'disable'], |
3692 | - help=("Enables or disables i386 multiarch support for amd64 Libertine " |
3693 | - "containers. This option has no effect when the Libertine " |
3694 | - "container is i386.")) |
3695 | - parser_configure.add_argument( |
3696 | - '-a', '--add-archive', |
3697 | - metavar='Archive name', |
3698 | - help=("Adds an archive (PPA) in the specified Libertine container. Needs to be " |
3699 | - "in the form of \"ppa:user/ppa-name\".")) |
3700 | - parser_configure.add_argument( |
3701 | - '-d', '--delete-archive', |
3702 | - metavar='Archive name', |
3703 | - help=("Deletes an existing archive (PPA) in the specified Libertine container. " |
3704 | - "Needs to be in the form of \"ppa:user/ppa-name\".")) |
3705 | + multiarch_group = parser_configure.add_argument_group("Multiarch support", |
3706 | + "Enable or disable multiarch support for a container.") |
3707 | + multiarch_group.add_argument( |
3708 | + '-m', '--multiarch', |
3709 | + choices=['enable', 'disable'], |
3710 | + help=("Enables or disables i386 multiarch support for amd64 Libertine " |
3711 | + "containers. This option has no effect when the Libertine " |
3712 | + "container is i386.")) |
3713 | + |
3714 | + archive_group = parser_configure.add_argument_group("Additional archive support", |
3715 | + "Add or delete an additional archive (PPA).") |
3716 | + archive_group.add_argument( |
3717 | + '-a', '--archive', |
3718 | + choices=['add', 'remove'], |
3719 | + help=("Adds or removes an archive (PPA) in the specified Libertine container.")) |
3720 | + archive_group.add_argument( |
3721 | + '-n', '--archive-name', |
3722 | + metavar='Archive name', |
3723 | + help=("Archive name to be added or removed.")) |
3724 | + archive_group.add_argument( |
3725 | + '-k', '--public-key-file', |
3726 | + metavar='Public key file', |
3727 | + help=("File containing the key used to sign the given archive. " |
3728 | + "Useful for third-party or private archives.")) |
3729 | + |
3730 | parser_configure.set_defaults(func=container_manager.configure) |
3731 | |
3732 | # Handle merging another ContainersConfig.json file into the main ContainersConfig.json file |
3733 | |
3734 | === modified file 'tools/libertine-container-manager.1' |
3735 | --- tools/libertine-container-manager.1 2016-06-07 14:00:34 +0000 |
3736 | +++ tools/libertine-container-manager.1 2016-07-21 17:26:05 +0000 |
3737 | @@ -265,14 +265,19 @@ |
3738 | Enable i386 support. |
3739 | .RE |
3740 | .IP |
3741 | -.BR \-a " ARCHIVE_NAME, " \-\-add-archive " ARCHIVE_NAME" "" |
3742 | -.RS 14 |
3743 | -Adds an archive to the specified container. Format like "ppa:user/ppa-name". |
3744 | -.RE |
3745 | -.IP |
3746 | -.BR \-d " ARCHIVE_NAME, " \-\-delete-archive " ARCHIVE_NAME" "" |
3747 | -.RS 14 |
3748 | -Deletes an archive to the specified container. Format like "ppa:user/ppa-name". |
3749 | +.BR \-a " {add,remove}, " \-\-archive "{add,remove}" "" |
3750 | +.RS 14 |
3751 | +Adds or removes an archive in the specified container. |
3752 | +.RE |
3753 | +.IP |
3754 | +.BR \-n " ARCHIVE_NAME, " \-\-archive-name " ARCHIVE_NAME" "" |
3755 | +.RS 14 |
3756 | +Archive to be added or removed. Examples: 'deb http://myserver/path/to/repo stable myrepo', ppa:user/repository, multiverse |
3757 | +.RE |
3758 | +.IP |
3759 | +.BR \-k " PUBLIC_KEY_FILE, " \-\-public-key-file " PUBLIC_KEY_FILE" "" |
3760 | +.RS 14 |
3761 | +File containing public key used to sign new archive. |
3762 | .RE |
3763 | .TP |
3764 | |
3765 | |
3766 | === modified file 'tools/libertine-launch' |
3767 | --- tools/libertine-launch 2016-06-28 20:16:55 +0000 |
3768 | +++ tools/libertine-launch 2016-07-21 17:26:05 +0000 |
3769 | @@ -21,11 +21,9 @@ |
3770 | import random |
3771 | import string |
3772 | import libertine.utils |
3773 | -import psutil |
3774 | import shlex |
3775 | import time |
3776 | - |
3777 | -from libertine import LibertineContainer |
3778 | +from libertine import LibertineApplication |
3779 | |
3780 | |
3781 | def get_session_socket_path(session_socket_name): |
3782 | @@ -60,13 +58,6 @@ |
3783 | set_env_socket_path(socket_path, 'MALIIT_SERVER_ADDRESS') |
3784 | |
3785 | |
3786 | -def launch_libertine_session_bridge(session_socket_path): |
3787 | - libertine_session_bridge_cmd = "libertine-session-bridge " + session_socket_path |
3788 | - |
3789 | - args = shlex.split(libertine_session_bridge_cmd) |
3790 | - return psutil.Popen(args) |
3791 | - |
3792 | - |
3793 | def detect_session_bridge_socket(session_socket_path): |
3794 | retries = 0 |
3795 | |
3796 | @@ -87,6 +78,8 @@ |
3797 | help='exec line') |
3798 | args = arg_parser.parse_args() |
3799 | |
3800 | + la = LibertineApplication(args.container_id, args.app_exec_line) |
3801 | + |
3802 | # remove problematic environment variables |
3803 | for e in ['QT_QPA_PLATFORM', 'LD_LIBRARY_PATH', 'FAKECHROOT_BASE', 'FAKECHROOT_CMD_SUBST']: |
3804 | if e in os.environ: |
3805 | @@ -94,9 +87,8 @@ |
3806 | |
3807 | dbus_socket_path = get_dbus_session_socket_path() |
3808 | maliit_socket_path = get_maliit_session_socket_path() |
3809 | - session_bridge_arguments = dbus_socket_path + ' ' + maliit_socket_path |
3810 | |
3811 | - session_bridge = launch_libertine_session_bridge(session_bridge_arguments) |
3812 | + la.launch_session_bridge([dbus_socket_path, maliit_socket_path]) |
3813 | |
3814 | set_dbus_env_socket_path(dbus_socket_path) |
3815 | set_maliit_env_socket_path(maliit_socket_path) |
3816 | @@ -104,11 +96,4 @@ |
3817 | # should detect the maliit socket, but dont know if its around or not here. |
3818 | detect_session_bridge_socket(dbus_socket_path) |
3819 | |
3820 | - container = LibertineContainer(args.container_id) |
3821 | - |
3822 | - try: |
3823 | - container.launch_application(args.app_exec_line) |
3824 | - except: |
3825 | - raise |
3826 | - finally: |
3827 | - session_bridge.terminate() |
3828 | + la.launch_application() |
3829 | |
3830 | === added file 'tools/libertine-lxc-setup' |
3831 | --- tools/libertine-lxc-setup 1970-01-01 00:00:00 +0000 |
3832 | +++ tools/libertine-lxc-setup 2016-07-21 17:26:05 +0000 |
3833 | @@ -0,0 +1,9 @@ |
3834 | +#!/bin/sh |
3835 | + |
3836 | +USERNAME=$1 |
3837 | + |
3838 | +LXC_USERNET_ENTRY="$USERNAME veth lxcbr0 10" |
3839 | + |
3840 | +usermod --add-subuids 100000-165536 --add-subgids 100000-165536 $USERNAME |
3841 | + |
3842 | +echo $LXC_USERNET_ENTRY | tee -a /etc/lxc/lxc-usernet > /dev/null |
3843 | |
3844 | === modified file 'tools/libertine-session-bridge' |
3845 | --- tools/libertine-session-bridge 2016-06-27 15:59:41 +0000 |
3846 | +++ tools/libertine-session-bridge 2016-07-21 17:26:05 +0000 |
3847 | @@ -123,7 +123,12 @@ |
3848 | accept_new_connection(host_session_socket_path_map[sock], sock) |
3849 | |
3850 | else: |
3851 | - data = sock.recv(4096) |
3852 | + try: |
3853 | + data = sock.recv(4096) |
3854 | + except: |
3855 | + close_connections(sock) |
3856 | + continue |
3857 | + |
3858 | if len(data) == 0: |
3859 | close_connections(sock) |
3860 | continue |
3861 | |
3862 | === modified file 'tools/update-puritine-containers' |
3863 | --- tools/update-puritine-containers 2016-06-10 20:34:33 +0000 |
3864 | +++ tools/update-puritine-containers 2016-07-21 17:26:05 +0000 |
3865 | @@ -23,10 +23,20 @@ |
3866 | import shutil |
3867 | import subprocess |
3868 | |
3869 | +from gi.repository import GLib, Gio |
3870 | + |
3871 | puritine_hook_dir = os.path.join(os.environ['HOME'], '.cache', 'libertine', 'puritine') |
3872 | puritine_symlink_farm_file = os.path.join(puritine_hook_dir, 'PuritineSymlinkFarm.json') |
3873 | puritine_click_config_file = os.path.join('libertine-config', 'libertine', 'ContainersConfig.json') |
3874 | |
3875 | +def symlink_farm_entries_count(): |
3876 | + if (puritine_symlink_farm_list and |
3877 | + puritine_symlink_farm_list['customContainers']): |
3878 | + return len(puritine_symlink_farm_list['customContainers']) |
3879 | + |
3880 | + return 0 |
3881 | + |
3882 | + |
3883 | def puritine_symlink_exists(symlink): |
3884 | for file in os.listdir(puritine_hook_dir): |
3885 | if file == symlink: |
3886 | @@ -117,21 +127,59 @@ |
3887 | return puritine_symlink_farm_list |
3888 | |
3889 | |
3890 | -puritine_symlink_farm_list = {} |
3891 | - |
3892 | -if not os.path.exists(puritine_hook_dir): |
3893 | - os.makedirs(puritine_hook_dir) |
3894 | - |
3895 | -if (os.path.exists(puritine_symlink_farm_file) and |
3896 | - os.path.getsize(puritine_symlink_farm_file) != 0): |
3897 | - with open(puritine_symlink_farm_file, 'r') as fd: |
3898 | - puritine_symlink_farm_list = json.load(fd) |
3899 | - |
3900 | -puritine_symlink_farm_list = find_new_or_updated_puritine_symlinks(puritine_symlink_farm_list) |
3901 | - |
3902 | -if puritine_symlink_farm_list: |
3903 | - puritine_symlink_farm_list = find_removed_puritine_symlinks(puritine_symlink_farm_list) |
3904 | - |
3905 | -with open(puritine_symlink_farm_file, 'w') as fd: |
3906 | - json.dump(puritine_symlink_farm_list, fd, sort_keys=True, indent=4) |
3907 | - fd.write('\n') |
3908 | +def favorite_libertine_scope(): |
3909 | + libertine_scope_value = 'scope://libertine-scope.ubuntu_libertine-scope' |
3910 | + click_scope_value = 'scope://clickscope' |
3911 | + schema = 'com.canonical.Unity.Dash' |
3912 | + schema_key = 'favorite-scopes' |
3913 | + |
3914 | + settings = Gio.Settings.new(schema) |
3915 | + |
3916 | + favorites = settings.get_value(schema_key) |
3917 | + |
3918 | + array = favorites.dup_strv() |
3919 | + |
3920 | + if not libertine_scope_value in array: |
3921 | + array.insert(array.index(click_scope_value) + 1, libertine_scope_value) |
3922 | + new_favorites = GLib.Variant.new_strv(array) |
3923 | + settings.set_value(schema_key, new_favorites) |
3924 | + del new_favorites |
3925 | + |
3926 | + del array |
3927 | + del favorites |
3928 | + del settings |
3929 | + |
3930 | + |
3931 | +if __name__ == '__main__': |
3932 | + puritine_symlink_farm_list = {} |
3933 | + |
3934 | + with open(os.path.join('/', 'run', 'user', str(os.getuid()), 'dbus-session'), 'r') as fd: |
3935 | + dbus_session_str = fd.read() |
3936 | + |
3937 | + os.environ['DBUS_SESSION_BUS_ADDRESS'] = dbus_session_str.partition('DBUS_SESSION_BUS_ADDRESS=')[2].rstrip('\n') |
3938 | + |
3939 | + if not os.path.exists(puritine_hook_dir): |
3940 | + os.makedirs(puritine_hook_dir) |
3941 | + |
3942 | + if (os.path.exists(puritine_symlink_farm_file) and |
3943 | + os.path.getsize(puritine_symlink_farm_file) != 0): |
3944 | + with open(puritine_symlink_farm_file, 'r') as fd: |
3945 | + puritine_symlink_farm_list = json.load(fd) |
3946 | + |
3947 | + count_at_start = symlink_farm_entries_count() |
3948 | + |
3949 | + puritine_symlink_farm_list = find_new_or_updated_puritine_symlinks(puritine_symlink_farm_list) |
3950 | + |
3951 | + if puritine_symlink_farm_list: |
3952 | + puritine_symlink_farm_list = find_removed_puritine_symlinks(puritine_symlink_farm_list) |
3953 | + |
3954 | + count_at_finish = symlink_farm_entries_count() |
3955 | + |
3956 | + with open(puritine_symlink_farm_file, 'w') as fd: |
3957 | + json.dump(puritine_symlink_farm_list, fd, sort_keys=True, indent=4) |
3958 | + fd.write('\n') |
3959 | + |
3960 | + if count_at_start == 0 and count_at_finish > 0: |
3961 | + favorite_libertine_scope() |
3962 | + |
3963 | + libertine.utils.refresh_libertine_scope() |
lgtm