Merge lp:~nataliabidart/ubuntuone-windows-installer/stable-3-0-update-2.99.92 into lp:ubuntuone-windows-installer/stable-3-0

Proposed by Natalia Bidart
Status: Merged
Approved by: dobey
Approved revision: 105
Merged at revision: 104
Proposed branch: lp:~nataliabidart/ubuntuone-windows-installer/stable-3-0-update-2.99.92
Merge into: lp:ubuntuone-windows-installer/stable-3-0
Diff against target: 9683 lines (+53/-9095)
63 files modified
.bzrignore (+0/-9)
bin/ubuntuone-installer-qt (+0/-51)
data/qt/are_you_sure.ui (+0/-156)
data/qt/choose_sign_in.ui (+0/-171)
data/qt/congratulations.ui (+0/-138)
data/qt/folders.ui (+0/-61)
data/qt/images.qrc (+0/-20)
data/qt/license.ui (+0/-34)
data/qt/local_folders.ui (+0/-172)
data/qt/network_detection.ui (+0/-150)
data/qt/preferences.ui (+0/-24)
data/qt/setup_account.ui (+0/-670)
data/qt/side_widget.ui (+0/-235)
data/qt/sign_in.ui (+0/-75)
data/qt/ubuntuone.qss (+0/-179)
pylintrc (+0/-305)
run-tests (+0/-44)
run-tests.bat (+0/-125)
scripts/README (+3/-2)
scripts/conf.py (+11/-8)
scripts/setup.py (+30/-21)
scripts/ubuntuone.xml (+8/-7)
scripts/ubuntuone_autoupdate.xml (+1/-1)
setup.py (+0/-249)
ubuntuone_installer/__init__.py (+0/-27)
ubuntuone_installer/gui/__init__.py (+0/-35)
ubuntuone_installer/gui/qt/__init__.py (+0/-36)
ubuntuone_installer/gui/qt/are_you_sure.py (+0/-47)
ubuntuone_installer/gui/qt/currentuser.py (+0/-55)
ubuntuone_installer/gui/qt/enhanced_check_box.py (+0/-50)
ubuntuone_installer/gui/qt/folders.py (+0/-71)
ubuntuone_installer/gui/qt/forgotten.py (+0/-33)
ubuntuone_installer/gui/qt/gui.py (+0/-604)
ubuntuone_installer/gui/qt/local_folders.py (+0/-310)
ubuntuone_installer/gui/qt/main/__init__.py (+0/-60)
ubuntuone_installer/gui/qt/main/linux.py (+0/-30)
ubuntuone_installer/gui/qt/main/windows.py (+0/-33)
ubuntuone_installer/gui/qt/network_detection.py (+0/-76)
ubuntuone_installer/gui/qt/preferences.py (+0/-98)
ubuntuone_installer/gui/qt/setup_account.py (+0/-226)
ubuntuone_installer/gui/qt/side_widget.py (+0/-69)
ubuntuone_installer/gui/qt/sync_now_or_later.py (+0/-83)
ubuntuone_installer/gui/qt/tests/__init__.py (+0/-277)
ubuntuone_installer/gui/qt/tests/test_are_you_sure.py (+0/-47)
ubuntuone_installer/gui/qt/tests/test_currentuser.py (+0/-93)
ubuntuone_installer/gui/qt/tests/test_enhanced_check_box.py (+0/-49)
ubuntuone_installer/gui/qt/tests/test_gui.py (+0/-1006)
ubuntuone_installer/gui/qt/tests/test_local_folders.py (+0/-622)
ubuntuone_installer/gui/qt/tests/test_network_detection.py (+0/-95)
ubuntuone_installer/gui/qt/tests/test_setup_account.py (+0/-334)
ubuntuone_installer/gui/qt/tests/test_side_widget.py (+0/-114)
ubuntuone_installer/gui/qt/tests/test_sync_now_or_later.py (+0/-100)
ubuntuone_installer/gui/qt/ui/__init__.py (+0/-19)
ubuntuone_installer/gui/qt/utils/__init__.py (+0/-88)
ubuntuone_installer/gui/qt/utils/linux.py (+0/-50)
ubuntuone_installer/gui/qt/utils/tests/__init__.py (+0/-19)
ubuntuone_installer/gui/qt/utils/tests/test_common.py (+0/-121)
ubuntuone_installer/gui/qt/utils/tests/test_linux.py (+0/-74)
ubuntuone_installer/gui/qt/utils/tests/test_windows.py (+0/-633)
ubuntuone_installer/gui/qt/utils/windows.py (+0/-332)
ubuntuone_installer/gui/tests/__init__.py (+0/-45)
ubuntuone_installer/logger.py (+0/-83)
ubuntuone_installer/tests/__init__.py (+0/-44)
To merge this branch: bzr merge lp:~nataliabidart/ubuntuone-windows-installer/stable-3-0-update-2.99.92
Reviewer Review Type Date Requested Status
dobey (community) Approve
Review via email: mp+101045@code.launchpad.net

Commit message

- Updating from trunk up to revno 110:

[ Natalia B. Bidart <email address hidden> ]
  - Adding missing setup.py.
  - Removing all the deprecated and unused code, since it was either replaced
    or moved to another project.

[ Brian Curtin <email address hidden> ]
  - Added --with-icon to all installer commands and shortcuts to ensure
    Ubuntu One resides in the system tray on Windows.
  - Cleanup windows build, get rid of windows-installer,
    build all required binaries.

To post a comment you must log in.
Revision history for this message
dobey (dobey) wrote :

+ version='3.1',

Wrong version.

review: Needs Fixing
Revision history for this message
Natalia Bidart (nataliabidart) wrote :

> + version='3.1',
>
> Wrong version.

Fixed!

105. By Natalia Bidart

Restoring stable-3-0 version.

Revision history for this message
dobey (dobey) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed file '.bzrignore'
2--- .bzrignore 2011-06-21 16:17:47 +0000
3+++ .bzrignore 1970-01-01 00:00:00 +0000
4@@ -1,9 +0,0 @@
5-_trial_temp
6-*.service
7-MANIFEST
8-build/
9-dist/
10-po/ubuntuone-installer.pot
11-ubuntuone_installer/gui/qt/ui/*_ui.py
12-ubuntuone_installer/gui/qt/ui/*_rc.py
13-qtreactor/
14
15=== removed directory 'bin'
16=== removed file 'bin/ubuntuone-installer-qt'
17--- bin/ubuntuone-installer-qt 2011-09-14 14:12:02 +0000
18+++ bin/ubuntuone-installer-qt 1970-01-01 00:00:00 +0000
19@@ -1,51 +0,0 @@
20-#!/usr/bin/python
21-# -*- coding: utf-8 -*-
22-
23-# Authors: Natalia B Bidart <natalia.bidart@canonical.com>
24-# Eric Casteleijn <eric.casteleijn@canonical.com>
25-# Roberto Alsina <roberto.alsina@canonical.com>
26-#
27-# Copyright 2010 Canonical Ltd.
28-#
29-# This program is free software: you can redistribute it and/or modify it
30-# under the terms of the GNU General Public License version 3, as published
31-# by the Free Software Foundation.
32-#
33-# This program is distributed in the hope that it will be useful, but
34-# WITHOUT ANY WARRANTY; without even the implied warranties of
35-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
36-# PURPOSE. See the GNU General Public License for more details.
37-#
38-# You should have received a copy of the GNU General Public License along
39-# with this program. If not, see <http://www.gnu.org/licenses/>.
40-"""Execute the graphical interface for the Ubuntu One installer."""
41-
42-# Invalid name "ubuntuone-installer-qt", pylint: disable=C0103
43-
44-import gettext
45-import sys
46-
47-from optparse import OptionParser
48-
49-from ubuntuone_installer import TRANSLATION_DOMAIN
50-
51-gettext.textdomain(TRANSLATION_DOMAIN)
52-# import the GUI after the translation domain has been set
53-from ubuntuone_installer.gui.qt import main
54-
55-
56-def parser_options():
57- """Parse command line parameters."""
58- usage = "Usage: %prog [option]"
59- result = OptionParser(usage=usage)
60- result.add_option("-i", "--installer", dest="installer",
61- action="store_true",
62- default=False, help="To be used by the installer: "
63- "Show license page, offer uninstall on cancel.")
64- return result
65-
66-
67-if __name__ == "__main__":
68- parser = parser_options()
69- (options, args) = parser.parse_args(sys.argv)
70- main.main(installing=options.installer)
71
72=== removed directory 'data'
73=== removed file 'data/Ubuntu-B.ttf'
74Binary files data/Ubuntu-B.ttf 2011-07-27 14:53:56 +0000 and data/Ubuntu-B.ttf 1970-01-01 00:00:00 +0000 differ
75=== removed file 'data/Ubuntu-R.ttf'
76Binary files data/Ubuntu-R.ttf 2011-07-12 03:24:48 +0000 and data/Ubuntu-R.ttf 1970-01-01 00:00:00 +0000 differ
77=== removed file 'data/balloon_shape.png'
78Binary files data/balloon_shape.png 2011-07-13 03:14:18 +0000 and data/balloon_shape.png 1970-01-01 00:00:00 +0000 differ
79=== removed file 'data/folder.png'
80Binary files data/folder.png 2011-08-08 21:48:11 +0000 and data/folder.png 1970-01-01 00:00:00 +0000 differ
81=== removed file 'data/password_hint_ok.png'
82Binary files data/password_hint_ok.png 2011-07-13 03:14:18 +0000 and data/password_hint_ok.png 1970-01-01 00:00:00 +0000 differ
83=== removed file 'data/password_hint_warning.png'
84Binary files data/password_hint_warning.png 2011-07-13 03:14:18 +0000 and data/password_hint_warning.png 1970-01-01 00:00:00 +0000 differ
85=== removed file 'data/progress_arrow_grey.png'
86Binary files data/progress_arrow_grey.png 2011-07-12 03:24:48 +0000 and data/progress_arrow_grey.png 1970-01-01 00:00:00 +0000 differ
87=== removed file 'data/progress_arrow_orange.png'
88Binary files data/progress_arrow_orange.png 2011-07-12 03:24:48 +0000 and data/progress_arrow_orange.png 1970-01-01 00:00:00 +0000 differ
89=== removed file 'data/progress_finish_grey.png'
90Binary files data/progress_finish_grey.png 2011-07-12 03:24:48 +0000 and data/progress_finish_grey.png 1970-01-01 00:00:00 +0000 differ
91=== removed file 'data/progress_finish_orange.png'
92Binary files data/progress_finish_orange.png 2011-07-12 03:24:48 +0000 and data/progress_finish_orange.png 1970-01-01 00:00:00 +0000 differ
93=== removed file 'data/progress_tick.png'
94Binary files data/progress_tick.png 2011-07-12 03:24:48 +0000 and data/progress_tick.png 1970-01-01 00:00:00 +0000 differ
95=== removed directory 'data/qt'
96=== removed file 'data/qt/are_you_sure.ui'
97--- data/qt/are_you_sure.ui 2011-09-05 17:53:44 +0000
98+++ data/qt/are_you_sure.ui 1970-01-01 00:00:00 +0000
99@@ -1,156 +0,0 @@
100-<?xml version="1.0" encoding="UTF-8"?>
101-<ui version="4.0">
102- <class>Dialog</class>
103- <widget class="QDialog" name="Dialog">
104- <property name="geometry">
105- <rect>
106- <x>0</x>
107- <y>0</y>
108- <width>386</width>
109- <height>196</height>
110- </rect>
111- </property>
112- <property name="windowTitle">
113- <string>Dialog</string>
114- </property>
115- <layout class="QVBoxLayout" name="verticalLayout">
116- <item>
117- <widget class="QLabel" name="label">
118- <property name="text">
119- <string>Are you sure you want to cancel setting up Ubuntu One?</string>
120- </property>
121- <property name="textFormat">
122- <enum>Qt::PlainText</enum>
123- </property>
124- </widget>
125- </item>
126- <item>
127- <widget class="QLabel" name="message_label">
128- <property name="text">
129- <string>PLACEHOLDER TEXT</string>
130- </property>
131- <property name="textFormat">
132- <enum>Qt::AutoText</enum>
133- </property>
134- <property name="wordWrap">
135- <bool>true</bool>
136- </property>
137- <property name="openExternalLinks">
138- <bool>true</bool>
139- </property>
140- </widget>
141- </item>
142- <item>
143- <spacer name="verticalSpacer">
144- <property name="orientation">
145- <enum>Qt::Vertical</enum>
146- </property>
147- <property name="sizeHint" stdset="0">
148- <size>
149- <width>20</width>
150- <height>40</height>
151- </size>
152- </property>
153- </spacer>
154- </item>
155- <item>
156- <layout class="QHBoxLayout" name="horizontalLayout">
157- <item>
158- <spacer name="horizontalSpacer">
159- <property name="orientation">
160- <enum>Qt::Horizontal</enum>
161- </property>
162- <property name="sizeHint" stdset="0">
163- <size>
164- <width>40</width>
165- <height>20</height>
166- </size>
167- </property>
168- </spacer>
169- </item>
170- <item>
171- <widget class="QPushButton" name="pushButton">
172- <property name="text">
173- <string>Yes, I want to cancel</string>
174- </property>
175- <property name="autoDefault">
176- <bool>false</bool>
177- </property>
178- </widget>
179- </item>
180- <item>
181- <spacer name="horizontalSpacer_2">
182- <property name="orientation">
183- <enum>Qt::Horizontal</enum>
184- </property>
185- <property name="sizeHint" stdset="0">
186- <size>
187- <width>40</width>
188- <height>20</height>
189- </size>
190- </property>
191- </spacer>
192- </item>
193- <item>
194- <widget class="QPushButton" name="pushButton_2">
195- <property name="text">
196- <string>No, continue setting up</string>
197- </property>
198- <property name="default">
199- <bool>true</bool>
200- </property>
201- </widget>
202- </item>
203- <item>
204- <spacer name="horizontalSpacer_3">
205- <property name="orientation">
206- <enum>Qt::Horizontal</enum>
207- </property>
208- <property name="sizeHint" stdset="0">
209- <size>
210- <width>40</width>
211- <height>20</height>
212- </size>
213- </property>
214- </spacer>
215- </item>
216- </layout>
217- </item>
218- </layout>
219- </widget>
220- <resources/>
221- <connections>
222- <connection>
223- <sender>pushButton_2</sender>
224- <signal>clicked()</signal>
225- <receiver>Dialog</receiver>
226- <slot>reject()</slot>
227- <hints>
228- <hint type="sourcelabel">
229- <x>272</x>
230- <y>174</y>
231- </hint>
232- <hint type="destinationlabel">
233- <x>330</x>
234- <y>129</y>
235- </hint>
236- </hints>
237- </connection>
238- <connection>
239- <sender>pushButton</sender>
240- <signal>clicked()</signal>
241- <receiver>Dialog</receiver>
242- <slot>accept()</slot>
243- <hints>
244- <hint type="sourcelabel">
245- <x>118</x>
246- <y>167</y>
247- </hint>
248- <hint type="destinationlabel">
249- <x>163</x>
250- <y>122</y>
251- </hint>
252- </hints>
253- </connection>
254- </connections>
255-</ui>
256
257=== removed file 'data/qt/choose_sign_in.ui'
258--- data/qt/choose_sign_in.ui 2011-09-02 12:58:29 +0000
259+++ data/qt/choose_sign_in.ui 1970-01-01 00:00:00 +0000
260@@ -1,171 +0,0 @@
261-<?xml version="1.0" encoding="UTF-8"?>
262-<ui version="4.0">
263- <class>ChooseSignInPage</class>
264- <widget class="QWizardPage" name="ChooseSignInPage">
265- <property name="geometry">
266- <rect>
267- <x>0</x>
268- <y>0</y>
269- <width>432</width>
270- <height>387</height>
271- </rect>
272- </property>
273- <property name="windowTitle">
274- <string>WizardPage</string>
275- </property>
276- <layout class="QVBoxLayout" name="verticalLayout_2">
277- <property name="leftMargin">
278- <number>0</number>
279- </property>
280- <property name="topMargin">
281- <number>0</number>
282- </property>
283- <property name="rightMargin">
284- <number>0</number>
285- </property>
286- <item>
287- <layout class="QHBoxLayout" name="horizontalLayout_2">
288- <item>
289- <widget class="QLabel" name="image_label">
290- <property name="sizePolicy">
291- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
292- <horstretch>0</horstretch>
293- <verstretch>0</verstretch>
294- </sizepolicy>
295- </property>
296- <property name="minimumSize">
297- <size>
298- <width>400</width>
299- <height>150</height>
300- </size>
301- </property>
302- <property name="text">
303- <string/>
304- </property>
305- <property name="textFormat">
306- <enum>Qt::PlainText</enum>
307- </property>
308- <property name="pixmap">
309- <pixmap resource="images.qrc">:/win_installer_graphic.png</pixmap>
310- </property>
311- <property name="alignment">
312- <set>Qt::AlignCenter</set>
313- </property>
314- <property name="wordWrap">
315- <bool>true</bool>
316- </property>
317- </widget>
318- </item>
319- </layout>
320- </item>
321- <item>
322- <widget class="QLabel" name="message_label">
323- <property name="font">
324- <font>
325- <pointsize>11</pointsize>
326- <weight>50</weight>
327- <bold>false</bold>
328- </font>
329- </property>
330- <property name="text">
331- <string>Congratulations, Ubuntu One is installed!</string>
332- </property>
333- <property name="alignment">
334- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
335- </property>
336- </widget>
337- </item>
338- <item>
339- <spacer name="verticalSpacer_3">
340- <property name="orientation">
341- <enum>Qt::Vertical</enum>
342- </property>
343- <property name="sizeType">
344- <enum>QSizePolicy::Fixed</enum>
345- </property>
346- <property name="sizeHint" stdset="0">
347- <size>
348- <width>20</width>
349- <height>30</height>
350- </size>
351- </property>
352- </spacer>
353- </item>
354- <item>
355- <layout class="QHBoxLayout" name="horizontalLayout">
356- <item>
357- <spacer name="horizontalSpacer_2">
358- <property name="orientation">
359- <enum>Qt::Horizontal</enum>
360- </property>
361- <property name="sizeHint" stdset="0">
362- <size>
363- <width>20</width>
364- <height>20</height>
365- </size>
366- </property>
367- </spacer>
368- </item>
369- <item>
370- <layout class="QVBoxLayout" name="verticalLayout">
371- <item>
372- <widget class="QPushButton" name="existing_account_button">
373- <property name="text">
374- <string/>
375- </property>
376- </widget>
377- </item>
378- <item>
379- <widget class="QPushButton" name="setup_account_button">
380- <property name="text">
381- <string/>
382- </property>
383- </widget>
384- </item>
385- <item>
386- <widget class="QPushButton" name="cancel_button">
387- <property name="text">
388- <string/>
389- </property>
390- </widget>
391- </item>
392- </layout>
393- </item>
394- <item>
395- <spacer name="horizontalSpacer">
396- <property name="orientation">
397- <enum>Qt::Horizontal</enum>
398- </property>
399- <property name="sizeType">
400- <enum>QSizePolicy::Expanding</enum>
401- </property>
402- <property name="sizeHint" stdset="0">
403- <size>
404- <width>20</width>
405- <height>20</height>
406- </size>
407- </property>
408- </spacer>
409- </item>
410- </layout>
411- </item>
412- <item>
413- <spacer name="verticalSpacer_2">
414- <property name="orientation">
415- <enum>Qt::Vertical</enum>
416- </property>
417- <property name="sizeHint" stdset="0">
418- <size>
419- <width>20</width>
420- <height>50</height>
421- </size>
422- </property>
423- </spacer>
424- </item>
425- </layout>
426- </widget>
427- <resources>
428- <include location="images.qrc"/>
429- </resources>
430- <connections/>
431-</ui>
432
433=== removed file 'data/qt/congratulations.ui'
434--- data/qt/congratulations.ui 2011-11-17 20:05:33 +0000
435+++ data/qt/congratulations.ui 1970-01-01 00:00:00 +0000
436@@ -1,138 +0,0 @@
437-<?xml version="1.0" encoding="UTF-8"?>
438-<ui version="4.0">
439- <class>Form</class>
440- <widget class="QWidget" name="Form">
441- <property name="geometry">
442- <rect>
443- <x>0</x>
444- <y>0</y>
445- <width>622</width>
446- <height>362</height>
447- </rect>
448- </property>
449- <property name="windowTitle">
450- <string>Form</string>
451- </property>
452- <layout class="QVBoxLayout" name="verticalLayout_2">
453- <property name="spacing">
454- <number>24</number>
455- </property>
456- <property name="topMargin">
457- <number>0</number>
458- </property>
459- <item>
460- <layout class="QHBoxLayout" name="horizontalLayout_2">
461- <item>
462- <spacer name="horizontalSpacer">
463- <property name="orientation">
464- <enum>Qt::Horizontal</enum>
465- </property>
466- <property name="sizeHint" stdset="0">
467- <size>
468- <width>40</width>
469- <height>20</height>
470- </size>
471- </property>
472- </spacer>
473- </item>
474- <item>
475- <widget class="QLabel" name="image_label">
476- <property name="text">
477- <string/>
478- </property>
479- <property name="pixmap">
480- <pixmap resource="images.qrc">:/win_installer_graphic.png</pixmap>
481- </property>
482- </widget>
483- </item>
484- <item>
485- <spacer name="horizontalSpacer_2">
486- <property name="orientation">
487- <enum>Qt::Horizontal</enum>
488- </property>
489- <property name="sizeHint" stdset="0">
490- <size>
491- <width>40</width>
492- <height>20</height>
493- </size>
494- </property>
495- </spacer>
496- </item>
497- </layout>
498- </item>
499- <item>
500- <widget class="QLabel" name="label_3">
501- <property name="text">
502- <string>Ubuntu One is installed, set up and is ready to go!</string>
503- </property>
504- </widget>
505- </item>
506- <item>
507- <widget class="QWidget" name="progressContainer" native="true">
508- <property name="layoutDirection">
509- <enum>Qt::RightToLeft</enum>
510- </property>
511- <layout class="QHBoxLayout" name="horizontalLayout">
512- <property name="spacing">
513- <number>0</number>
514- </property>
515- <property name="margin">
516- <number>0</number>
517- </property>
518- <item>
519- <widget class="QLabel" name="label_4">
520- <property name="text">
521- <string/>
522- </property>
523- </widget>
524- </item>
525- <item>
526- <layout class="QVBoxLayout" name="verticalLayout">
527- <item>
528- <widget class="QLabel" name="label_5">
529- <property name="font">
530- <font>
531- <weight>75</weight>
532- <bold>true</bold>
533- </font>
534- </property>
535- <property name="text">
536- <string>Sync in progress...</string>
537- </property>
538- </widget>
539- </item>
540- <item>
541- <widget class="QLabel" name="label_6">
542- <property name="text">
543- <string>Your selected folders have started to sync in the background, launch the dashboard to get more information about the sync in progress.</string>
544- </property>
545- <property name="wordWrap">
546- <bool>true</bool>
547- </property>
548- </widget>
549- </item>
550- </layout>
551- </item>
552- </layout>
553- </widget>
554- </item>
555- <item>
556- <spacer name="verticalSpacer">
557- <property name="orientation">
558- <enum>Qt::Vertical</enum>
559- </property>
560- <property name="sizeHint" stdset="0">
561- <size>
562- <width>20</width>
563- <height>40</height>
564- </size>
565- </property>
566- </spacer>
567- </item>
568- </layout>
569- </widget>
570- <resources>
571- <include location="images.qrc"/>
572- </resources>
573- <connections/>
574-</ui>
575
576=== removed file 'data/qt/folders.ui'
577--- data/qt/folders.ui 2011-09-08 02:33:23 +0000
578+++ data/qt/folders.ui 1970-01-01 00:00:00 +0000
579@@ -1,61 +0,0 @@
580-<?xml version="1.0" encoding="UTF-8"?>
581-<ui version="4.0">
582- <class>Form</class>
583- <widget class="QWidget" name="Form">
584- <property name="geometry">
585- <rect>
586- <x>0</x>
587- <y>0</y>
588- <width>480</width>
589- <height>374</height>
590- </rect>
591- </property>
592- <property name="windowTitle">
593- <string>Form</string>
594- </property>
595- <layout class="QVBoxLayout" name="verticalLayout">
596- <property name="topMargin">
597- <number>0</number>
598- </property>
599- <item>
600- <layout class="QHBoxLayout" name="horizontalLayout">
601- <item>
602- <spacer name="horizontalSpacer">
603- <property name="orientation">
604- <enum>Qt::Horizontal</enum>
605- </property>
606- <property name="sizeHint" stdset="0">
607- <size>
608- <width>40</width>
609- <height>20</height>
610- </size>
611- </property>
612- </spacer>
613- </item>
614- <item>
615- <widget class="QPushButton" name="check_settings_button">
616- <property name="text">
617- <string>Check settings</string>
618- </property>
619- </widget>
620- </item>
621- <item>
622- <spacer name="horizontalSpacer_2">
623- <property name="orientation">
624- <enum>Qt::Horizontal</enum>
625- </property>
626- <property name="sizeHint" stdset="0">
627- <size>
628- <width>40</width>
629- <height>20</height>
630- </size>
631- </property>
632- </spacer>
633- </item>
634- </layout>
635- </item>
636- </layout>
637- </widget>
638- <resources/>
639- <connections/>
640-</ui>
641
642=== removed file 'data/qt/images.qrc'
643--- data/qt/images.qrc 2011-08-08 21:48:11 +0000
644+++ data/qt/images.qrc 1970-01-01 00:00:00 +0000
645@@ -1,20 +0,0 @@
646-<RCC>
647- <qresource prefix="/">
648- <file>../balloon_shape.png</file>
649- <file>../password_hint_ok.png</file>
650- <file>../password_hint_warning.png</file>
651- <file>../Ubuntu-R.ttf</file>
652- <file>../Ubuntu-B.ttf</file>
653- <file>ubuntuone.qss</file>
654- <file>../progress_arrow_grey.png</file>
655- <file>../u1_logo.png</file>
656- <file>../progress_arrow_orange.png</file>
657- <file>../progress_finish_grey.png</file>
658- <file>../progress_finish_orange.png</file>
659- <file>../progress_tick.png</file>
660- <file>../u1icon.png</file>
661- <file>../ubuntu_one_favicon.png</file>
662- <file>../win_installer_graphic.png</file>
663- <file>../folder.png</file>
664- </qresource>
665-</RCC>
666
667=== removed file 'data/qt/license.ui'
668--- data/qt/license.ui 2011-09-07 11:30:30 +0000
669+++ data/qt/license.ui 1970-01-01 00:00:00 +0000
670@@ -1,34 +0,0 @@
671-<?xml version="1.0" encoding="UTF-8"?>
672-<ui version="4.0">
673- <class>Form</class>
674- <widget class="QWidget" name="Form">
675- <property name="geometry">
676- <rect>
677- <x>0</x>
678- <y>0</y>
679- <width>400</width>
680- <height>300</height>
681- </rect>
682- </property>
683- <property name="windowTitle">
684- <string>Form</string>
685- </property>
686- <layout class="QVBoxLayout" name="verticalLayout">
687- <property name="topMargin">
688- <number>0</number>
689- </property>
690- <item>
691- <widget class="QTextBrowser" name="textBrowser">
692- <property name="openExternalLinks">
693- <bool>true</bool>
694- </property>
695- <property name="openLinks">
696- <bool>true</bool>
697- </property>
698- </widget>
699- </item>
700- </layout>
701- </widget>
702- <resources/>
703- <connections/>
704-</ui>
705
706=== removed file 'data/qt/local_folders.ui'
707--- data/qt/local_folders.ui 2011-09-08 02:33:23 +0000
708+++ data/qt/local_folders.ui 1970-01-01 00:00:00 +0000
709@@ -1,172 +0,0 @@
710-<?xml version="1.0" encoding="UTF-8"?>
711-<ui version="4.0">
712- <class>Form</class>
713- <widget class="QWidget" name="Form">
714- <property name="geometry">
715- <rect>
716- <x>0</x>
717- <y>0</y>
718- <width>519</width>
719- <height>536</height>
720- </rect>
721- </property>
722- <property name="windowTitle">
723- <string>Form</string>
724- </property>
725- <layout class="QVBoxLayout" name="verticalLayout_2">
726- <property name="topMargin">
727- <number>0</number>
728- </property>
729- <item>
730- <widget class="QLabel" name="label">
731- <property name="text">
732- <string>Ok! Now it's time to choose which folder sync to the cloud from this computer.
733-We started by suggesting a few.</string>
734- </property>
735- <property name="textFormat">
736- <enum>Qt::PlainText</enum>
737- </property>
738- <property name="wordWrap">
739- <bool>true</bool>
740- </property>
741- </widget>
742- </item>
743- <item>
744- <widget class="QTreeWidget" name="folder_list">
745- <property name="indentation">
746- <number>0</number>
747- </property>
748- <property name="rootIsDecorated">
749- <bool>false</bool>
750- </property>
751- <property name="uniformRowHeights">
752- <bool>true</bool>
753- </property>
754- <property name="allColumnsShowFocus">
755- <bool>true</bool>
756- </property>
757- <attribute name="headerStretchLastSection">
758- <bool>false</bool>
759- </attribute>
760- <column>
761- <property name="text">
762- <string>Sync these folders on my computer</string>
763- </property>
764- </column>
765- <column>
766- <property name="text">
767- <string>Space (Total)</string>
768- </property>
769- </column>
770- </widget>
771- </item>
772- <item>
773- <layout class="QHBoxLayout" name="horizontalLayout_3">
774- <item>
775- <spacer name="horizontalSpacer_4">
776- <property name="orientation">
777- <enum>Qt::Horizontal</enum>
778- </property>
779- <property name="sizeHint" stdset="0">
780- <size>
781- <width>40</width>
782- <height>20</height>
783- </size>
784- </property>
785- </spacer>
786- </item>
787- <item>
788- <widget class="QPushButton" name="add_folder_button">
789- <property name="text">
790- <string>Add a folder from this computer</string>
791- </property>
792- <property name="DisabledState" stdset="0">
793- <bool>false</bool>
794- </property>
795- </widget>
796- </item>
797- <item>
798- <spacer name="horizontalSpacer_5">
799- <property name="orientation">
800- <enum>Qt::Horizontal</enum>
801- </property>
802- <property name="sizeHint" stdset="0">
803- <size>
804- <width>40</width>
805- <height>20</height>
806- </size>
807- </property>
808- </spacer>
809- </item>
810- </layout>
811- </item>
812- <item>
813- <widget class="QFrame" name="offer_frame">
814- <property name="frameShape">
815- <enum>QFrame::StyledPanel</enum>
816- </property>
817- <property name="frameShadow">
818- <enum>QFrame::Raised</enum>
819- </property>
820- <layout class="QVBoxLayout" name="verticalLayout">
821- <property name="leftMargin">
822- <number>0</number>
823- </property>
824- <property name="rightMargin">
825- <number>0</number>
826- </property>
827- <item>
828- <widget class="QLabel" name="offer_label">
829- <property name="text">
830- <string>The folders you have selected to sync take over your 5GB storage space by 6.5GB. You can remove some folders or add some extra storage now.</string>
831- </property>
832- <property name="wordWrap">
833- <bool>true</bool>
834- </property>
835- </widget>
836- </item>
837- <item>
838- <layout class="QHBoxLayout" name="horizontalLayout">
839- <item>
840- <spacer name="horizontalSpacer">
841- <property name="orientation">
842- <enum>Qt::Horizontal</enum>
843- </property>
844- <property name="sizeHint" stdset="0">
845- <size>
846- <width>40</width>
847- <height>20</height>
848- </size>
849- </property>
850- </spacer>
851- </item>
852- <item>
853- <widget class="QPushButton" name="add_storage_button">
854- <property name="text">
855- <string>Add more storage</string>
856- </property>
857- </widget>
858- </item>
859- <item>
860- <spacer name="horizontalSpacer_2">
861- <property name="orientation">
862- <enum>Qt::Horizontal</enum>
863- </property>
864- <property name="sizeHint" stdset="0">
865- <size>
866- <width>40</width>
867- <height>20</height>
868- </size>
869- </property>
870- </spacer>
871- </item>
872- </layout>
873- </item>
874- </layout>
875- </widget>
876- </item>
877- </layout>
878- </widget>
879- <resources/>
880- <connections/>
881-</ui>
882
883=== removed file 'data/qt/network_detection.ui'
884--- data/qt/network_detection.ui 2011-09-26 20:28:46 +0000
885+++ data/qt/network_detection.ui 1970-01-01 00:00:00 +0000
886@@ -1,150 +0,0 @@
887-<?xml version="1.0" encoding="UTF-8"?>
888-<ui version="4.0">
889- <class>Form</class>
890- <widget class="QWizardPage" name="Form">
891- <property name="geometry">
892- <rect>
893- <x>0</x>
894- <y>0</y>
895- <width>541</width>
896- <height>365</height>
897- </rect>
898- </property>
899- <property name="windowTitle">
900- <string>WizardPage</string>
901- </property>
902- <layout class="QVBoxLayout" name="verticalLayout">
903- <item>
904- <layout class="QHBoxLayout" name="horizontalLayout_2">
905- <item>
906- <spacer name="horizontalSpacer_3">
907- <property name="orientation">
908- <enum>Qt::Horizontal</enum>
909- </property>
910- <property name="sizeHint" stdset="0">
911- <size>
912- <width>40</width>
913- <height>20</height>
914- </size>
915- </property>
916- </spacer>
917- </item>
918- <item>
919- <widget class="QLabel" name="image_label">
920- <property name="sizePolicy">
921- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
922- <horstretch>0</horstretch>
923- <verstretch>0</verstretch>
924- </sizepolicy>
925- </property>
926- <property name="minimumSize">
927- <size>
928- <width>400</width>
929- <height>150</height>
930- </size>
931- </property>
932- <property name="text">
933- <string/>
934- </property>
935- <property name="textFormat">
936- <enum>Qt::PlainText</enum>
937- </property>
938- <property name="pixmap">
939- <pixmap resource="images.qrc">:/win_installer_graphic.png</pixmap>
940- </property>
941- <property name="alignment">
942- <set>Qt::AlignCenter</set>
943- </property>
944- <property name="wordWrap">
945- <bool>true</bool>
946- </property>
947- </widget>
948- </item>
949- <item>
950- <spacer name="horizontalSpacer_4">
951- <property name="orientation">
952- <enum>Qt::Horizontal</enum>
953- </property>
954- <property name="sizeHint" stdset="0">
955- <size>
956- <width>40</width>
957- <height>20</height>
958- </size>
959- </property>
960- </spacer>
961- </item>
962- </layout>
963- </item>
964- <item>
965- <widget class="QLabel" name="message_label">
966- <property name="text">
967- <string>Ubuntu One has installed!</string>
968- </property>
969- <property name="alignment">
970- <set>Qt::AlignCenter</set>
971- </property>
972- </widget>
973- </item>
974- <item>
975- <layout class="QHBoxLayout" name="horizontalLayout">
976- <item>
977- <spacer name="horizontalSpacer">
978- <property name="orientation">
979- <enum>Qt::Horizontal</enum>
980- </property>
981- <property name="sizeHint" stdset="0">
982- <size>
983- <width>40</width>
984- <height>20</height>
985- </size>
986- </property>
987- </spacer>
988- </item>
989- <item>
990- <widget class="QLabel" name="label">
991- <property name="text">
992- <string>Are you online? We can't detect an internet connection - you will need to be connected to set up Ubuntu One</string>
993- </property>
994- <property name="textFormat">
995- <enum>Qt::PlainText</enum>
996- </property>
997- <property name="wordWrap">
998- <bool>true</bool>
999- </property>
1000- </widget>
1001- </item>
1002- <item>
1003- <spacer name="horizontalSpacer_2">
1004- <property name="orientation">
1005- <enum>Qt::Horizontal</enum>
1006- </property>
1007- <property name="sizeHint" stdset="0">
1008- <size>
1009- <width>40</width>
1010- <height>20</height>
1011- </size>
1012- </property>
1013- </spacer>
1014- </item>
1015- </layout>
1016- </item>
1017- <item>
1018- <spacer name="verticalSpacer">
1019- <property name="orientation">
1020- <enum>Qt::Vertical</enum>
1021- </property>
1022- <property name="sizeHint" stdset="0">
1023- <size>
1024- <width>20</width>
1025- <height>76</height>
1026- </size>
1027- </property>
1028- </spacer>
1029- </item>
1030- </layout>
1031- </widget>
1032- <resources>
1033- <include location="images.qrc"/>
1034- </resources>
1035- <connections/>
1036-</ui>
1037
1038=== removed file 'data/qt/preferences.ui'
1039--- data/qt/preferences.ui 2011-09-02 12:58:29 +0000
1040+++ data/qt/preferences.ui 1970-01-01 00:00:00 +0000
1041@@ -1,24 +0,0 @@
1042-<?xml version="1.0" encoding="UTF-8"?>
1043-<ui version="4.0">
1044- <class>Form</class>
1045- <widget class="QWidget" name="Form">
1046- <property name="geometry">
1047- <rect>
1048- <x>0</x>
1049- <y>0</y>
1050- <width>480</width>
1051- <height>374</height>
1052- </rect>
1053- </property>
1054- <property name="windowTitle">
1055- <string>Form</string>
1056- </property>
1057- <layout class="QVBoxLayout" name="verticalLayout">
1058- <property name="topMargin">
1059- <number>0</number>
1060- </property>
1061- </layout>
1062- </widget>
1063- <resources/>
1064- <connections/>
1065-</ui>
1066
1067=== removed file 'data/qt/setup_account.ui'
1068--- data/qt/setup_account.ui 2011-09-02 12:58:29 +0000
1069+++ data/qt/setup_account.ui 1970-01-01 00:00:00 +0000
1070@@ -1,670 +0,0 @@
1071-<?xml version="1.0" encoding="UTF-8"?>
1072-<ui version="4.0">
1073- <class>SetUpAccountPage</class>
1074- <widget class="QWizardPage" name="SetUpAccountPage">
1075- <property name="geometry">
1076- <rect>
1077- <x>0</x>
1078- <y>0</y>
1079- <width>543</width>
1080- <height>523</height>
1081- </rect>
1082- </property>
1083- <property name="sizePolicy">
1084- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
1085- <horstretch>0</horstretch>
1086- <verstretch>0</verstretch>
1087- </sizepolicy>
1088- </property>
1089- <property name="maximumSize">
1090- <size>
1091- <width>16777215</width>
1092- <height>16777215</height>
1093- </size>
1094- </property>
1095- <property name="windowTitle">
1096- <string>WizardPage</string>
1097- </property>
1098- <layout class="QVBoxLayout" name="verticalLayout">
1099- <property name="spacing">
1100- <number>0</number>
1101- </property>
1102- <property name="leftMargin">
1103- <number>0</number>
1104- </property>
1105- <property name="topMargin">
1106- <number>0</number>
1107- </property>
1108- <property name="rightMargin">
1109- <number>3</number>
1110- </property>
1111- <property name="bottomMargin">
1112- <number>0</number>
1113- </property>
1114- <item>
1115- <layout class="QGridLayout" name="gridLayout" columnminimumwidth="310,220">
1116- <item row="0" column="0">
1117- <widget class="QLabel" name="password_info_label">
1118- <property name="sizePolicy">
1119- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
1120- <horstretch>0</horstretch>
1121- <verstretch>0</verstretch>
1122- </sizepolicy>
1123- </property>
1124- <property name="text">
1125- <string>If you can't read this then &lt;a href=&quot;example.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#dd4814;&quot;&gt;refresh&lt;/span&gt;&lt;/a&gt; this page&lt;/span&gt;</string>
1126- </property>
1127- <property name="wordWrap">
1128- <bool>true</bool>
1129- </property>
1130- </widget>
1131- </item>
1132- <item row="1" column="0">
1133- <layout class="QVBoxLayout" name="verticalLayout">
1134- <property name="spacing">
1135- <number>3</number>
1136- </property>
1137- <item>
1138- <widget class="QLabel" name="name_label">
1139- <property name="font">
1140- <font>
1141- <weight>75</weight>
1142- <bold>true</bold>
1143- </font>
1144- </property>
1145- <property name="text">
1146- <string>name_label</string>
1147- </property>
1148- </widget>
1149- </item>
1150- <item>
1151- <widget class="QLineEdit" name="name_edit">
1152- <property name="sizePolicy">
1153- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1154- <horstretch>0</horstretch>
1155- <verstretch>0</verstretch>
1156- </sizepolicy>
1157- </property>
1158- <property name="minimumSize">
1159- <size>
1160- <width>300</width>
1161- <height>0</height>
1162- </size>
1163- </property>
1164- <property name="maximumSize">
1165- <size>
1166- <width>300</width>
1167- <height>16777215</height>
1168- </size>
1169- </property>
1170- <property name="font">
1171- <font>
1172- <pointsize>11</pointsize>
1173- </font>
1174- </property>
1175- <property name="formError" stdset="0">
1176- <bool>false</bool>
1177- </property>
1178- </widget>
1179- </item>
1180- </layout>
1181- </item>
1182- <item row="3" column="0">
1183- <layout class="QVBoxLayout" name="verticalLayout">
1184- <property name="spacing">
1185- <number>3</number>
1186- </property>
1187- <item>
1188- <widget class="QLabel" name="email_label">
1189- <property name="font">
1190- <font>
1191- <weight>75</weight>
1192- <bold>true</bold>
1193- </font>
1194- </property>
1195- <property name="text">
1196- <string>email_label</string>
1197- </property>
1198- </widget>
1199- </item>
1200- <item>
1201- <widget class="QLineEdit" name="email_edit">
1202- <property name="sizePolicy">
1203- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1204- <horstretch>0</horstretch>
1205- <verstretch>0</verstretch>
1206- </sizepolicy>
1207- </property>
1208- <property name="minimumSize">
1209- <size>
1210- <width>300</width>
1211- <height>0</height>
1212- </size>
1213- </property>
1214- <property name="maximumSize">
1215- <size>
1216- <width>300</width>
1217- <height>16777215</height>
1218- </size>
1219- </property>
1220- <property name="font">
1221- <font>
1222- <pointsize>11</pointsize>
1223- </font>
1224- </property>
1225- <property name="placeholderText">
1226- <string/>
1227- </property>
1228- <property name="formError" stdset="0">
1229- <bool>false</bool>
1230- </property>
1231- </widget>
1232- </item>
1233- </layout>
1234- </item>
1235- <item row="4" column="0">
1236- <layout class="QVBoxLayout" name="verticalLayout">
1237- <property name="spacing">
1238- <number>3</number>
1239- </property>
1240- <item>
1241- <widget class="QLabel" name="confirm_email_label">
1242- <property name="font">
1243- <font>
1244- <weight>75</weight>
1245- <bold>true</bold>
1246- </font>
1247- </property>
1248- <property name="text">
1249- <string>confirm_email_label</string>
1250- </property>
1251- </widget>
1252- </item>
1253- <item>
1254- <widget class="QLineEdit" name="confirm_email_edit">
1255- <property name="sizePolicy">
1256- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1257- <horstretch>0</horstretch>
1258- <verstretch>0</verstretch>
1259- </sizepolicy>
1260- </property>
1261- <property name="minimumSize">
1262- <size>
1263- <width>300</width>
1264- <height>0</height>
1265- </size>
1266- </property>
1267- <property name="maximumSize">
1268- <size>
1269- <width>300</width>
1270- <height>16777215</height>
1271- </size>
1272- </property>
1273- <property name="font">
1274- <font>
1275- <pointsize>11</pointsize>
1276- </font>
1277- </property>
1278- <property name="placeholderText">
1279- <string/>
1280- </property>
1281- <property name="formError" stdset="0">
1282- <bool>false</bool>
1283- </property>
1284- </widget>
1285- </item>
1286- </layout>
1287- </item>
1288- <item row="6" column="0">
1289- <layout class="QVBoxLayout" name="verticalLayout">
1290- <property name="spacing">
1291- <number>3</number>
1292- </property>
1293- <item>
1294- <widget class="QLabel" name="password_label">
1295- <property name="font">
1296- <font>
1297- <weight>75</weight>
1298- <bold>true</bold>
1299- </font>
1300- </property>
1301- <property name="text">
1302- <string>password_label</string>
1303- </property>
1304- </widget>
1305- </item>
1306- <item>
1307- <widget class="QLineEdit" name="password_edit">
1308- <property name="sizePolicy">
1309- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1310- <horstretch>0</horstretch>
1311- <verstretch>0</verstretch>
1312- </sizepolicy>
1313- </property>
1314- <property name="minimumSize">
1315- <size>
1316- <width>300</width>
1317- <height>0</height>
1318- </size>
1319- </property>
1320- <property name="maximumSize">
1321- <size>
1322- <width>300</width>
1323- <height>16777215</height>
1324- </size>
1325- </property>
1326- <property name="font">
1327- <font>
1328- <pointsize>11</pointsize>
1329- </font>
1330- </property>
1331- <property name="toolTip">
1332- <string>Your password must be at least 8 characters long and at least contain one number and one upper later.</string>
1333- </property>
1334- <property name="statusTip">
1335- <string/>
1336- </property>
1337- <property name="echoMode">
1338- <enum>QLineEdit::Password</enum>
1339- </property>
1340- <property name="placeholderText">
1341- <string/>
1342- </property>
1343- <property name="formError" stdset="0">
1344- <bool>false</bool>
1345- </property>
1346- </widget>
1347- </item>
1348- </layout>
1349- </item>
1350- <item row="7" column="0">
1351- <layout class="QVBoxLayout" name="verticalLayout">
1352- <property name="spacing">
1353- <number>3</number>
1354- </property>
1355- <item>
1356- <widget class="QLabel" name="confirm_password_label">
1357- <property name="font">
1358- <font>
1359- <weight>75</weight>
1360- <bold>true</bold>
1361- </font>
1362- </property>
1363- <property name="text">
1364- <string>confirm_password_label</string>
1365- </property>
1366- </widget>
1367- </item>
1368- <item>
1369- <widget class="QLineEdit" name="confirm_password_edit">
1370- <property name="sizePolicy">
1371- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1372- <horstretch>0</horstretch>
1373- <verstretch>0</verstretch>
1374- </sizepolicy>
1375- </property>
1376- <property name="minimumSize">
1377- <size>
1378- <width>300</width>
1379- <height>0</height>
1380- </size>
1381- </property>
1382- <property name="maximumSize">
1383- <size>
1384- <width>300</width>
1385- <height>16777215</height>
1386- </size>
1387- </property>
1388- <property name="font">
1389- <font>
1390- <pointsize>11</pointsize>
1391- </font>
1392- </property>
1393- <property name="echoMode">
1394- <enum>QLineEdit::Password</enum>
1395- </property>
1396- <property name="placeholderText">
1397- <string/>
1398- </property>
1399- <property name="formError" stdset="0">
1400- <bool>false</bool>
1401- </property>
1402- </widget>
1403- </item>
1404- </layout>
1405- </item>
1406- <item row="9" column="0">
1407- <layout class="QVBoxLayout" name="verticalLayout">
1408- <property name="spacing">
1409- <number>3</number>
1410- </property>
1411- <item>
1412- <widget class="QLabel" name="captcha_view">
1413- <property name="sizePolicy">
1414- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1415- <horstretch>0</horstretch>
1416- <verstretch>0</verstretch>
1417- </sizepolicy>
1418- </property>
1419- <property name="minimumSize">
1420- <size>
1421- <width>300</width>
1422- <height>57</height>
1423- </size>
1424- </property>
1425- <property name="maximumSize">
1426- <size>
1427- <width>300</width>
1428- <height>16777215</height>
1429- </size>
1430- </property>
1431- <property name="styleSheet">
1432- <string notr="true">background-color: white</string>
1433- </property>
1434- <property name="frameShape">
1435- <enum>QFrame::Box</enum>
1436- </property>
1437- <property name="text">
1438- <string>If you can't read this then &lt;a href=&quot;example.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#dd4814;&quot;&gt;refresh&lt;/span&gt;&lt;/a&gt; this page&lt;/span&gt;</string>
1439- </property>
1440- </widget>
1441- </item>
1442- <item>
1443- <widget class="QLineEdit" name="captcha_solution_edit">
1444- <property name="sizePolicy">
1445- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
1446- <horstretch>0</horstretch>
1447- <verstretch>0</verstretch>
1448- </sizepolicy>
1449- </property>
1450- <property name="minimumSize">
1451- <size>
1452- <width>300</width>
1453- <height>0</height>
1454- </size>
1455- </property>
1456- <property name="maximumSize">
1457- <size>
1458- <width>300</width>
1459- <height>16777215</height>
1460- </size>
1461- </property>
1462- <property name="font">
1463- <font>
1464- <pointsize>11</pointsize>
1465- </font>
1466- </property>
1467- <property name="locale">
1468- <locale language="English" country="UnitedStates"/>
1469- </property>
1470- <property name="inputMask">
1471- <string/>
1472- </property>
1473- <property name="text">
1474- <string/>
1475- </property>
1476- <property name="placeholderText">
1477- <string/>
1478- </property>
1479- <property name="formError" stdset="0">
1480- <bool>false</bool>
1481- </property>
1482- </widget>
1483- </item>
1484- </layout>
1485- </item>
1486- <item row="9" column="1">
1487- <widget class="QLabel" name="refresh_label">
1488- <property name="sizePolicy">
1489- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
1490- <horstretch>0</horstretch>
1491- <verstretch>0</verstretch>
1492- </sizepolicy>
1493- </property>
1494- <property name="minimumSize">
1495- <size>
1496- <width>220</width>
1497- <height>0</height>
1498- </size>
1499- </property>
1500- <property name="maximumSize">
1501- <size>
1502- <width>220</width>
1503- <height>16777215</height>
1504- </size>
1505- </property>
1506- <property name="locale">
1507- <locale language="English" country="UnitedStates"/>
1508- </property>
1509- <property name="text">
1510- <string>If you can't read this then &lt;a href=&quot;example.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#dd4814;&quot;&gt;refresh&lt;/span&gt;&lt;/a&gt; this page&lt;/span&gt;</string>
1511- </property>
1512- <property name="wordWrap">
1513- <bool>true</bool>
1514- </property>
1515- <property name="indent">
1516- <number>0</number>
1517- </property>
1518- </widget>
1519- </item>
1520- <item row="1" column="1">
1521- <layout class="QVBoxLayout" name="verticalLayout_7">
1522- <property name="spacing">
1523- <number>0</number>
1524- </property>
1525- <property name="leftMargin">
1526- <number>0</number>
1527- </property>
1528- <item>
1529- <widget class="QLabel" name="name_assistance">
1530- <property name="sizePolicy">
1531- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
1532- <horstretch>0</horstretch>
1533- <verstretch>0</verstretch>
1534- </sizepolicy>
1535- </property>
1536- <property name="minimumSize">
1537- <size>
1538- <width>220</width>
1539- <height>0</height>
1540- </size>
1541- </property>
1542- <property name="maximumSize">
1543- <size>
1544- <width>220</width>
1545- <height>16777215</height>
1546- </size>
1547- </property>
1548- <property name="text">
1549- <string>name_assistance</string>
1550- </property>
1551- <property name="alignment">
1552- <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
1553- </property>
1554- <property name="wordWrap">
1555- <bool>true</bool>
1556- </property>
1557- </widget>
1558- </item>
1559- </layout>
1560- </item>
1561- <item row="3" column="1">
1562- <layout class="QVBoxLayout" name="verticalLayout_8">
1563- <property name="spacing">
1564- <number>0</number>
1565- </property>
1566- <property name="leftMargin">
1567- <number>0</number>
1568- </property>
1569- <item>
1570- <widget class="QLabel" name="email_assistance">
1571- <property name="sizePolicy">
1572- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
1573- <horstretch>0</horstretch>
1574- <verstretch>0</verstretch>
1575- </sizepolicy>
1576- </property>
1577- <property name="minimumSize">
1578- <size>
1579- <width>220</width>
1580- <height>0</height>
1581- </size>
1582- </property>
1583- <property name="maximumSize">
1584- <size>
1585- <width>220</width>
1586- <height>16777215</height>
1587- </size>
1588- </property>
1589- <property name="text">
1590- <string>email_assistance</string>
1591- </property>
1592- <property name="alignment">
1593- <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
1594- </property>
1595- <property name="wordWrap">
1596- <bool>true</bool>
1597- </property>
1598- </widget>
1599- </item>
1600- </layout>
1601- </item>
1602- <item row="4" column="1">
1603- <layout class="QVBoxLayout" name="verticalLayout_9">
1604- <property name="spacing">
1605- <number>0</number>
1606- </property>
1607- <property name="leftMargin">
1608- <number>0</number>
1609- </property>
1610- <item>
1611- <widget class="QLabel" name="confirm_email_assistance">
1612- <property name="sizePolicy">
1613- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
1614- <horstretch>0</horstretch>
1615- <verstretch>0</verstretch>
1616- </sizepolicy>
1617- </property>
1618- <property name="minimumSize">
1619- <size>
1620- <width>220</width>
1621- <height>0</height>
1622- </size>
1623- </property>
1624- <property name="maximumSize">
1625- <size>
1626- <width>220</width>
1627- <height>16777215</height>
1628- </size>
1629- </property>
1630- <property name="text">
1631- <string>confirm_email_assistance</string>
1632- </property>
1633- <property name="alignment">
1634- <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
1635- </property>
1636- <property name="wordWrap">
1637- <bool>true</bool>
1638- </property>
1639- <property name="indent">
1640- <number>0</number>
1641- </property>
1642- </widget>
1643- </item>
1644- </layout>
1645- </item>
1646- <item row="6" column="1" rowspan="2">
1647- <widget class="QLabel" name="password_assistance">
1648- <property name="sizePolicy">
1649- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
1650- <horstretch>0</horstretch>
1651- <verstretch>0</verstretch>
1652- </sizepolicy>
1653- </property>
1654- <property name="minimumSize">
1655- <size>
1656- <width>220</width>
1657- <height>0</height>
1658- </size>
1659- </property>
1660- <property name="maximumSize">
1661- <size>
1662- <width>220</width>
1663- <height>16777215</height>
1664- </size>
1665- </property>
1666- <property name="text">
1667- <string>password_assistance</string>
1668- </property>
1669- <property name="wordWrap">
1670- <bool>true</bool>
1671- </property>
1672- <property name="indent">
1673- <number>17</number>
1674- </property>
1675- </widget>
1676- </item>
1677- <item row="2" column="1">
1678- <spacer name="verticalSpacer">
1679- <property name="orientation">
1680- <enum>Qt::Vertical</enum>
1681- </property>
1682- <property name="sizeType">
1683- <enum>QSizePolicy::Fixed</enum>
1684- </property>
1685- <property name="sizeHint" stdset="0">
1686- <size>
1687- <width>20</width>
1688- <height>15</height>
1689- </size>
1690- </property>
1691- </spacer>
1692- </item>
1693- <item row="5" column="1">
1694- <spacer name="verticalSpacer_2">
1695- <property name="orientation">
1696- <enum>Qt::Vertical</enum>
1697- </property>
1698- <property name="sizeType">
1699- <enum>QSizePolicy::Fixed</enum>
1700- </property>
1701- <property name="sizeHint" stdset="0">
1702- <size>
1703- <width>20</width>
1704- <height>15</height>
1705- </size>
1706- </property>
1707- </spacer>
1708- </item>
1709- <item row="8" column="1">
1710- <spacer name="verticalSpacer_3">
1711- <property name="orientation">
1712- <enum>Qt::Vertical</enum>
1713- </property>
1714- <property name="sizeType">
1715- <enum>QSizePolicy::Fixed</enum>
1716- </property>
1717- <property name="sizeHint" stdset="0">
1718- <size>
1719- <width>20</width>
1720- <height>15</height>
1721- </size>
1722- </property>
1723- </spacer>
1724- </item>
1725- </layout>
1726- </item>
1727- <item>
1728- <layout class="QHBoxLayout" name="hlayout_check">
1729- <property name="spacing">
1730- <number>0</number>
1731- </property>
1732- </layout>
1733- </item>
1734- </layout>
1735- </widget>
1736- <resources>
1737- <include location="images.qrc"/>
1738- </resources>
1739- <connections/>
1740-</ui>
1741
1742=== removed file 'data/qt/side_widget.ui'
1743--- data/qt/side_widget.ui 2011-09-02 12:58:29 +0000
1744+++ data/qt/side_widget.ui 1970-01-01 00:00:00 +0000
1745@@ -1,235 +0,0 @@
1746-<?xml version="1.0" encoding="UTF-8"?>
1747-<ui version="4.0">
1748- <class>SideWidget</class>
1749- <widget class="QFrame" name="SideWidget">
1750- <property name="geometry">
1751- <rect>
1752- <x>0</x>
1753- <y>0</y>
1754- <width>170</width>
1755- <height>466</height>
1756- </rect>
1757- </property>
1758- <property name="sizePolicy">
1759- <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
1760- <horstretch>0</horstretch>
1761- <verstretch>0</verstretch>
1762- </sizepolicy>
1763- </property>
1764- <property name="minimumSize">
1765- <size>
1766- <width>170</width>
1767- <height>466</height>
1768- </size>
1769- </property>
1770- <property name="windowTitle">
1771- <string>Frame</string>
1772- </property>
1773- <property name="frameShape">
1774- <enum>QFrame::StyledPanel</enum>
1775- </property>
1776- <property name="frameShadow">
1777- <enum>QFrame::Raised</enum>
1778- </property>
1779- <layout class="QVBoxLayout" name="verticalLayout">
1780- <property name="spacing">
1781- <number>40</number>
1782- </property>
1783- <property name="margin">
1784- <number>0</number>
1785- </property>
1786- <item>
1787- <widget class="QLabel" name="ubuntu_one_logo_label">
1788- <property name="sizePolicy">
1789- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
1790- <horstretch>0</horstretch>
1791- <verstretch>0</verstretch>
1792- </sizepolicy>
1793- </property>
1794- <property name="text">
1795- <string/>
1796- </property>
1797- <property name="pixmap">
1798- <pixmap resource="images.qrc">:/u1_logo.png</pixmap>
1799- </property>
1800- </widget>
1801- </item>
1802- <item>
1803- <widget class="QFrame" name="states_frame">
1804- <property name="sizePolicy">
1805- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
1806- <horstretch>0</horstretch>
1807- <verstretch>0</verstretch>
1808- </sizepolicy>
1809- </property>
1810- <property name="frameShape">
1811- <enum>QFrame::StyledPanel</enum>
1812- </property>
1813- <property name="frameShadow">
1814- <enum>QFrame::Raised</enum>
1815- </property>
1816- <layout class="QVBoxLayout" name="verticalLayout_2">
1817- <property name="spacing">
1818- <number>20</number>
1819- </property>
1820- <property name="margin">
1821- <number>0</number>
1822- </property>
1823- <item>
1824- <layout class="QHBoxLayout" name="horizontalLayout">
1825- <property name="spacing">
1826- <number>7</number>
1827- </property>
1828- <item>
1829- <widget class="QLabel" name="install_icon_label">
1830- <property name="sizePolicy">
1831- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
1832- <horstretch>0</horstretch>
1833- <verstretch>0</verstretch>
1834- </sizepolicy>
1835- </property>
1836- <property name="text">
1837- <string/>
1838- </property>
1839- <property name="pixmap">
1840- <pixmap resource="images.qrc">:/progress_arrow_grey.png</pixmap>
1841- </property>
1842- </widget>
1843- </item>
1844- <item>
1845- <widget class="QLabel" name="install_label">
1846- <property name="enabled">
1847- <bool>true</bool>
1848- </property>
1849- <property name="text">
1850- <string>Install</string>
1851- </property>
1852- </widget>
1853- </item>
1854- </layout>
1855- </item>
1856- <item>
1857- <layout class="QHBoxLayout" name="horizontalLayout_2">
1858- <property name="spacing">
1859- <number>7</number>
1860- </property>
1861- <property name="sizeConstraint">
1862- <enum>QLayout::SetDefaultConstraint</enum>
1863- </property>
1864- <item>
1865- <widget class="QLabel" name="sign_icon_label">
1866- <property name="sizePolicy">
1867- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
1868- <horstretch>0</horstretch>
1869- <verstretch>0</verstretch>
1870- </sizepolicy>
1871- </property>
1872- <property name="text">
1873- <string/>
1874- </property>
1875- <property name="pixmap">
1876- <pixmap resource="images.qrc">:/progress_arrow_grey.png</pixmap>
1877- </property>
1878- </widget>
1879- </item>
1880- <item>
1881- <widget class="QLabel" name="sign_in_label">
1882- <property name="enabled">
1883- <bool>true</bool>
1884- </property>
1885- <property name="text">
1886- <string>Sign In</string>
1887- </property>
1888- </widget>
1889- </item>
1890- </layout>
1891- </item>
1892- <item>
1893- <layout class="QHBoxLayout" name="horizontalLayout_4">
1894- <property name="spacing">
1895- <number>7</number>
1896- </property>
1897- <item>
1898- <widget class="QLabel" name="folders_icon_label">
1899- <property name="sizePolicy">
1900- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
1901- <horstretch>0</horstretch>
1902- <verstretch>0</verstretch>
1903- </sizepolicy>
1904- </property>
1905- <property name="text">
1906- <string/>
1907- </property>
1908- <property name="pixmap">
1909- <pixmap resource="images.qrc">:/progress_arrow_grey.png</pixmap>
1910- </property>
1911- </widget>
1912- </item>
1913- <item>
1914- <widget class="QLabel" name="select_folders_label">
1915- <property name="enabled">
1916- <bool>true</bool>
1917- </property>
1918- <property name="text">
1919- <string>Select sync folders</string>
1920- </property>
1921- </widget>
1922- </item>
1923- </layout>
1924- </item>
1925- <item>
1926- <layout class="QHBoxLayout" name="horizontalLayout_5">
1927- <property name="spacing">
1928- <number>7</number>
1929- </property>
1930- <item>
1931- <widget class="QLabel" name="sync_icon_label">
1932- <property name="sizePolicy">
1933- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
1934- <horstretch>0</horstretch>
1935- <verstretch>0</verstretch>
1936- </sizepolicy>
1937- </property>
1938- <property name="text">
1939- <string/>
1940- </property>
1941- <property name="pixmap">
1942- <pixmap resource="images.qrc">:/progress_finish_grey.png</pixmap>
1943- </property>
1944- </widget>
1945- </item>
1946- <item>
1947- <widget class="QLabel" name="sync_label">
1948- <property name="enabled">
1949- <bool>true</bool>
1950- </property>
1951- <property name="text">
1952- <string>Sync, stream, share!</string>
1953- </property>
1954- </widget>
1955- </item>
1956- </layout>
1957- </item>
1958- </layout>
1959- </widget>
1960- </item>
1961- <item>
1962- <spacer name="verticalSpacer">
1963- <property name="orientation">
1964- <enum>Qt::Vertical</enum>
1965- </property>
1966- <property name="sizeHint" stdset="0">
1967- <size>
1968- <width>20</width>
1969- <height>40</height>
1970- </size>
1971- </property>
1972- </spacer>
1973- </item>
1974- </layout>
1975- </widget>
1976- <resources>
1977- <include location="images.qrc"/>
1978- </resources>
1979- <connections/>
1980-</ui>
1981
1982=== removed file 'data/qt/sign_in.ui'
1983--- data/qt/sign_in.ui 2011-09-02 12:58:29 +0000
1984+++ data/qt/sign_in.ui 1970-01-01 00:00:00 +0000
1985@@ -1,75 +0,0 @@
1986-<?xml version="1.0" encoding="UTF-8"?>
1987-<ui version="4.0">
1988- <class>Form</class>
1989- <widget class="QWidget" name="Form">
1990- <property name="geometry">
1991- <rect>
1992- <x>0</x>
1993- <y>0</y>
1994- <width>400</width>
1995- <height>300</height>
1996- </rect>
1997- </property>
1998- <property name="windowTitle">
1999- <string>Form</string>
2000- </property>
2001- <layout class="QVBoxLayout" name="verticalLayout">
2002- <property name="topMargin">
2003- <number>0</number>
2004- </property>
2005- <item>
2006- <widget class="QLabel" name="label">
2007- <property name="font">
2008- <font>
2009- <pointsize>14</pointsize>
2010- <weight>75</weight>
2011- <bold>true</bold>
2012- </font>
2013- </property>
2014- <property name="text">
2015- <string>Sync, stream, share</string>
2016- </property>
2017- </widget>
2018- </item>
2019- <item>
2020- <spacer name="verticalSpacer">
2021- <property name="orientation">
2022- <enum>Qt::Vertical</enum>
2023- </property>
2024- <property name="sizeHint" stdset="0">
2025- <size>
2026- <width>20</width>
2027- <height>163</height>
2028- </size>
2029- </property>
2030- </spacer>
2031- </item>
2032- <item>
2033- <widget class="QPushButton" name="sign_in">
2034- <property name="text">
2035- <string>Sign me in with my existing Ubuntu one account</string>
2036- </property>
2037- <property name="default">
2038- <bool>false</bool>
2039- </property>
2040- </widget>
2041- </item>
2042- <item>
2043- <widget class="QPushButton" name="sign_up">
2044- <property name="text">
2045- <string>I don't have an account, sign me up</string>
2046- </property>
2047- </widget>
2048- </item>
2049- <item>
2050- <widget class="QPushButton" name="sign_off">
2051- <property name="text">
2052- <string>Close window and setup later</string>
2053- </property>
2054- </widget>
2055- </item>
2056- </layout>
2057- </widget>
2058- <resources/>
2059- <connections/>
2060-</ui>
2061
2062=== removed file 'data/qt/ubuntuone.qss'
2063--- data/qt/ubuntuone.qss 2011-09-02 12:58:29 +0000
2064+++ data/qt/ubuntuone.qss 1970-01-01 00:00:00 +0000
2065@@ -1,179 +0,0 @@
2066-QWidget {
2067- font-family: "Ubuntu";
2068- color: #333333;
2069-}
2070-
2071-QFrame#SideWidget {
2072- background-color: white;
2073- border-style: dotted;
2074- border-color: #939389;
2075- border-right-width: 1px;
2076- color: white;
2077- min-height: 100px;
2078-}
2079-
2080-QWizard,
2081-QDialog {
2082- background-color: white;
2083-}
2084-
2085-QLabel#password_assistance {
2086- border-image: url(":/balloon_shape.png");
2087-}
2088-
2089-QLineEdit {
2090- border: 1px solid #aea79f;
2091-}
2092-
2093-QLabel#install_label,
2094-QLabel#sign_in_label,
2095-QLabel#choose_services_label,
2096-QLabel#select_folders_label,
2097-QLabel#sync_label {
2098- font-size: 14px;
2099-}
2100-
2101-QTextEdit {
2102- background-color: #ffffff;
2103- border: none;
2104-}
2105-
2106-QPushButton {
2107- border-radius: 5px;
2108- border-style: solid;
2109- padding: 6px;
2110- padding-left: 20px;
2111- padding-right: 20px;
2112- border-width: 1px;
2113- height: 14px;
2114-}
2115-
2116-QPushButton[default="true"] {
2117- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2118- stop: 0 #fe9e84,stop: 1.0 #dd4814);
2119- color: white;
2120- border-color: #999999;
2121-}
2122-
2123-QPushButton:hover[default="true"] {
2124- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2125- stop: 0 #ffb19c,stop: 1.0 #dd4814);
2126- color: white;
2127- border-color: #999999;
2128-}
2129-
2130-QPushButton:pressed[default="true"] {
2131- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2132- stop: 0 #b93f14,stop: 1.0 #dd4814);
2133- color: white;
2134- border-color: #999999;
2135-}
2136-
2137-QPushButton[default="false"] {
2138- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2139- stop: 0 #ffffff,stop: 1.0 #e6e6e6);
2140- color: #333333;
2141- border-color: #999999;
2142-}
2143-
2144-QPushButton:hover[default="false"] {
2145- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2146- stop: 0 #ffffff,stop: 1.0 #ededed);
2147- color: #333333;
2148- border-color: #999999;
2149-}
2150-
2151-QPushButton:pressed[default="false"] {
2152- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2153- stop: 0 #d9d9d9,stop: 1.0 #fefefe);
2154- color: #333333;
2155- border-color: #999999;
2156-}
2157-
2158-QPushButton[DisabledState="true"] {
2159- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2160- stop: 0 #eaeaea, stop: 1.0 #cacaca);
2161- color: #595959;
2162- border-color: #939389;
2163-}
2164-
2165-QPushButton[DisabledState="false"] {
2166- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2167- stop: 0 #fe9e84,stop: 1.0 #dd4814);
2168- color: white;
2169- border-color: #999999;
2170-}
2171-
2172-QPushButton:hover[DisabledState="false"] {
2173- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2174- stop: 0 #ffb19c,stop: 1.0 #dd4814);
2175- color: white;
2176- border-color: #999999;
2177-}
2178-
2179-QPushButton:pressed[DisabledState="false"] {
2180- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2181- stop: 0 #b93f14,stop: 1.0 #dd4814);
2182- color: white;
2183- border-color: #999999;
2184-}
2185-
2186-QFrame#frm_box {
2187- background: #ffffff;
2188- border-radius: 5px;
2189- border-style: solid;
2190- border-color: #939389;
2191- border-width: 1px;
2192- color: white;
2193- min-height: 100px;
2194-}
2195-
2196-QFrame#frm_box > QLabel {
2197- font-size: 24px;
2198-}
2199-
2200-QLabel#image_label {
2201- border-style: dotted;
2202- border-color: #939389;
2203- border-bottom-width: 1px;
2204- border-top-width: 1px;
2205-}
2206-
2207-QLabel#title_label {
2208- font-size: 20px;
2209-}
2210-
2211-QGroupBox {
2212- padding-top: 30px;
2213- border: none;
2214- margin-top: 1ex;
2215- font: bold 15px;
2216-}
2217-
2218-QGroupBox::title {
2219- color: #333333;
2220-}
2221-
2222-QGroupBox#bandwidth_settings {
2223- border-style: dotted;
2224- border-color: #939389;
2225- border-bottom-width: 1px;
2226-}
2227-
2228-QTreeView {
2229- background: #f7f6f5;
2230- alternate-background-color: #efedec;
2231-}
2232-
2233-QLabel#form_errors {
2234- font: bold 14px;
2235- color: #df2d1f;
2236-}
2237-
2238-QLineEdit[formError="true"] {
2239- background-color: #ffe5e5;
2240-}
2241-
2242-QLineEdit[formError="false"] {
2243- background-color: white;
2244-}
2245
2246=== removed file 'data/u1_logo.png'
2247Binary files data/u1_logo.png 2011-07-12 03:24:48 +0000 and data/u1_logo.png 1970-01-01 00:00:00 +0000 differ
2248=== removed file 'data/u1icon.png'
2249Binary files data/u1icon.png 2011-07-12 03:24:48 +0000 and data/u1icon.png 1970-01-01 00:00:00 +0000 differ
2250=== removed file 'data/ubuntu_one_favicon.png'
2251Binary files data/ubuntu_one_favicon.png 2011-08-05 17:18:34 +0000 and data/ubuntu_one_favicon.png 1970-01-01 00:00:00 +0000 differ
2252=== removed file 'data/win_installer_graphic.png'
2253Binary files data/win_installer_graphic.png 2011-08-05 17:18:34 +0000 and data/win_installer_graphic.png 1970-01-01 00:00:00 +0000 differ
2254=== removed directory 'po'
2255=== removed file 'pylintrc'
2256--- pylintrc 2011-06-22 21:40:10 +0000
2257+++ pylintrc 1970-01-01 00:00:00 +0000
2258@@ -1,305 +0,0 @@
2259-# lint Python modules using external checkers.
2260-#
2261-# This is the main checker controlling the other ones and the reports
2262-# generation. It is itself both a raw checker and an astng checker in order
2263-# to:
2264-# * handle message activation / deactivation at the module level
2265-# * handle some basic but necessary stats'data (number of classes, methods...)
2266-#
2267-[MASTER]
2268-
2269-# Specify a configuration file.
2270-#rcfile=
2271-
2272-# Python code to execute, usually for sys.path manipulation such as
2273-# pygtk.require().
2274-#init-hook=
2275-
2276-# Profiled execution.
2277-profile=no
2278-
2279-# Add <file or directory> to the black list. It should be a base name, not a
2280-# path. You may set this option multiple times.
2281-ignore=ui,qtreactor
2282-
2283-# Pickle collected data for later comparisons.
2284-persistent=no
2285-
2286-# List of plugins (as comma separated values of python modules names) to load,
2287-# usually to register additional checkers.
2288-load-plugins=
2289-
2290-
2291-[MESSAGES CONTROL]
2292-
2293-# Enable only checker(s) with the given id(s). This option conflicts with the
2294-# disable-checker option
2295-#enable-checker=
2296-
2297-# Enable all checker(s) except those with the given id(s). This option
2298-# conflicts with the enable-checker option
2299-#disable-checker=
2300-
2301-# Enable all messages in the listed categories.
2302-#enable-cat=
2303-
2304-# Disable all messages in the listed categories.
2305-#disable-cat=
2306-
2307-# Disable the message(s) with the given id(s) or categories
2308-# W0142: Used * or ** magic
2309-# W0613: Unused argument 'yyy'
2310-disable=R,I,W0142,W0613,W0511
2311-
2312-
2313-[REPORTS]
2314-
2315-# Set the output format. Available formats are text, parseable, colorized, msvs
2316-# (visual studio) and html
2317-output-format=text
2318-
2319-# Include message's id in output
2320-include-ids=yes
2321-
2322-# Put messages in a separate file for each module / package specified on the
2323-# command line instead of printing them on stdout. Reports (if any) will be
2324-# written in a file name "pylint_global.[txt|html]".
2325-files-output=no
2326-
2327-# Tells whether to display a full report or only the messages
2328-reports=no
2329-
2330-# Python expression which should return a note less than 10 (10 is the highest
2331-# note). You have access to the variables errors warning, statement which
2332-# respectively contain the number of errors / warnings messages and the total
2333-# number of statements analyzed. This is used by the global evaluation report
2334-# (R0004).
2335-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
2336-
2337-# Add a comment according to your evaluation note. This is used by the global
2338-# evaluation report (R0004).
2339-comment=no
2340-
2341-# Enable the report(s) with the given id(s).
2342-#enable-report=
2343-
2344-# Disable the report(s) with the given id(s).
2345-#disable-report=
2346-
2347-
2348-# try to find bugs in the code using type inference
2349-#
2350-[TYPECHECK]
2351-
2352-# Tells whether missing members accessed in mixin class should be ignored. A
2353-# mixin class is detected if its name ends with "mixin" (case insensitive).
2354-ignore-mixin-members=yes
2355-
2356-# List of classes names for which member attributes should not be checked
2357-# (useful for classes with attributes dynamically set).
2358-ignored-classes=
2359-
2360-# When zope mode is activated, add a predefined set of Zope acquired attributes
2361-# to generated-members.
2362-zope=no
2363-
2364-# List of members which are set dynamically and missed by pylint inference
2365-# system, and so shouldn't trigger E0201 when accessed.
2366-generated-members=REQUEST,acl_users,aq_parent
2367-
2368-
2369-# checks for
2370-# * unused variables / imports
2371-# * undefined variables
2372-# * redefinition of variable from builtins or from an outer scope
2373-# * use of variable before assignment
2374-#
2375-[VARIABLES]
2376-
2377-# Tells whether we should check for unused import in __init__ files.
2378-init-import=yes
2379-
2380-# A regular expression matching names used for dummy variables (i.e. not used).
2381-dummy-variables-rgx=_|dummy
2382-
2383-# List of additional names supposed to be defined in builtins. Remember that
2384-# you should avoid to define new builtins when possible.
2385-additional-builtins=
2386-
2387-
2388-# checks for :
2389-# * doc strings
2390-# * modules / classes / functions / methods / arguments / variables name
2391-# * number of arguments, local variables, branches, returns and statements in
2392-# functions, methods
2393-# * required module attributes
2394-# * dangerous default values as arguments
2395-# * redefinition of function / method / class
2396-# * uses of the global statement
2397-#
2398-[BASIC]
2399-
2400-# Required attributes for module, separated by a comma
2401-required-attributes=
2402-
2403-# Regular expression which should only match functions or classes name which do
2404-# not require a docstring
2405-no-docstring-rgx=(__.*__|setUp|tearDown)
2406-
2407-# Regular expression which should only match correct module names
2408-module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
2409-
2410-# Regular expression which should only match correct module level names
2411-const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
2412-
2413-# Regular expression which should only match correct class names
2414-class-rgx=[A-Z_][a-zA-Z0-9]+$
2415-
2416-# Regular expression which should only match correct function names
2417-function-rgx=[a-z_][a-z0-9_]{2,79}$
2418-
2419-# Regular expression which should only match correct method names
2420-method-rgx=([a-z_][a-z0-9_]{2,79}$|setUp|tearDown)
2421-
2422-# Regular expression which should only match correct instance attribute names
2423-attr-rgx=[a-z_][a-z0-9_]{1,30}$
2424-
2425-# Regular expression which should only match correct argument names
2426-argument-rgx=[a-z_][a-z0-9_]{1,30}$
2427-
2428-# Regular expression which should only match correct variable names
2429-variable-rgx=[a-z_][a-z0-9_]{1,30}$
2430-
2431-# Regular expression which should only match correct list comprehension /
2432-# generator expression variable names
2433-inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
2434-
2435-# Good variable names which should always be accepted, separated by a comma
2436-good-names=d,e,f,g,i,j,k,ex,logger,Run,_
2437-
2438-# Bad variable names which should always be refused, separated by a comma
2439-bad-names=foo,bar,baz,toto,tutu,tata
2440-
2441-# List of builtins function names that should not be used, separated by a comma
2442-bad-functions=apply,input,reduce
2443-
2444-
2445-# checks for sign of poor/misdesign:
2446-# * number of methods, attributes, local variables...
2447-# * size, complexity of functions, methods
2448-#
2449-[DESIGN]
2450-
2451-# Maximum number of arguments for function / method
2452-max-args=5
2453-
2454-# Maximum number of locals for function / method body
2455-max-locals=15
2456-
2457-# Maximum number of return / yield for function / method body
2458-max-returns=6
2459-
2460-# Maximum number of branch for function / method body
2461-max-branchs=12
2462-
2463-# Maximum number of statements in function / method body
2464-max-statements=50
2465-
2466-# Maximum number of parents for a class (see R0901).
2467-max-parents=7
2468-
2469-# Maximum number of attributes for a class (see R0902).
2470-max-attributes=7
2471-
2472-# Minimum number of public methods for a class (see R0903).
2473-min-public-methods=2
2474-
2475-# Maximum number of public methods for a class (see R0904).
2476-max-public-methods=20
2477-
2478-
2479-# checks for :
2480-# * methods without self as first argument
2481-# * overridden methods signature
2482-# * access only to existent members via self
2483-# * attributes not defined in the __init__ method
2484-# * supported interfaces implementation
2485-# * unreachable code
2486-#
2487-[CLASSES]
2488-
2489-# List of interface methods to ignore, separated by a comma. This is used for
2490-# instance to not check methods defines in Zopes Interface base class.
2491-#ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by,providedBy
2492-
2493-# List of method names used to declare (i.e. assign) instance attributes.
2494-defining-attr-methods=__init__,__new__,setUp
2495-
2496-
2497-# checks for
2498-# * external modules dependencies
2499-# * relative / wildcard imports
2500-# * cyclic imports
2501-# * uses of deprecated modules
2502-#
2503-[IMPORTS]
2504-
2505-# Deprecated modules which should not be used, separated by a comma
2506-deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
2507-
2508-# Create a graph of every (i.e. internal and external) dependencies in the
2509-# given file (report RP0402 must not be disabled)
2510-import-graph=
2511-
2512-# Create a graph of external dependencies in the given file (report RP0402 must
2513-# not be disabled)
2514-ext-import-graph=
2515-
2516-# Create a graph of internal dependencies in the given file (report RP0402 must
2517-# not be disabled)
2518-int-import-graph=
2519-
2520-
2521-# checks for :
2522-# * unauthorized constructions
2523-# * strict indentation
2524-# * line length
2525-# * use of <> instead of !=
2526-#
2527-[FORMAT]
2528-
2529-# Maximum number of characters on a single line.
2530-max-line-length=79
2531-
2532-# Maximum number of lines in a module
2533-max-module-lines=2500
2534-
2535-# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
2536-# tab).
2537-indent-string=' '
2538-
2539-
2540-# checks for similarities and duplicated code. This computation may be
2541-# memory / CPU intensive, so you should disable it if you experiments some
2542-# problems.
2543-#
2544-[SIMILARITIES]
2545-
2546-# Minimum lines number of a similarity.
2547-min-similarity-lines=4
2548-
2549-# Ignore comments when computing similarities.
2550-ignore-comments=yes
2551-
2552-# Ignore docstrings when computing similarities.
2553-ignore-docstrings=yes
2554-
2555-
2556-# checks for:
2557-# * warning notes in the code like FIXME, XXX
2558-# * PEP 263: source code with non ascii character but no encoding declaration
2559-#
2560-[MISCELLANEOUS]
2561-
2562-# List of note tags to take in consideration, separated by a comma.
2563-notes=FIXME,XXX,TODO,fixme,xxx,todo
2564
2565=== removed file 'run-tests'
2566--- run-tests 2011-09-15 17:49:32 +0000
2567+++ run-tests 1970-01-01 00:00:00 +0000
2568@@ -1,44 +0,0 @@
2569-#! /bin/bash
2570-#
2571-# Author: Natalia Bidart <natalia.bidart@canonical.com>
2572-#
2573-# Copyright 2010 Canonical Ltd.
2574-#
2575-# This program is free software: you can redistribute it and/or modify it
2576-# under the terms of the GNU General Public License version 3, as published
2577-# by the Free Software Foundation.
2578-#
2579-# This program is distributed in the hope that it will be useful, but
2580-# WITHOUT ANY WARRANTY; without even the implied warranties of
2581-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
2582-# PURPOSE. See the GNU General Public License for more details.
2583-#
2584-# You should have received a copy of the GNU General Public License along
2585-# with this program. If not, see <http://www.gnu.org/licenses/>.
2586-
2587-set -e
2588-
2589-if [ $# -ne 0 ]; then
2590- # run specific module given by the caller
2591- MODULE="$@"
2592-else
2593- # run all tests, useful for tarmac and reviews
2594- MODULE="ubuntuone_installer"
2595-fi
2596-
2597-style_check() {
2598- ./setup.py clean
2599- u1lint
2600- if [ -x `which pep8` ]; then
2601- pep8 --exclude '.svn,CVS,.bzr,.hg,.git,*_ui.py,*_rc.py' --repeat .
2602- else
2603- echo "Please install the 'pep8' package."
2604- fi
2605-}
2606-
2607-./setup.py build
2608-echo "Running test suite for ""$MODULE"
2609-`which xvfb-run` u1trial -i "test_windows.py" --reactor=qt4 --gui "$MODULE"
2610-style_check
2611-rm -rf _trial_temp
2612-rm -rf build
2613
2614=== removed file 'run-tests.bat'
2615--- run-tests.bat 2012-01-31 16:33:13 +0000
2616+++ run-tests.bat 1970-01-01 00:00:00 +0000
2617@@ -1,125 +0,0 @@
2618-:: Author: Manuel de la Pena <manuel@canonical.com>
2619-::
2620-:: Copyright 2010 Canonical Ltd.
2621-::
2622-:: This program is free software: you can redistribute it and/or modify it
2623-:: under the terms of the GNU General Public License version 3, as published
2624-:: by the Free Software Foundation.
2625-::
2626-:: This program is distributed in the hope that it will be useful, but
2627-:: WITHOUT ANY WARRANTY; without even the implied warranties of
2628-:: MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
2629-:: PURPOSE. See the GNU General Public License for more details.
2630-::
2631-:: You should have received a copy of the GNU General Public License along
2632-:: with this program. If not, see <http://www.gnu.org/licenses/>.
2633-@ECHO off
2634-
2635-:: We could have Python 2.6 or 2.7 on Windows. In order to check availability,
2636-:: we should first check for 2.7, and run the tests, otherwise fall back to 2.6.
2637-SET REGQUERY27="REG QUERY HKLM\Software\Python\PythonCore\2.7\InstallPath /ve"
2638-SET REGQUERY2732="REG QUERY HKLM\Software\Wow6432Node\Python\PythonCore\2.7\InstallPath /ve"
2639-SET REGQUERY26="REG QUERY HKLM\Software\Python\PythonCore\2.6\InstallPath /ve"
2640-SET REGQUERY2632="REG QUERY HKLM\Software\Wow6432Node\Python\PythonCore\2.6\InstallPath /ve"
2641-SET PYTHONEXEPATH=""
2642-
2643-:: This is very annoying; FOR /F will work differently depending on the output
2644-:: of reg which is not consistent between OS versions (XP, 7). We must choose
2645-:: the tokens according to OS version.
2646-SET PYTHONPATHTOKENS=3
2647-VER | FIND "XP" > nul
2648-IF %ERRORLEVEL% == 0 (
2649- SET PYTHONPATHTOKENS=4)
2650-
2651-ECHO Checking if python 2.7 is in the system
2652-
2653-:: Look for python 2.7
2654-FOR /F "tokens=%PYTHONPATHTOKENS%" %%A IN ('%REGQUERY27%') DO @SET PYTHONEXEPATH=%%A
2655-IF NOT %PYTHONEXEPATH% == "" (
2656- GOTO :PYTHONPRESENT)
2657-
2658-ECHO Checking if python 2.6 is in the system
2659-:: we do not have python 2.7 in the system, try to find 2.6
2660-FOR /F "tokens=%PYTHONPATHTOKENS%" %%A IN ('%REGQUERY26%') DO @SET PYTHONEXEPATH=%%A
2661-
2662-IF NOT %PYTHONEXEPATH% == "" (
2663- GOTO :PYTHONPRESENT)
2664-
2665-:: we do not have python (2.6 or 2.7) this could hapen in the case that the
2666-:: user installed the 32version in a 64 machine, let check if the software was installed in the wow key
2667-
2668-:: Look for python 2.7 in WoW64
2669-ECHO Checking if python 2.7 32 is in the system
2670-FOR /F "tokens=%PYTHONPATHTOKENS%" %%A IN ('%REGQUERY2732%') DO @SET PYTHONEXEPATH=%%A
2671-
2672-IF NOT %PYTHONEXEPATH% == "" (
2673- GOTO :PYTHONPRESENT)
2674-
2675-ECHO Checking if python 2.6 32 is in the system
2676-:: we do not have python 2.7 in the system, try to find 2.6
2677-FOR /F "tokens=%PYTHONPATHTOKENS%" %%A IN ('%REGQUERY2632%') DO @SET PYTHONEXEPATH=%%A
2678-IF NOT %PYTHONEXEPATH% == "" (
2679- GOTO :PYTHONPRESENT)
2680-
2681-ECHO Please ensure you have python installed
2682-GOTO :END
2683-
2684-:PYTHONPRESENT
2685-
2686-:: throw the first parameter away if is /skip-lint,
2687-:: the way we do this is to ensure that /skip-lint
2688-:: is the first parameter and copy all the rest in a loop
2689-:: the main reason for that is that %* is not affected
2690-:: by SHIFT, that is, it allways have all passed parameters
2691-
2692-SET PARAMS=%*
2693-SET SKIPLINT=0
2694-IF "%1" == "/skip-lint" (
2695- SET SKIPLINT=1
2696- GOTO :CLEANPARAMS
2697-)ELSE (
2698- GOTO :CONTINUEBATCH)
2699-:CLEANPARAMS
2700-
2701-SHIFT
2702-SET PARAMS=%1
2703-:GETREST
2704-SHIFT
2705-if [%1]==[] (
2706- GOTO CONTINUEBATCH)
2707-SET PARAMS=%PARAMS% %1
2708-GOTO GETREST
2709-:CONTINUEBATCH
2710-
2711-ECHO Python found, building auto-generated modules...
2712-:: call setup.py build so that the qt uic is called
2713-::START "Build code" /D%CD% /WAIT "%PYTHONEXEPATH%\python.exe" setup.py build
2714-"%PYTHONEXEPATH%\python.exe" setup.py build
2715-
2716-ECHO Running tests
2717-
2718-:: execute the tests with a number of ignored linux only modules
2719-"%PYTHONEXEPATH%\python.exe" "%PYTHONEXEPATH%\Scripts\u1trial" -i "test_linux.py" --gui --reactor=qt4 -c %PARAMS% ubuntuone_installer
2720-
2721-:: Clean the build from the setup.py
2722-ECHO Cleaning the generated code before running the style checks...
2723-
2724-"%PYTHONEXEPATH%\python.exe" setup.py clean
2725-
2726-IF %SKIPLINT% == 1 (
2727- ECHO Skipping style checks
2728- GOTO :CLEAN)
2729-
2730-ECHO Performing style checks...
2731-set USE_PYFLAKES=1
2732-"%PYTHONEXEPATH%\python.exe" "%PYTHONEXEPATH%\Scripts\u1lint" ubuntuone_installer
2733-:: test for style if we can, if pep8 is not present, move to the end
2734-IF EXIST "%PYTHONEXEPATH%\Scripts\pep8.exe" (
2735- "%PYTHONEXEPATH%\Scripts\pep8.exe" --repeat --exclude="*_ui.py,*_rc.py" .
2736-
2737-:CLEAN
2738-:: Delete the temp folders
2739-RMDIR /s /q _trial_temp
2740-RMDIR /s /q .coverage
2741-:END
2742-
2743
2744=== modified file 'scripts/README'
2745--- scripts/README 2012-01-04 12:43:39 +0000
2746+++ scripts/README 2012-04-06 02:37:24 +0000
2747@@ -35,8 +35,9 @@
2748 -------------------------
2749
2750 Update the release numbers in setup.py ubuntuone_autoupdate.xml and
2751-ubuntuone.xml. Remember that you have both a build (ex: 203)
2752-and a release (ex: 2.0.3)
2753+ubuntuone.xml. Remember that you have both a build (ex: 1000)
2754+and a release (ex: 2.0.3). The build number in ubuntuone_autoupdate.xml should
2755+be increased on all releases and is not related to the version number.
2756
2757 Get the VS2008 runtime "vcredist_x86.exe" and put it in the
2758 scripts folder.
2759
2760=== modified file 'scripts/conf.py'
2761--- scripts/conf.py 2012-03-16 14:19:31 +0000
2762+++ scripts/conf.py 2012-04-06 02:37:24 +0000
2763@@ -13,28 +13,31 @@
2764 #
2765 # You should have received a copy of the GNU General Public License along
2766 # with this program. If not, see <http://www.gnu.org/licenses/>.
2767+
2768 """Configure what branches make the release."""
2769
2770+# This is appended to the branches. So, if you set it to
2771+# "/stable-3-0" you will get lp:ubuntuone-client/stable-3-0
2772+BRANCH_POSTFIX = ""
2773+
2774 # You can add branches that are to be merged into the release by
2775 # adding them to the adequate list.
2776
2777+
2778 U1_CLIENT_BRANCHES = (
2779- "lp:ubuntuone-client",
2780+ "lp:ubuntuone-client" + BRANCH_POSTFIX,
2781 )
2782 U1_CONTROL_PANEL_BRANCHES = (
2783- "lp:ubuntuone-control-panel",
2784+ "lp:ubuntuone-control-panel" + BRANCH_POSTFIX,
2785 )
2786 UBUNTU_SSO_BRANCHES = (
2787- "lp:ubuntu-sso-client",
2788-)
2789-U1_WINDOWS_INSTALLER_BRANCHES = (
2790- "lp:ubuntuone-windows-installer",
2791+ "lp:ubuntu-sso-client" + BRANCH_POSTFIX,
2792 )
2793 U1_STORAGE_PROTOCOL_BRANCHES = (
2794- "lp:ubuntuone-storage-protocol",
2795+ "lp:ubuntuone-storage-protocol" + BRANCH_POSTFIX,
2796 )
2797
2798 # If show_cmd is set to True, then the binaries will have cmd windows where
2799 # you can see stderr.
2800
2801-SHOW_CMD = False
2802+SHOW_CMD = True
2803
2804=== modified file 'scripts/setup.py'
2805--- scripts/setup.py 2012-03-16 14:39:17 +0000
2806+++ scripts/setup.py 2012-04-06 02:37:24 +0000
2807@@ -160,7 +160,6 @@
2808 branch_and_merge(conf.U1_CLIENT_BRANCHES)
2809 branch_and_merge(conf.U1_CONTROL_PANEL_BRANCHES)
2810 branch_and_merge(conf.UBUNTU_SSO_BRANCHES)
2811- branch_and_merge(conf.U1_WINDOWS_INSTALLER_BRANCHES)
2812 branch_and_merge(conf.U1_STORAGE_PROTOCOL_BRANCHES)
2813 # pylint: enable=R0904
2814
2815@@ -188,16 +187,25 @@
2816 shutil.copyfile(os.path.join(
2817 "sources", "ubuntuone-client", "bin", "u1sdtool"),
2818 os.path.join("bin", "u1sdtool"))
2819+ shutil.copyfile(os.path.join(
2820+ "sources", "ubuntuone-client", "bin", "ubuntuone-proxy-tunnel"),
2821+ os.path.join("bin", "ubuntuone-proxy-tunnel"))
2822 shutil.copyfile(os.path.join("sources", "ubuntu-sso-client",
2823 "bin", "ubuntu-sso-login"),
2824 os.path.join("bin", "ubuntu-sso-login"))
2825+ shutil.copyfile(os.path.join("sources", "ubuntu-sso-client",
2826+ "bin", "ubuntu-sso-login-qt"),
2827+ os.path.join("bin", "ubuntu-sso-login-qt"))
2828+ shutil.copyfile(os.path.join("sources", "ubuntu-sso-client",
2829+ "bin", "ubuntu-sso-proxy-creds-qt"),
2830+ os.path.join("bin", "ubuntu-sso-proxy-creds-qt"))
2831+ shutil.copyfile(os.path.join("sources", "ubuntu-sso-client",
2832+ "bin", "ubuntu-sso-ssl-certificate-qt"),
2833+ os.path.join("bin", "ubuntu-sso-ssl-certificate-qt"))
2834 shutil.copyfile(os.path.join("sources",
2835 "ubuntuone-control-panel", "bin",
2836 "ubuntuone-control-panel-qt"),
2837 os.path.join("bin", "ubuntuone-control-panel-qt"))
2838- shutil.copyfile(os.path.join("sources", "ubuntuone-windows-installer",
2839- "bin", "ubuntuone-installer-qt"),
2840- os.path.join("bin", "ubuntuone-installer-qt"))
2841
2842 # Remove "installed" copy
2843 try:
2844@@ -241,23 +249,12 @@
2845 stdout=subprocess.PIPE).communicate()[0]
2846 os.chdir(start_dir)
2847
2848- os.chdir(os.path.join("sources", "ubuntuone-windows-installer"))
2849- os.system("python setup.py build")
2850- # Copying by hand because the install is borked
2851- dest_installer = os.path.join(dest_dir, "ubuntuone_installer")
2852- shutil.copytree("ubuntuone_installer", dest_installer)
2853- u1inst_revno = subprocess.Popen(
2854- ["bzr", "revno", "."],
2855- stdout=subprocess.PIPE).communicate()[0]
2856- os.chdir(start_dir)
2857-
2858 # Create revno file
2859 with open(os.path.join("data", "revnos.txt"), "w+") as revnos:
2860 revnos.write("ubuntu-sso-client: %s"
2861 "ubuntuone-client: %s"
2862- "ubuntuone-control-panel: %s"
2863- "ubuntuonw-windows-installer: %s" %
2864- (sso_revno, u1client_revno, u1cp_revno, u1inst_revno))
2865+ "ubuntuone-control-panel: %s" %
2866+ (sso_revno, u1client_revno, u1cp_revno))
2867
2868 # Copy storage-protocol's pem files
2869 shutil.copyfile(os.path.join("sources",
2870@@ -304,6 +301,10 @@
2871 'icon_resources': [(0, 'ubuntu_one.ico')]
2872 },
2873 {
2874+ 'script': 'bin/ubuntuone-proxy-tunnel',
2875+ 'icon_resources': [(0, 'ubuntu_one.ico')]
2876+ },
2877+ {
2878 'script': 'bin/ubuntuone-control-panel-qt',
2879 'icon_resources': [(0, 'ubuntu_one.ico')]
2880 },
2881@@ -312,7 +313,15 @@
2882 'icon_resources': [(0, 'ubuntu_one.ico')]
2883 },
2884 {
2885- 'script': 'bin/ubuntuone-installer-qt',
2886+ 'script': 'bin/ubuntu-sso-login-qt',
2887+ 'icon_resources': [(0, 'ubuntu_one.ico')]
2888+ },
2889+ {
2890+ 'script': 'bin/ubuntu-sso-proxy-creds-qt',
2891+ 'icon_resources': [(0, 'ubuntu_one.ico')]
2892+ },
2893+ {
2894+ 'script': 'bin/ubuntu-sso-ssl-certificate-qt',
2895 'icon_resources': [(0, 'ubuntu_one.ico')]
2896 },
2897 ]
2898@@ -324,7 +333,7 @@
2899 # Build bundles
2900 setup(
2901 name='ubuntuone',
2902- version='2.0.3',
2903+ version='2.99.91',
2904 license='GPL v3',
2905 author='',
2906 author_email='',
2907@@ -342,11 +351,11 @@
2908 'includes': ['google.protobuf.descriptor',
2909 'sip',
2910 'twisted.web.resource',
2911+ 'twisted.web.client',
2912 'ubuntu_sso.qt',
2913- 'ubuntu_sso.qt.gui',
2914+ 'ubuntu_sso.qt.ui',
2915 'PyQt4.QtNetwork',
2916 'oauth',
2917- 'ubuntuone_installer',
2918 'configglue',
2919 'configglue.app',
2920 'configglue.inischema',
2921
2922=== modified file 'scripts/ubuntuone.xml'
2923--- scripts/ubuntuone.xml 2011-12-28 19:15:16 +0000
2924+++ scripts/ubuntuone.xml 2012-04-06 02:37:24 +0000
2925@@ -1,7 +1,7 @@
2926 <project>
2927 <shortName>ubuntuone</shortName>
2928 <fullName>Ubuntu One</fullName>
2929- <version>2.0.3</version>
2930+ <version>2.99.91</version>
2931 <componentList>
2932 <component>
2933 <name>autoupdater</name>
2934@@ -46,8 +46,8 @@
2935 <platforms>windows</platforms>
2936 <runAsAdmin>0</runAsAdmin>
2937 <runInTerminal>0</runInTerminal>
2938- <windowsExec>${installdir}\dist\ubuntuone-installer-qt.exe</windowsExec>
2939- <windowsExecArgs></windowsExecArgs>
2940+ <windowsExec>${installdir}\dist\ubuntuone-control-panel-qt.exe</windowsExec>
2941+ <windowsExecArgs>--with-icon</windowsExecArgs>
2942 <windowsIcon>${installdir}/ubuntu_one.ico</windowsIcon>
2943 <windowsPath>${windows_folder_desktopdirectory}</windowsPath>
2944 </shortcut>
2945@@ -136,8 +136,8 @@
2946 <name>Ubuntu One</name>
2947 <runAsAdmin>0</runAsAdmin>
2948 <runInTerminal>0</runInTerminal>
2949- <windowsExec>${installdir}\dist\ubuntuone-installer-qt.exe</windowsExec>
2950- <windowsExecArgs></windowsExecArgs>
2951+ <windowsExec>${installdir}\dist\ubuntuone-control-panel-qt.exe</windowsExec>
2952+ <windowsExecArgs>--with-icon</windowsExecArgs>
2953 <windowsIcon>${installdir}/ubuntu_one.ico</windowsIcon>
2954 <windowsPath>${windows_folder_desktopdirectory}</windowsPath>
2955 </startMenuShortcut>
2956@@ -228,7 +228,7 @@
2957 </registrySet>
2958 <runProgram>
2959 <program>${windows_folder_system}\RunDll32.exe</program>
2960- <programArguments>"${installdir}\dist\VistaLib32.dll" RunNonElevated "${installdir}\dist\ubuntuone-installer-qt.exe" --installer &amp;</programArguments>
2961+ <programArguments>"${installdir}\dist\VistaLib32.dll" RunNonElevated "${installdir}\dist\ubuntuone-control-panel-qt.exe" --installer --with-icon &amp;</programArguments>
2962 <useMSDOSPath>0</useMSDOSPath>
2963 <ruleList>
2964 <compareText>
2965@@ -243,7 +243,7 @@
2966 </runProgram>
2967 <runProgram>
2968 <program>${windows_folder_system}\RunDll32.exe</program>
2969- <programArguments>"${installdir}\dist\VistaLib64.dll" RunNonElevated "${installdir}\dist\ubuntuone-installer-qt.exe" --installer &amp;</programArguments>
2970+ <programArguments>"${installdir}\dist\VistaLib64.dll" RunNonElevated "${installdir}\dist\ubuntuone-control-panel-qt.exe" --installer --with-icon &amp;</programArguments>
2971 <useMSDOSPath>0</useMSDOSPath>
2972 <ruleList>
2973 <compareText>
2974@@ -256,6 +256,7 @@
2975 </platformTest>
2976 </ruleList>
2977 </runProgram>
2978+ <!-- TODO: remove this showInfo? -->
2979 <showInfo>
2980 <text>Please reboot to finish upgrade.</text>
2981 <ruleList>
2982
2983=== modified file 'scripts/ubuntuone_autoupdate.xml'
2984--- scripts/ubuntuone_autoupdate.xml 2011-12-14 20:42:38 +0000
2985+++ scripts/ubuntuone_autoupdate.xml 2012-04-06 02:37:24 +0000
2986@@ -2,7 +2,7 @@
2987 <fullName>Ubuntu One</fullName>
2988 <shortName>ubuntuone</shortName>
2989 <vendor>Canonical</vendor>
2990- <version>203</version>
2991+ <version>1000</version>
2992 <singleInstanceCheck>1</singleInstanceCheck>
2993 <requireInstallationByRootUser>0</requireInstallationByRootUser>
2994 <requestedExecutionLevel>asInvoker</requestedExecutionLevel>
2995
2996=== added file 'setup.py'
2997--- setup.py 1970-01-01 00:00:00 +0000
2998+++ setup.py 2012-04-06 02:37:24 +0000
2999@@ -0,0 +1,37 @@
3000+#!/usr/bin/env python
3001+#
3002+# Copyright 2010-2012 Canonical Ltd.
3003+#
3004+# This program is free software: you can redistribute it and/or modify it
3005+# under the terms of the GNU General Public License version 3, as published
3006+# by the Free Software Foundation.
3007+#
3008+# This program is distributed in the hope that it will be useful, but
3009+# WITHOUT ANY WARRANTY; without even the implied warranties of
3010+# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3011+# PURPOSE. See the GNU General Public License for more details.
3012+#
3013+# You should have received a copy of the GNU General Public License along
3014+# with this program. If not, see <http://www.gnu.org/licenses/>.
3015+
3016+"""Setup.py: build, distribute, clean."""
3017+
3018+try:
3019+ import DistUtilsExtra.auto
3020+except ImportError:
3021+ print >> sys.stderr, 'To build this program you need '\
3022+ 'https://launchpad.net/python-distutils-extra'
3023+ sys.exit(1)
3024+assert DistUtilsExtra.auto.__version__ >= '2.18', \
3025+ 'needs DistUtilsExtra.auto >= 2.18'
3026+
3027+DistUtilsExtra.auto.setup(
3028+ name='ubuntuone-windows-installer',
3029+ version='2.99.91',
3030+ license='GPL v3',
3031+ author='Roberto Alsina',
3032+ author_email='roberto.alsina@canonical.com',
3033+ description='Ubuntu One Windows Installer',
3034+ long_description='Scripts to build the Ubuntu One windows installer.',
3035+ url='https://launchpad.net/ubuntuone-windows-installer',
3036+)
3037
3038=== removed file 'setup.py'
3039--- setup.py 2012-03-21 14:10:27 +0000
3040+++ setup.py 1970-01-01 00:00:00 +0000
3041@@ -1,249 +0,0 @@
3042-#!/usr/bin/env python
3043-# setup.py - Build system for Ubuntu One Installer package
3044-#
3045-# Authors: Natalia B. Bidart <natalia.bidart@canonical.com>
3046-# Manuel de la Pena <manuel@canonical.com>
3047-# Alejandro J. Cura <alecu@canonical.com>
3048-#
3049-# Copyright 2010-2011 Canonical Ltd.
3050-#
3051-# This program is free software: you can redistribute it and/or modify it
3052-# under the terms of the GNU General Public License version 3, as published
3053-# by the Free Software Foundation.
3054-#
3055-# This program is distributed in the hope that it will be useful, but
3056-# WITHOUT ANY WARRANTY; without even the implied warranties of
3057-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3058-# PURPOSE. See the GNU General Public License for more details.
3059-#
3060-# You should have received a copy of the GNU General Public License along
3061-# with this program. If not, see <http://www.gnu.org/licenses/>.
3062-"""Setup.py: build, distribute, clean."""
3063-
3064-# pylint: disable=W0404
3065-
3066-import os
3067-import sys
3068-
3069-try:
3070- import DistUtilsExtra.auto
3071- from DistUtilsExtra.command import build_extra
3072-except ImportError:
3073- print >> sys.stderr, 'To build this program you need '\
3074- 'https://launchpad.net/python-distutils-extra'
3075- sys.exit(1)
3076-assert DistUtilsExtra.auto.__version__ >= '2.18', \
3077- 'needs DistUtilsExtra.auto >= 2.18'
3078-
3079-from distutils import log
3080-
3081-POT_FILE = 'po/ubuntuone-installer.pot'
3082-MESSAGE_ENTRY = 'ubuntuone-installer'
3083-CONSTANTS = 'ubuntuone_installer/constants.py'
3084-
3085-CLEANFILES = [
3086- MESSAGE_ENTRY, CONSTANTS, POT_FILE,
3087- 'MANIFEST']
3088-QT_UI_DIR = os.path.join('ubuntuone_installer', 'gui', 'qt', 'ui')
3089-
3090-
3091-def replace_prefix(prefix):
3092- """Replace every '@prefix@' with prefix within 'filename' content."""
3093- # replace .service file, DATA_DIR constant
3094- for filename in (MESSAGE_ENTRY, CONSTANTS):
3095- with open(filename + '.in') as in_file:
3096- content = in_file.read()
3097- with open(filename, 'w') as out_file:
3098- out_file.write(content.replace('@prefix@', prefix))
3099-
3100-
3101-class InstallerInstall(DistUtilsExtra.auto.install_auto):
3102- """Class to install proper files."""
3103-
3104- def run(self):
3105- """Do the install.
3106-
3107- Read from *.service.in and generate .service files by replacing
3108- @prefix@ by self.prefix.
3109-
3110- """
3111- replace_prefix(self.prefix)
3112- DistUtilsExtra.auto.install_auto.run(self)
3113-
3114-
3115-class InstallerBuild(build_extra.build_extra):
3116- """Build PyQt (.ui) files and resources."""
3117-
3118- description = "build PyQt GUIs (.ui) and resources (.qrc)"
3119-
3120- def compile_ui(self, ui_file, py_file=None):
3121- """Compile the .ui files to python modules."""
3122- # Search for pyuic4 in python bin dir, then in the $Path.
3123- if py_file is None:
3124- # go from the ui_file in the data folder to the
3125- # python file in the qt moodule
3126- py_file = os.path.split(ui_file)[1]
3127- py_file = os.path.splitext(py_file)[0] + '_ui.py'
3128- py_file = os.path.join(QT_UI_DIR, py_file)
3129- # we indeed want to catch Exception, is ugly but we need it
3130- # pylint: disable=W0703
3131- try:
3132- # import the uic compiler from pyqt and generate the .py files
3133- # something similar could be done with pyside but that is left
3134- # as an exercise for the reader.
3135- from PyQt4 import uic
3136- fp = open(py_file, 'w')
3137- uic.compileUi(ui_file, fp)
3138- fp.close()
3139- log.info('Compiled %s into %s', ui_file, py_file)
3140- except Exception, e:
3141- self.warn('Unable to compile user interface %s: %s' % (py_file, e))
3142- if not os.path.exists(py_file) or not file(py_file).read():
3143- raise SystemExit(1)
3144- return
3145- # pylint: enable=W0703
3146-
3147- def compile_rc(self, qrc_file, py_file=None):
3148- """Compile the resources that will be included with the project."""
3149- import PyQt4
3150- # Search for pyuic4 in python bin dir, then in the $Path.
3151- if py_file is None:
3152- py_file = os.path.split(qrc_file)[1]
3153- py_file = os.path.splitext(py_file)[0] + '_rc.py'
3154- py_file = os.path.join(QT_UI_DIR, py_file)
3155- path = os.getenv('PATH')
3156- os.putenv('PATH', path + os.path.pathsep + os.path.join(
3157- os.path.dirname(PyQt4.__file__), 'bin'))
3158- if os.system('pyrcc4 -no-compress "%s" -o "%s"' %
3159- (qrc_file, py_file)) > 0:
3160- self.warn('Unable to generate python module {py_file}'
3161- ' for resource file {qrc_file}'.format(
3162- py_file=py_file, qrc_file=qrc_file))
3163- if not os.path.exists(py_file) or not file(py_file).read():
3164- raise SystemExit(1)
3165- else:
3166- log.info('compiled %s into %s' % (qrc_file, py_file))
3167- os.putenv('PATH', path)
3168-
3169- def _generate_qrc(self, qrc_file, srcfiles, prefix):
3170- """Generate the qrc file for the given src files."""
3171- basedir = os.path.dirname(qrc_file)
3172- f = open(qrc_file, 'w')
3173- try:
3174- f.write('<!DOCTYPE RCC><RCC version="1.0">\n')
3175- import cgi
3176- f.write(' <qresource prefix="%s">\n' % cgi.escape(prefix))
3177- for e in srcfiles:
3178- relpath = e[len(basedir) + 1:]
3179- f.write(' <file>%s</file>\n'
3180- % cgi.escape(relpath.replace(os.path.sep, '/')))
3181- f.write(' </qresource>\n')
3182- f.write('</RCC>\n')
3183- finally:
3184- f.close()
3185-
3186- def build_rc(self, py_file, basedir, prefix='/'):
3187- """Generate compiled resource including any files under basedir"""
3188- # For details, see http://doc.qt.nokia.com/latest/resources.html
3189- qrc_file = os.path.join(basedir, '%s.qrc' % os.path.basename(basedir))
3190- srcfiles = [os.path.join(root, e)
3191- for root, _dirs, files in os.walk(basedir) for e in files]
3192- # NOTE: Here we cannot detect deleted files. In such cases, we need
3193- # to remove .qrc manually.
3194- try:
3195- self._generate_qrc(qrc_file, srcfiles, prefix)
3196- self.compile_rc(qrc_file, py_file)
3197- finally:
3198- os.unlink(qrc_file)
3199-
3200- def run(self):
3201- """Execute the command."""
3202- self._wrapuic()
3203- basepath = os.path.join('data', 'qt')
3204- # TODO: build the resource files so that we can include them
3205- #self.build_rc(os.path.join(basepath, 'icons_rc.py'),
3206- # os.path.join(os.path.dirname(__file__), 'icons'),
3207- # '/icons')
3208- for dirpath, _, filenames in os.walk(basepath):
3209- for filename in filenames:
3210- if filename.endswith('.ui'):
3211- self.compile_ui(os.path.join(dirpath, filename))
3212- elif filename.endswith('.qrc'):
3213- self.compile_rc(os.path.join(dirpath, filename))
3214-
3215- build_extra.build_extra.run(self)
3216-
3217- # pylint: disable=E1002
3218- _wrappeduic = False
3219-
3220- @classmethod
3221- def _wrapuic(cls):
3222- """Wrap uic to use gettext's _() in place of tr()"""
3223- if cls._wrappeduic:
3224- return
3225-
3226- from PyQt4.uic.Compiler import compiler, qtproxies, indenter
3227-
3228- # pylint: disable=C0103
3229- class _UICompiler(compiler.UICompiler):
3230- """Speciallized compiler for qt .ui files."""
3231- def createToplevelWidget(self, classname, widgetname):
3232- o = indenter.getIndenter()
3233- o.level = 0
3234- o.write('from gettext import gettext as _')
3235- return super(_UICompiler, self).createToplevelWidget(classname,
3236- widgetname)
3237- compiler.UICompiler = _UICompiler
3238-
3239- class _i18n_string(qtproxies.i18n_string):
3240- """Provide a translated text."""
3241-
3242- def __str__(self):
3243- return "_('%s')" % self.string.encode('string-escape')
3244-
3245- qtproxies.i18n_string = _i18n_string
3246-
3247- cls._wrappeduic = True
3248- # pylint: enable=C0103
3249- # pylint: enable=E1002
3250-
3251-
3252-class InstallerClean(DistUtilsExtra.auto.clean_build_tree):
3253- """Class to clean up after the build."""
3254-
3255- def run(self):
3256- """Clean up the built files."""
3257- for built_file in CLEANFILES:
3258- if os.path.exists(built_file):
3259- os.unlink(built_file)
3260-
3261- for dirpath, _, filenames in os.walk(os.path.join(QT_UI_DIR)):
3262- for current_file in filenames:
3263- if current_file.endswith('_ui.py') or\
3264- current_file.endswith('_rc.py'):
3265- os.unlink(os.path.join(dirpath, current_file))
3266-
3267- DistUtilsExtra.auto.clean_build_tree.run(self)
3268-
3269-
3270-DistUtilsExtra.auto.setup(
3271- name='ubuntuone-windows-installer',
3272- version='2.99.91',
3273- license='GPL v3',
3274- author='Roberto Alsina',
3275- author_email='roberto.alsina@canonical.com',
3276- description='Ubuntu One Install Wizard',
3277- long_description='Application to perform initial setup of a '
3278- 'Ubuntu One account.',
3279- url='https://launchpad.net/ubuntuone-windows-installer',
3280- packages=[
3281- 'ubuntuone_installer', 'ubuntuone_installer.gui',
3282- 'ubuntuone_installer.gui.qt',
3283- ],
3284- extra_path='ubuntuone_installer',
3285- cmdclass={
3286- 'install': InstallerInstall,
3287- 'build': InstallerBuild,
3288- 'clean': InstallerClean,
3289- },
3290-)
3291
3292=== removed directory 'ubuntuone_installer'
3293=== removed file 'ubuntuone_installer/__init__.py'
3294--- ubuntuone_installer/__init__.py 2011-06-22 10:47:08 +0000
3295+++ ubuntuone_installer/__init__.py 1970-01-01 00:00:00 +0000
3296@@ -1,27 +0,0 @@
3297-# -*- coding: utf-8 -*-
3298-
3299-# Authors: Natalia B Bidart <natalia.bidart@canonical.com>
3300-# Authors: Alejandro J. Cura <alecu@canonical.com>
3301-#
3302-# Copyright 2010 Canonical Ltd.
3303-#
3304-# This program is free software: you can redistribute it and/or modify it
3305-# under the terms of the GNU General Public License version 3, as published
3306-# by the Free Software Foundation.
3307-#
3308-# This program is distributed in the hope that it will be useful, but
3309-# WITHOUT ANY WARRANTY; without even the implied warranties of
3310-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3311-# PURPOSE. See the GNU General Public License for more details.
3312-#
3313-# You should have received a copy of the GNU General Public License along
3314-# with this program. If not, see <http://www.gnu.org/licenses/>.
3315-
3316-"""The windows installer for Ubuntu One.
3317-
3318-The installer is a wizard that sets up the basic account and configuration for
3319-a Ubuntu One user on windows.
3320-"""
3321-
3322-# constants
3323-TRANSLATION_DOMAIN = 'ubuntuone-installer'
3324
3325=== removed directory 'ubuntuone_installer/gui'
3326=== removed file 'ubuntuone_installer/gui/__init__.py'
3327--- ubuntuone_installer/gui/__init__.py 2011-09-05 21:12:02 +0000
3328+++ ubuntuone_installer/gui/__init__.py 1970-01-01 00:00:00 +0000
3329@@ -1,35 +0,0 @@
3330-# -*- coding: utf-8 -*-
3331-
3332-# Authors: Natalia B Bidart <natalia.bidart@canonical.com>
3333-#
3334-# Copyright 2011 Canonical Ltd.
3335-#
3336-# This program is free software: you can redistribute it and/or modify it
3337-# under the terms of the GNU General Public License version 3, as published
3338-# by the Free Software Foundation.
3339-#
3340-# This program is distributed in the hope that it will be useful, but
3341-# WITHOUT ANY WARRANTY; without even the implied warranties of
3342-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3343-# PURPOSE. See the GNU General Public License for more details.
3344-#
3345-# You should have received a copy of the GNU General Public License along
3346-# with this program. If not, see <http://www.gnu.org/licenses/>.
3347-
3348-"""The Installer UI for Ubuntu One."""
3349-
3350-import gettext
3351-
3352-_ = gettext.gettext
3353-
3354-ARE_YOU_SURE_1 = _("You can restart the setup process at any time "
3355- "by clicking on Ubuntu One in your Start menu.")
3356-ARE_YOU_SURE_2 = _("If you need to know more about Ubuntu One, then please "
3357- "go to %(url)s")
3358-LOCAL_FOLDERS_TITLE = _("Syncing your computer with the cloud")
3359-LOCAL_FOLDERS_SPACE_HEADER = _("Space (%s)")
3360-LOCAL_FOLDERS_OFFER_LABEL = _("The folders you have selected to sync "
3361- "take over your %(quota)s space. You can remove some folders or add "
3362- "some extra space")
3363-LOCAL_FOLDERS_CALCULATING = _("Calculating")
3364-NEXT = _("Next")
3365
3366=== removed directory 'ubuntuone_installer/gui/qt'
3367=== removed file 'ubuntuone_installer/gui/qt/__init__.py'
3368--- ubuntuone_installer/gui/qt/__init__.py 2011-09-02 13:36:36 +0000
3369+++ ubuntuone_installer/gui/qt/__init__.py 1970-01-01 00:00:00 +0000
3370@@ -1,36 +0,0 @@
3371-# -*- coding: utf-8 -*-
3372-
3373-# Authors: Natalia B Bidart <natalia.bidart@canonical.com>
3374-#
3375-# Copyright 2010 Canonical Ltd.
3376-#
3377-# This program is free software: you can redistribute it and/or modify it
3378-# under the terms of the GNU General Public License version 3, as published
3379-# by the Free Software Foundation.
3380-#
3381-# This program is distributed in the hope that it will be useful, but
3382-# WITHOUT ANY WARRANTY; without even the implied warranties of
3383-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3384-# PURPOSE. See the GNU General Public License for more details.
3385-#
3386-# You should have received a copy of the GNU General Public License along
3387-# with this program. If not, see <http://www.gnu.org/licenses/>.
3388-
3389-"""The Qt graphical interface for the Ubuntu One Installer."""
3390-
3391-
3392-LICENSE_CONTENT = """<html>
3393- <body style="font-family:Ubuntu">
3394- <h2>License Agreement</h2>
3395- <p>This program is free software: you can redistribute it and/or modify
3396- it under the terms of the GNU General Public License version 3, as
3397- published by the Free Software Foundation.</p>
3398- <p>Ubuntu One Basic is free, while additional service add-ons may be
3399- paid for services.</p>
3400- <p>As free software, this programme is distributed without warranty.
3401- See the GNU General Public License for more details at
3402- <a href='http://www.gnu.org/licenses'
3403- style="color:#dd4814;">http://www.gnu.org/licenses</a>
3404- </p>
3405- </body>
3406-<html>"""
3407
3408=== removed file 'ubuntuone_installer/gui/qt/are_you_sure.py'
3409--- ubuntuone_installer/gui/qt/are_you_sure.py 2011-07-27 15:09:28 +0000
3410+++ ubuntuone_installer/gui/qt/are_you_sure.py 1970-01-01 00:00:00 +0000
3411@@ -1,47 +0,0 @@
3412-# -*- coding: utf-8 -*-
3413-
3414-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
3415-#
3416-# Copyright 2011 Canonical Ltd.
3417-#
3418-# This program is free software: you can redistribute it and/or modify it
3419-# under the terms of the GNU General Public License version 3, as published
3420-# by the Free Software Foundation.
3421-#
3422-# This program is distributed in the hope that it will be useful, but
3423-# WITHOUT ANY WARRANTY; without even the implied warranties of
3424-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3425-# PURPOSE. See the GNU General Public License for more details.
3426-#
3427-# You should have received a copy of the GNU General Public License along
3428-# with this program. If not, see <http://www.gnu.org/licenses/>.
3429-
3430-"""The "Are you sure" dialog."""
3431-
3432-import gettext
3433-
3434-from PyQt4 import QtGui
3435-
3436-from ubuntuone.platform.credentials import APP_NAME
3437-
3438-from ubuntuone_installer.gui.qt.ui import are_you_sure_ui
3439-from ubuntuone_installer.gui import (
3440- ARE_YOU_SURE_1,
3441- ARE_YOU_SURE_2,
3442-)
3443-
3444-_ = gettext.gettext
3445-
3446-
3447-class AreYouSure(QtGui.QDialog):
3448-
3449- """A 'Are you sure?' dialog."""
3450-
3451- def __init__(self, *args, **kwargs):
3452- super(AreYouSure, self).__init__(*args, **kwargs)
3453- self.ui = are_you_sure_ui.Ui_Dialog()
3454- self.ui.setupUi(self)
3455- self.setWindowTitle(APP_NAME)
3456- link = u'<a href="https://one.ubuntu.com">https://one.ubuntu.com</a>'
3457- msg = (u"%s<p>%s" % (ARE_YOU_SURE_1, ARE_YOU_SURE_2)) % {"url": link}
3458- self.ui.message_label.setText(msg)
3459
3460=== removed file 'ubuntuone_installer/gui/qt/currentuser.py'
3461--- ubuntuone_installer/gui/qt/currentuser.py 2011-08-02 20:16:28 +0000
3462+++ ubuntuone_installer/gui/qt/currentuser.py 1970-01-01 00:00:00 +0000
3463@@ -1,55 +0,0 @@
3464-# -*- coding: utf-8 -*-
3465-
3466-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
3467-#
3468-# Copyright 2011 Canonical Ltd.
3469-#
3470-# This program is free software: you can redistribute it and/or modify it
3471-# under the terms of the GNU General Public License version 3, as published
3472-# by the Free Software Foundation.
3473-#
3474-# This program is distributed in the hope that it will be useful, but
3475-# WITHOUT ANY WARRANTY; without even the implied warranties of
3476-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3477-# PURPOSE. See the GNU General Public License for more details.
3478-#
3479-# You should have received a copy of the GNU General Public License along
3480-# with this program. If not, see <http://www.gnu.org/licenses/>.
3481-
3482-"""Custom controller for current user page."""
3483-
3484-from twisted.internet.defer import inlineCallbacks
3485-
3486-from ubuntu_sso.qt import controllers
3487-
3488-from ubuntuone.platform.credentials import (
3489- CredentialsManagementTool,
3490- CredentialsError,
3491-)
3492-
3493-from ubuntuone_installer.logger import setup_logging
3494-
3495-# Invalid name logger
3496-# pylint: disable=C0103
3497-logger = setup_logging('qt.currentuser')
3498-# pylint: enable=C0103
3499-
3500-
3501-class CurrentUserController(controllers.CurrentUserController):
3502- """Custom controller for current user page."""
3503-
3504- @inlineCallbacks
3505- def login(self, *args):
3506- """Perform the login using the self.backend."""
3507- email = unicode(self.view.ui.email_edit.text())
3508- password = unicode(self.view.ui.password_edit.text())
3509- credtool = CredentialsManagementTool()
3510- try:
3511- d = yield credtool.login_email_password(
3512- email=email,
3513- password=password,
3514- )
3515- self.on_logged_in(self.view.wizard().app_name, d)
3516- except CredentialsError, e:
3517- logger.exception("Error getting credentials:")
3518- self.on_login_error(e.args[0])
3519
3520=== removed file 'ubuntuone_installer/gui/qt/enhanced_check_box.py'
3521--- ubuntuone_installer/gui/qt/enhanced_check_box.py 2011-08-29 13:48:32 +0000
3522+++ ubuntuone_installer/gui/qt/enhanced_check_box.py 1970-01-01 00:00:00 +0000
3523@@ -1,50 +0,0 @@
3524-# -*- coding: utf-8 -*-
3525-
3526-# Authors: Diego Sarmentero <diego.sarmentero@canonical.com>
3527-#
3528-# Copyright 2011 Canonical Ltd.
3529-#
3530-# This program is free software: you can redistribute it and/or modify it
3531-# under the terms of the GNU General Public License version 3, as published
3532-# by the Free Software Foundation.
3533-#
3534-# This program is distributed in the hope that it will be useful, but
3535-# WITHOUT ANY WARRANTY; without even the implied warranties of
3536-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3537-# PURPOSE. See the GNU General Public License for more details.
3538-#
3539-# You should have received a copy of the GNU General Public License along
3540-# with this program. If not, see <http://www.gnu.org/licenses/>.
3541-
3542-"""Customized Check Box to support links."""
3543-
3544-from PyQt4 import QtGui
3545-
3546-
3547-class EnhancedCheckBox(QtGui.QCheckBox):
3548- """Enhanced QCheckBox to support links in the message displayed."""
3549-
3550- def __init__(self, text=""):
3551- QtGui.QCheckBox.__init__(self)
3552- hbox = QtGui.QHBoxLayout()
3553- self.text_label = QtGui.QLabel(text)
3554- self.text_label.setOpenExternalLinks(True)
3555- padding = self.iconSize().width()
3556- self.text_label.setStyleSheet("padding-left: {0}px;".format(padding))
3557- hbox.addWidget(self.text_label)
3558- self.setLayout(hbox)
3559-
3560- self.stateChanged.connect(self.text_label.setFocus)
3561-
3562- def text(self):
3563- """Return the text of this widget."""
3564- return self.text_label.text()
3565-
3566- # Invalid name "setText"
3567- # pylint: disable=C0103
3568-
3569- def setText(self, text):
3570- """Set a new text to this widget."""
3571- self.text_label.setText(text)
3572-
3573- # pylint: enable=C0103
3574
3575=== removed file 'ubuntuone_installer/gui/qt/folders.py'
3576--- ubuntuone_installer/gui/qt/folders.py 2011-09-09 14:39:55 +0000
3577+++ ubuntuone_installer/gui/qt/folders.py 1970-01-01 00:00:00 +0000
3578@@ -1,71 +0,0 @@
3579-# -*- coding: utf-8 -*-
3580-
3581-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
3582-# Diego Sarmentero <diego.sarmentero@canonical.com>
3583-#
3584-# Copyright 2011 Canonical Ltd.
3585-#
3586-# This program is free software: you can redistribute it and/or modify it
3587-# under the terms of the GNU General Public License version 3, as published
3588-# by the Free Software Foundation.
3589-#
3590-# This program is distributed in the hope that it will be useful, but
3591-# WITHOUT ANY WARRANTY; without even the implied warranties of
3592-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3593-# PURPOSE. See the GNU General Public License for more details.
3594-#
3595-# You should have received a copy of the GNU General Public License along
3596-# with this program. If not, see <http://www.gnu.org/licenses/>.
3597-
3598-"""Page to list folders in a Ubuntu One account."""
3599-
3600-import gettext
3601-
3602-from PyQt4 import QtGui, QtCore
3603-from ubuntu_sso.qt.gui import SSOWizardPage
3604-from ubuntuone.controlpanel.gui.qt import folders
3605-
3606-from ubuntuone_installer.gui import NEXT
3607-from ubuntuone_installer.gui.qt.ui import folders_ui
3608-
3609-_ = gettext.gettext
3610-
3611-
3612-class FoldersPage(SSOWizardPage):
3613- """Wizard page to list and manage an account's folders."""
3614-
3615- def __init__(self, parent=None):
3616- super(FoldersPage, self).__init__(folders_ui.Ui_Form(), None, parent)
3617- self.setTitle(_("Syncing the cloud to your computer"))
3618- self.setSubTitle(_("These are your folders in your cloud. "
3619- "Select the ones you want to sync with this computer."))
3620- self.folders_widget = folders.FoldersPanel()
3621- self.layout().insertWidget(
3622- self.layout().count() - 1, self.folders_widget)
3623- self.folders_widget.ui.share_publish_button.hide()
3624- self.folders_widget.ui.add_folder_button.hide()
3625- self.folders_widget.ui.folders.setHeaderHidden(True)
3626- self.folders_widget.ui.folders.setColumnHidden(2, True)
3627-
3628- # Invalid name "initializePage"
3629- # pylint: disable=C0103
3630-
3631- def initializePage(self):
3632- """Set Folders Page navigation buttons."""
3633- self.wizard().setOption(QtGui.QWizard.HaveCustomButton1, False)
3634- self.wizard().setOption(QtGui.QWizard.HaveCustomButton2, False)
3635- self.wizard().setButtonLayout([
3636- QtGui.QWizard.Stretch,
3637- QtGui.QWizard.NextButton])
3638- self.wizard().setButtonText(QtGui.QWizard.NextButton,
3639- NEXT)
3640- self.wizard()._next_id = self.wizard().local_folders_page_id
3641-
3642- # pylint: enable=C0103
3643-
3644- @QtCore.pyqtSlot()
3645- def on_check_settings_button_clicked(self):
3646- """Show the Preferences Page when the user click on Settings button."""
3647- self.wizard()._next_id = \
3648- self.wizard().preferences_page_id
3649- self.wizard().next()
3650
3651=== removed file 'ubuntuone_installer/gui/qt/forgotten.py'
3652--- ubuntuone_installer/gui/qt/forgotten.py 2011-09-21 18:24:39 +0000
3653+++ ubuntuone_installer/gui/qt/forgotten.py 1970-01-01 00:00:00 +0000
3654@@ -1,33 +0,0 @@
3655-# -*- coding: utf-8 -*-
3656-
3657-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
3658-#
3659-# Copyright 2011 Canonical Ltd.
3660-#
3661-# This program is free software: you can redistribute it and/or modify it
3662-# under the terms of the GNU General Public License version 3, as published
3663-# by the Free Software Foundation.
3664-#
3665-# This program is distributed in the hope that it will be useful, but
3666-# WITHOUT ANY WARRANTY; without even the implied warranties of
3667-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3668-# PURPOSE. See the GNU General Public License for more details.
3669-#
3670-# You should have received a copy of the GNU General Public License along
3671-# with this program. If not, see <http://www.gnu.org/licenses/>.
3672-
3673-"""Custom forgotten password controller."""
3674-
3675-from ubuntu_sso.qt import controllers
3676-
3677-
3678-class ForgottenPasswordController(controllers.ForgottenPasswordController):
3679- """A custom forgotten password controller.
3680-
3681- This controller hides the overlay as needed.
3682- """
3683-
3684- def on_password_reset_error(self, app_name, error):
3685- """Hide the overlay, then do as the default controller does."""
3686- super(ForgottenPasswordController,
3687- self).on_password_reset_error(app_name, error)
3688
3689=== removed file 'ubuntuone_installer/gui/qt/gui.py'
3690--- ubuntuone_installer/gui/qt/gui.py 2012-01-26 14:41:56 +0000
3691+++ ubuntuone_installer/gui/qt/gui.py 1970-01-01 00:00:00 +0000
3692@@ -1,604 +0,0 @@
3693-# -*- coding: utf-8 -*-
3694-#
3695-# Copyright 2011 Canonical Ltd.
3696-#
3697-# This program is free software: you can redistribute it and/or modify it
3698-# under the terms of the GNU General Public License version 3, as published
3699-# by the Free Software Foundation.
3700-#
3701-# This program is distributed in the hope that it will be useful, but
3702-# WITHOUT ANY WARRANTY; without even the implied warranties of
3703-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
3704-# PURPOSE. See the GNU General Public License for more details.
3705-#
3706-# You should have received a copy of the GNU General Public License along
3707-# with this program. If not, see <http://www.gnu.org/licenses/>.
3708-
3709-"""The user interface for the Ubuntu One Installer."""
3710-
3711-import gettext
3712-
3713-from twisted.internet import defer
3714-from PyQt4 import QtGui, QtCore
3715-
3716-from ubuntu_sso import networkstate
3717-from ubuntu_sso.qt.gui import (
3718- SSOWizardPage,
3719- EmailVerificationPage,
3720- ErrorPage,
3721- ForgottenPasswordPage,
3722- ResetPasswordPage,
3723-)
3724-from ubuntu_sso.utils.ui import (
3725- SUCCESS,
3726-)
3727-from ubuntu_sso.qt.current_user_sign_in_ui import \
3728- Ui_CurrentUserSignInPage
3729-from ubuntu_sso.qt.email_verification_ui import \
3730- Ui_EmailVerificationPage
3731-from ubuntu_sso.qt.error_message_ui import Ui_ErrorPage
3732-from ubuntu_sso.qt.success_message_ui import Ui_SuccessPage
3733-from ubuntu_sso.qt.forgotten_password_ui import \
3734- Ui_ForgottenPasswordPage
3735-from ubuntu_sso.qt.reset_password_ui import Ui_ResetPasswordPage
3736-from ubuntu_sso.qt.controllers import (
3737- ChooseSignInController,
3738- EmailVerificationController,
3739- ErrorController,
3740- ResetPasswordController,
3741- SetUpAccountController,
3742- SuccessController,
3743-)
3744-
3745-from ubuntuone.controlpanel import backend
3746-from ubuntuone.controlpanel.gui.qt.loadingoverlay import LoadingOverlay
3747-
3748-from ubuntuone.platform.credentials import (
3749- APP_NAME,
3750- TC_URL,
3751-)
3752-
3753-# Module used to include the resources into this file
3754-# pylint: disable=W0611
3755-from ubuntuone_installer.gui.qt.ui import images_rc
3756-# pylint: enable=W0611
3757-from ubuntuone_installer.logger import setup_logging
3758-from ubuntuone_installer.gui.qt.ui import (
3759- choose_sign_in_ui,
3760- congratulations_ui,
3761- license_ui,
3762- setup_account_ui,
3763-)
3764-
3765-from ubuntuone_installer.gui import qt
3766-from ubuntuone_installer.gui.qt.are_you_sure import AreYouSure
3767-from ubuntuone_installer.gui.qt.currentuser import CurrentUserController
3768-from ubuntuone_installer.gui.qt.folders import FoldersPage
3769-from ubuntuone_installer.gui.qt.forgotten import ForgottenPasswordController
3770-from ubuntuone_installer.gui.qt.local_folders import LocalFoldersPage
3771-from ubuntuone_installer.gui.qt.network_detection import NetworkDetectionPage
3772-from ubuntuone_installer.gui.qt.preferences import PreferencesPage
3773-from ubuntuone_installer.gui.qt.sync_now_or_later import SyncNowOrLaterPage
3774-from ubuntuone_installer.gui.qt.setup_account import SetupAccountPage
3775-from ubuntuone_installer.gui.qt.side_widget import SideWidget
3776-
3777-_ = gettext.gettext
3778-CONGRATULATIONS = _("Congratulations")
3779-CREDENTIALS_ERROR_TITLE = _("Error getting credentials")
3780-CREDENTIALS_ERROR = _('Application will close.\n\n%r')
3781-SIGN_IN = _("Sign in to Ubuntu One")
3782-SIGN_IN_SUBTITLE = _("Sign in with your existing Ubuntu One"
3783- " username and password.")
3784-SKIP_TOUR = _("Skip tour, go to Dashboard")
3785-START_SETUP = _("Start setup")
3786-SUCCESSFUL_LOGIN = _("Login successful")
3787-TITLE_STYLE = "<span style=\"font-size:24px\">%s</span>"
3788-UPDATE_TITLE = _("Updates are available")
3789-UPDATE_SOFTWARE = _("There is a new version of Ubuntu One available. "
3790- "Do you want to perform an upgrade?")
3791-REMOVE_OLD_BETA_TITLE = _("Remove old Beta")
3792-REMOVE_OLD_BETA = _("The old Ubuntu One Beta is installed in your system. Do "
3793- "you want to uninstall it?")
3794-REMOVE_OLD_BETA_ERROR = _("There was an error uninstall the old beta. Please "
3795- "do this step manually")
3796-MIGRATE_OLD_BETA_DATA_TITLE = _("Migrate old data")
3797-MIGRATE_OLD_BETA = _("Do you want to migrate the files from the old Ubuntu "
3798- "One Beta location to the new one?")
3799-MIGRATE_OLD_BETA_DATA_ERROR = _("There was an error migrating your data. "
3800- "Please do this step manually.")
3801-
3802-# Invalid name logger
3803-# pylint: disable=C0103
3804-logger = setup_logging('qt.gui')
3805-# pylint: enable=C0103
3806-
3807-
3808-def _ask_user_question(title, question):
3809- """Ask the user a Yes/No question."""
3810- result = QtGui.QMessageBox.question(None, title, question,
3811- QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
3812- return result == QtGui.QMessageBox.Yes
3813-
3814-
3815-def user_wants_to_update():
3816- """Ask the user if he really wants to update the software."""
3817- return _ask_user_question(UPDATE_TITLE, UPDATE_SOFTWARE)
3818-
3819-
3820-def user_wants_to_remove_old_beta():
3821- """Ask the user if he really wants to remove the old beta."""
3822- return _ask_user_question(REMOVE_OLD_BETA_TITLE, REMOVE_OLD_BETA)
3823-
3824-
3825-def user_wants_to_migrate_data():
3826- """Ask the user if he really wants to migrate the data."""
3827- return _ask_user_question(MIGRATE_OLD_BETA_DATA_TITLE, MIGRATE_OLD_BETA)
3828-
3829-
3830-def _warn_user(title, message):
3831- """Warn the user."""
3832- QtGui.QMessageBox.warning(None, title, message, QtGui.QMessageBox.Ok)
3833-
3834-
3835-def warn_user_beta_not_removed():
3836- """Let the user know that the data was not migrated."""
3837- _warn_user(REMOVE_OLD_BETA_TITLE, REMOVE_OLD_BETA_ERROR)
3838-
3839-
3840-def warn_user_data_not_migrated():
3841- """Let the user know that the data was not migrated."""
3842- _warn_user(MIGRATE_OLD_BETA_DATA_TITLE, MIGRATE_OLD_BETA_DATA_ERROR)
3843-
3844-
3845-class LicensePage(SSOWizardPage):
3846- """Wizard Page that displays the license info and links to the GPL."""
3847-
3848- def __init__(self, parent=None):
3849- super(LicensePage, self).__init__(license_ui.Ui_Form(), None, parent)
3850- self.header.setVisible(False)
3851- self.ui.textBrowser.setHtml(qt.LICENSE_CONTENT)
3852- self.agree_button = None
3853-
3854- # Invalid names of Qt-inherited methods
3855- # pylint: disable=C0103
3856-
3857- def initializePage(self):
3858- """Setup UI details."""
3859- # Set the right texts and connections for buttons
3860- self.setButtonText(QtGui.QWizard.CustomButton1, _("Agree && continue"))
3861- self.setButtonText(QtGui.QWizard.CancelButton,
3862- _("Disagree && uninstall"))
3863-
3864- # This is just to catch an exception thrown when nothing
3865- # is connected to the signal. It's not an exceptional
3866- # condition at all.
3867- try:
3868- self.wizard().customButtonClicked.disconnect()
3869- except TypeError:
3870- pass
3871-
3872- self.wizard().setButtonLayout([
3873- QtGui.QWizard.CancelButton,
3874- QtGui.QWizard.BackButton,
3875- QtGui.QWizard.Stretch,
3876- QtGui.QWizard.CustomButton1])
3877-
3878- self.agree_button = self.wizard().button(QtGui.QWizard.CustomButton1)
3879- self.agree_button.setDefault(True)
3880- self.agree_button.style().unpolish(self.agree_button)
3881- self.agree_button.style().polish(self.agree_button)
3882- self.wizard().customButtonClicked.connect(self.check_connection)
3883-
3884- # pylint: disable=W0212
3885- @defer.inlineCallbacks
3886- def check_connection(self, button_id):
3887- """Decide next ID based on network detection."""
3888- if button_id == QtGui.QWizard.CustomButton1:
3889- connected = yield self.wizard().check_connection()
3890- if connected:
3891- self.next = self.wizard().SIGN_IN_PAGE_ID
3892- else:
3893- self.next = self.wizard()._next_id
3894- self.wizard().next()
3895- # pylint: enable=W0212
3896-
3897- def nextId(self):
3898- """Return the next page ID."""
3899- return self.next
3900-
3901-
3902-class SignInPage(SSOWizardPage):
3903- """Wizard Page that lets the user Sign into Ubuntu One."""
3904-
3905- # Invalid names of Qt-inherited methods
3906- # pylint: disable=C0103
3907-
3908- def initializePage(self):
3909- """Setup UI details."""
3910- self.ui.cancel_button.setText(_("Close window and setup later"))
3911- self.ui.cancel_button.clicked.connect(self.wizard().reject)
3912- # Layout without custom button 1,
3913- # without finish button
3914- # without cancel
3915- self.wizard().setButtonLayout([
3916- QtGui.QWizard.Stretch,
3917- QtGui.QWizard.NextButton])
3918-
3919- def showEvent(self, event):
3920- """Set existing_account_button as default when the page is shown."""
3921- super(SignInPage, self).showEvent(event)
3922- self.ui.existing_account_button.setDefault(True)
3923- self.ui.existing_account_button.style().unpolish(
3924- self.ui.existing_account_button)
3925- self.ui.existing_account_button.style().polish(
3926- self.ui.existing_account_button)
3927-
3928- def nextId(self):
3929- """Provide the next id."""
3930- return self.next
3931-
3932-
3933-class CurrentUserSignInPage(SSOWizardPage):
3934- """Wizard Page that lets a current user Sign into Ubuntu One."""
3935-
3936- # Invalid names of Qt-inherited methods
3937- # pylint: disable=C0103
3938-
3939- def nextId(self):
3940- """Provide the next id."""
3941- return self.next
3942-
3943- def initializePage(self):
3944- """Setup UI details."""
3945- self.setButtonText(QtGui.QWizard.CancelButton,
3946- _("Cancel"))
3947- # Layout without custom button 1,
3948- # without finish button
3949- self.wizard().setButtonLayout([
3950- QtGui.QWizard.BackButton,
3951- QtGui.QWizard.Stretch])
3952-
3953- # Set sign_in_button as default when the page is shown.
3954- self.ui.sign_in_button.setDefault(True)
3955- self.ui.sign_in_button.setEnabled(False)
3956- self.ui.sign_in_button.setProperty("DisabledState",
3957- not self.ui.sign_in_button.isEnabled())
3958- self.ui.sign_in_button.style().unpolish(
3959- self.ui.sign_in_button)
3960- self.ui.sign_in_button.style().polish(
3961- self.ui.sign_in_button)
3962-
3963- def cleanupPage(self):
3964- """Reset the state of the wizard if Verification code was visited."""
3965- self.wizard()._next_id = None
3966-
3967-
3968-class SuccessPage(SSOWizardPage):
3969- """Shown after SSO login, before setup."""
3970-
3971- # Invalid names of Qt-inherited methods
3972- # pylint: disable=C0103
3973-
3974- def __init__(self, parent=None):
3975- super(SuccessPage, self).__init__(
3976- Ui_SuccessPage(),
3977- SuccessController(title=SUCCESSFUL_LOGIN), parent)
3978- self.backend = backend.ControlBackend()
3979- self.finish_button = None
3980- self.next_button = None
3981- self.ui.image_label.setPixmap(
3982- QtGui.QPixmap(':/win_installer_graphic.png'))
3983-
3984- def initializePage(self):
3985- """Setup UI details."""
3986- self.wizard().setButtonLayout([
3987- QtGui.QWizard.Stretch,
3988- QtGui.QWizard.FinishButton,
3989- QtGui.QWizard.NextButton,
3990- ])
3991- self.setFinalPage(True)
3992- self.wizard().setButtonText(QtGui.QWizard.FinishButton,
3993- SKIP_TOUR)
3994- self.wizard().setButtonText(QtGui.QWizard.NextButton,
3995- START_SETUP)
3996- self.finish_button = self.wizard().button(QtGui.QWizard.FinishButton)
3997- self.next_button = self.wizard().button(QtGui.QWizard.NextButton)
3998- self.finish_button.style().unpolish(self.finish_button)
3999- self.finish_button.style().polish(self.finish_button)
4000- self.next_button.setDefault(True)
4001- self.next_button.style().unpolish(self.next_button)
4002- self.next_button.style().polish(self.next_button)
4003- self.backend.connect_files()
4004-
4005- self.ui.success_message_body.setText(
4006- SUCCESS % {'app_name': self.wizard().app_name})
4007-
4008- def nextId(self):
4009- """Provide the next id."""
4010- return self.next
4011-
4012-
4013-class CongratulationsPage(SSOWizardPage):
4014- """Final page of the wizard."""
4015-
4016- def __init__(self, parent=None):
4017- super(CongratulationsPage, self).__init__(
4018- congratulations_ui.Ui_Form(), None, parent)
4019- self.setFinalPage(True)
4020- self.setTitle(CONGRATULATIONS)
4021-
4022- # Invalid names of Qt-inherited methods
4023- # pylint: disable=C0103
4024-
4025- def initializePage(self):
4026- """Setup UI details."""
4027- # We need custom buttons
4028- self.wizard().setButtonText(QtGui.QWizard.FinishButton,
4029- _("Go to my Ubuntu One dashboard"))
4030- # Layout without custom button 1,
4031- self.wizard().setButtonLayout([
4032- QtGui.QWizard.Stretch,
4033- QtGui.QWizard.FinishButton])
4034- # Set FinishButton as default when the page is shown.
4035- self.wizard().button(QtGui.QWizard.FinishButton).setDefault(True)
4036- self.wizard().button(QtGui.QWizard.FinishButton).style().unpolish(
4037- self.wizard().button(QtGui.QWizard.FinishButton))
4038- self.wizard().button(QtGui.QWizard.FinishButton).style().polish(
4039- self.wizard().button(QtGui.QWizard.FinishButton))
4040-
4041- # Add syncdaemon to autostart
4042- qt.utils.add_syncdaemon_to_autostart()
4043-
4044-
4045-class MainWindow(QtGui.QWizard):
4046-
4047- """The Main Window of the Installer wizard."""
4048-
4049- # Invalid constant names and Qt-inherited methods
4050- # pylint: disable=C0103
4051-
4052- LICENSE_PAGE = 0
4053- SIGNIN_PAGE = 1
4054- SYNC_NOW_OR_LATER_PAGE = 2
4055- CONGRATULATIONS_PAGE = 3
4056-
4057- # definition of the signals raised by the widget (for SSO)
4058- recoverableError = QtCore.pyqtSignal('QString', 'QString')
4059- loginSuccess = QtCore.pyqtSignal('QString', 'QString')
4060- registrationIncomplete = QtCore.pyqtSignal('QString', 'QString')
4061- registrationSuccess = QtCore.pyqtSignal('QString', 'QString')
4062- userCancellation = QtCore.pyqtSignal('QString')
4063-
4064- def __init__(self, close_callback=None, installing=False):
4065- """Initialize this instance."""
4066- # Used to decide the next page dynamically
4067- self._next_id = None
4068-
4069- # Data for SSO
4070- self.app_name = APP_NAME
4071- self.tc_url = TC_URL
4072- # help_text is not displayed in the UI from design
4073- self.help_text = ""
4074-
4075- super(MainWindow, self).__init__()
4076- # Set windows flags
4077- flags = self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint
4078- self.setWindowFlags(flags)
4079-
4080- self.setWindowTitle(APP_NAME)
4081- self.setMinimumHeight(538)
4082- self.setMinimumWidth(740)
4083- self.setWizardStyle(self.ModernStyle)
4084- self.close_callback = close_callback
4085-
4086- # Label for Form Errors
4087- self.form_errors_label = QtGui.QLabel()
4088- self.form_errors_label.setObjectName("form_errors")
4089- self.form_errors_label.hide()
4090-
4091- self.setSideWidget(SideWidget())
4092- self.overlay = LoadingOverlay(self)
4093- self.overlay.hide()
4094-
4095- self.setOption(self.NoBackButtonOnStartPage, True)
4096-
4097- # PyQt doesn't support the (int, page) version of addPage, so
4098- # Add the pages in the right order
4099- # pylint: disable=C0103
4100- self.license_page = LicensePage()
4101- self.LICENSE_PAGE = self.addPage(self.license_page)
4102- self.network_page = NetworkDetectionPage()
4103-
4104- #SSO Pages
4105- title_page = TITLE_STYLE % SIGN_IN
4106- self.sign_in_controller = ChooseSignInController(
4107- title=title_page)
4108- self.sign_in_page = SignInPage(
4109- ui=choose_sign_in_ui.Ui_ChooseSignInPage(),
4110- controller=self.sign_in_controller,
4111- parent=self)
4112- if not installing:
4113- self.sign_in_page.ui.message_label.setText("")
4114-
4115- self.setup_controller = SetUpAccountController(message_box=self)
4116- self.setup_account = SetupAccountPage(
4117- setup_account_ui.Ui_SetUpAccountPage(),
4118- self.setup_controller,
4119- parent=self)
4120-
4121- email_controller = EmailVerificationController(message_box=self)
4122- email_verification_page = Ui_EmailVerificationPage()
4123- self.email_verification = EmailVerificationPage(
4124- email_verification_page,
4125- email_controller)
4126- self.email_verification.next_button.clicked.connect(
4127- self.overlay.show)
4128-
4129- title_page = TITLE_STYLE % SIGN_IN
4130- self.current_user_controller = CurrentUserController(
4131- title=title_page, subtitle=SIGN_IN_SUBTITLE,
4132- message_box=self)
4133- self.current_user = CurrentUserSignInPage(Ui_CurrentUserSignInPage(),
4134- self.current_user_controller,
4135- parent=self)
4136- self.current_user.ui.sign_in_button.clicked.connect(
4137- self.overlay.show)
4138-
4139- self.success = SuccessPage(self)
4140- self.error_controller = ErrorController()
4141- self.error = ErrorPage(Ui_ErrorPage(), self.error_controller)
4142-
4143- self.forgotten_pwd_controller = ForgottenPasswordController(
4144- message_box=self)
4145- self.forgotten = ForgottenPasswordPage(Ui_ForgottenPasswordPage(),
4146- self.forgotten_pwd_controller,
4147- parent=self)
4148- self.forgotten.ui.send_button.clicked.connect(
4149- self.overlay.show)
4150-
4151- self.reset_password_controller = ResetPasswordController(
4152- message_box=self)
4153- self.reset_password = ResetPasswordPage(Ui_ResetPasswordPage(),
4154- self.reset_password_controller,
4155- parent=self)
4156- self.reset_password.ui.reset_password_button.clicked.connect(
4157- self.overlay.show)
4158-
4159- self.SIGN_IN_PAGE_ID = self.addPage(self.sign_in_page)
4160- self.NETWORK_DETECTION_PAGE_ID = self.addPage(self.network_page)
4161- self.setup_account_page_id = self.addPage(self.setup_account)
4162- self.email_verification_page_id = self.addPage(self.email_verification)
4163- self.current_user_page_id = self.addPage(self.current_user)
4164- self.SUCCESS_PAGE = self.addPage(self.success)
4165- self.ERROR_PAGE = self.addPage(self.error)
4166- self.forgotten_password_page_id = self.addPage(self.forgotten)
4167- self.reset_password_page_id = self.addPage(self.reset_password)
4168-
4169- self.loginSuccess.connect(self.login_success_slot)
4170- self.registrationIncomplete.connect(self.registration_incomplete)
4171- self.registrationSuccess.connect(self.registration_success_slot)
4172-
4173- # End of SSO pages
4174-
4175- self.SYNC_NOW_OR_LATER_PAGE = self.addPage(SyncNowOrLaterPage())
4176- self.folders_page = FoldersPage()
4177- self.folders_page_id = self.addPage(self.folders_page)
4178- self.local_folders_page = LocalFoldersPage()
4179- self.local_folders_page_id = self.addPage(self.local_folders_page)
4180- self.preferences_page = PreferencesPage()
4181- self.preferences_page_id = self.addPage(self.preferences_page)
4182- self.CONGRATULATIONS_PAGE = self.addPage(CongratulationsPage())
4183-
4184- self.currentIdChanged.connect(self.on_currentIdChanged)
4185- # Set Wizard buttons style
4186- self.button(QtGui.QWizard.NextButton).setDefault(True)
4187-
4188- self.set_start_page(installing)
4189-
4190- # Invalid name "closeEvent"
4191- # pylint: disable=C0103
4192-
4193- @defer.inlineCallbacks
4194- def set_start_page(self, installing):
4195- """Set the Wizard start page based in some conditions."""
4196- connected = yield self.check_connection()
4197- if installing:
4198- self.setStartId(self.LICENSE_PAGE)
4199- elif connected:
4200- self.setStartId(self.SIGNIN_PAGE)
4201- else:
4202- self.setStartId(self._next_id)
4203- self.restart()
4204-
4205- def critical(self, message, page=None):
4206- """Show a message at the bottom of the page on form errors."""
4207- self.overlay.hide()
4208- self.form_errors_label.setText(message)
4209- self.form_errors_label.show()
4210- if page is None and self.currentPage():
4211- self.currentPage().layout().addWidget(self.form_errors_label)
4212- elif page is not None:
4213- page.layout().addWidget(self.form_errors_label)
4214-
4215- def next(self):
4216- """Show the next page to display and remove the form errors label."""
4217- self.overlay.hide()
4218- self.form_errors_label.hide()
4219- if self.currentPage().layout():
4220- self.currentPage().layout().removeWidget(self.form_errors_label)
4221- self.form_errors_label.setParent(None)
4222- super(MainWindow, self).next()
4223-
4224- def nextId(self):
4225- """Selects which page to display next."""
4226- if self._next_id is not None:
4227- return self._next_id
4228- else:
4229- return QtGui.QWizard.nextId(self)
4230-
4231- @defer.inlineCallbacks
4232- def check_connection(self):
4233- """Return is machine is connected, False set Network Page as next."""
4234- # pylint: disable=W0703
4235- connected = yield networkstate.is_machine_connected()
4236- if not connected:
4237- self._next_id = self.NETWORK_DETECTION_PAGE_ID
4238- defer.returnValue(connected)
4239- # pylint: enable=W0703
4240-
4241- def login_success_slot(self):
4242- """Called on successful login."""
4243- self._next_id = self.SUCCESS_PAGE
4244- self.next()
4245- self._next_id = self.SYNC_NOW_OR_LATER_PAGE
4246-
4247- def registration_incomplete(self):
4248- """Called when registration wasn't completed."""
4249- self._next_id = self.email_verification_page_id
4250- self.next()
4251- self._next_id = self.SUCCESS_PAGE
4252-
4253- def registration_success_slot(self):
4254- """Called on successful registration."""
4255- self._next_id = self.SUCCESS_PAGE
4256- self.next()
4257- self._next_id = self.SYNC_NOW_OR_LATER_PAGE
4258-
4259- def done(self, result):
4260- """The main window is being closed, call any custom callback."""
4261- # Finished, not cancelled
4262- if result == 1: # Cancelled
4263- qt.utils.start_control_panel()
4264- elif self.currentId() == self.LICENSE_PAGE:
4265- if AreYouSure(self).exec_() == QtGui.QDialog.Accepted:
4266- qt.utils.uninstall_application()
4267- else:
4268- return
4269- elif self.currentId() != self.CONGRATULATIONS_PAGE:
4270- if AreYouSure(self).exec_() == QtGui.QDialog.Rejected:
4271- return
4272- if self.close_callback is not None:
4273- self.close_callback()
4274- QtGui.QWizard.done(self, result)
4275- self.userCancellation.emit(self.app_name)
4276-
4277- def on_currentIdChanged(self, page_id):
4278- """The current page changed."""
4279- if page_id < self.SIGNIN_PAGE:
4280- self.sideWidget().ui.states_frame.hide()
4281- self.sideWidget().set_stage(0)
4282- elif page_id < self.SYNC_NOW_OR_LATER_PAGE:
4283- self.sideWidget().ui.states_frame.show()
4284- self.sideWidget().set_stage(1)
4285- elif page_id < self.CONGRATULATIONS_PAGE:
4286- self.sideWidget().set_stage(3)
4287- else:
4288- self.sideWidget().set_stage(4)
4289-
4290- # Invalid name "resizeEvent"
4291- # pylint: disable=C0103
4292-
4293- def resizeEvent(self, event):
4294- """Resize the overlay to fit all the widget."""
4295- QtGui.QWizard.resizeEvent(self, event)
4296- self.overlay.resize(event.size())
4297
4298=== removed file 'ubuntuone_installer/gui/qt/local_folders.py'
4299--- ubuntuone_installer/gui/qt/local_folders.py 2011-12-26 17:22:23 +0000
4300+++ ubuntuone_installer/gui/qt/local_folders.py 1970-01-01 00:00:00 +0000
4301@@ -1,310 +0,0 @@
4302-# -*- coding: utf-8 -*-
4303-
4304-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
4305-#
4306-# Copyright 2011 Canonical Ltd.
4307-#
4308-# This program is free software: you can redistribute it and/or modify it
4309-# under the terms of the GNU General Public License version 3, as published
4310-# by the Free Software Foundation.
4311-#
4312-# This program is distributed in the hope that it will be useful, but
4313-# WITHOUT ANY WARRANTY; without even the implied warranties of
4314-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4315-# PURPOSE. See the GNU General Public License for more details.
4316-#
4317-# You should have received a copy of the GNU General Public License along
4318-# with this program. If not, see <http://www.gnu.org/licenses/>.
4319-
4320-"""Widget to create UDFs in the Windows Install Wizard."""
4321-
4322-import os
4323-import threading
4324-import Queue
4325-
4326-from twisted.internet.defer import inlineCallbacks, returnValue
4327-from PyQt4 import QtGui, QtCore
4328-from ubuntuone.controlpanel import backend
4329-from ubuntuone.controlpanel.gui import (
4330- humanize,
4331- sign_url,
4332- FOLDER_INVALID_PATH,
4333-)
4334-from ubuntuone.controlpanel.web_client.txwebclient import timestamp_checker
4335-from ubuntuone.platform.credentials import CredentialsManagementTool
4336-from ubuntu_sso.qt.gui import SSOWizardPage
4337-
4338-from ubuntuone_installer.gui.qt.ui import local_folders_ui
4339-from ubuntuone_installer.gui.qt.utils import default_folders
4340-from ubuntuone_installer.gui import (
4341- LOCAL_FOLDERS_TITLE,
4342- LOCAL_FOLDERS_SPACE_HEADER,
4343- LOCAL_FOLDERS_OFFER_LABEL,
4344- LOCAL_FOLDERS_CALCULATING,
4345- NEXT,
4346-)
4347-
4348-from ubuntuone_installer.logger import setup_logging
4349-
4350-
4351-# Invalid name logger
4352-# pylint: disable=C0103
4353-logger = setup_logging('qt.local_folders')
4354-# pylint: enable=C0103
4355-
4356-
4357-class FolderItem(QtGui.QTreeWidgetItem):
4358- """Class representing a folder in the folder list UI."""
4359- def __init__(self, strings, path=None, queue=None,
4360- calculate=True, volume_id=None):
4361- super(FolderItem, self).__init__(strings)
4362- self.thread = CalculateSize(path, queue)
4363- # Don't calculate sizes of UDFs
4364- if calculate and not volume_id:
4365- self.thread.start()
4366- self.size = None
4367- else:
4368- self.size = 0
4369- self.path = path
4370- self.setCheckState(0, QtCore.Qt.Unchecked)
4371- self.volume_id = volume_id
4372-
4373-
4374-class CalculateSize(threading.Thread):
4375- """Class to calculate the size of a folder in the background."""
4376- def __init__(self, path_name, queue):
4377- self.path_name = path_name
4378- self.queue = queue
4379- self._stop = False
4380- super(CalculateSize, self).__init__()
4381- self.daemon = True
4382-
4383- def run(self):
4384- total_size = 0
4385- for dirpath, _, filenames in os.walk(self.path_name):
4386- for f in filenames:
4387- fp = os.path.join(dirpath, f)
4388- total_size += os.path.getsize(fp)
4389- self.queue.put([self.path_name, total_size])
4390-
4391-
4392-class LocalFoldersPage(SSOWizardPage):
4393- """Wizard page to create UDFs in the Windows Installer."""
4394-
4395- def __init__(self, parent=None):
4396- super(LocalFoldersPage, self).__init__(
4397- local_folders_ui.Ui_Form(), None, parent)
4398- self.setTitle(LOCAL_FOLDERS_TITLE)
4399- self.setSubTitle()
4400- header_view = self.ui.folder_list.header()
4401- header_view.setResizeMode(0, header_view.Stretch)
4402- self.queue = Queue.Queue()
4403- self.timer = QtCore.QTimer()
4404- self.items = {}
4405- self.folders_info = None
4406- self.account_info = None
4407- self.has_back_button = True
4408- self.cp_backend = backend.ControlBackend()
4409-
4410- # initializePage is inherited
4411- # pylint: disable=C0103
4412- def initializePage(self):
4413- """UI details."""
4414- if self.has_back_button:
4415- self.wizard().setButtonLayout([
4416- QtGui.QWizard.BackButton,
4417- QtGui.QWizard.Stretch,
4418- QtGui.QWizard.NextButton])
4419- else:
4420- self.wizard().setButtonLayout([
4421- QtGui.QWizard.Stretch,
4422- QtGui.QWizard.NextButton])
4423- self.wizard().setButtonText(QtGui.QWizard.NextButton,
4424- NEXT)
4425- self.wizard()._next_id = self.wizard().CONGRATULATIONS_PAGE
4426- # Start with this invisible
4427- self.ui.offer_frame.setVisible(False)
4428- # Show overlay until we have server data
4429- self.wizard().overlay.show()
4430- self.get_info()
4431-
4432- def cleanupPage(self):
4433- """Initialize previous page when going back."""
4434- self.wizard().folders_page.initializePage()
4435-
4436- @inlineCallbacks
4437- def get_info(self):
4438- """Get information from CP backend and fill folder list."""
4439- # pylint: disable=W0702
4440- try:
4441- volumes_info = yield self.cp_backend.volumes_info()
4442- self.account_info = yield self.cp_backend.account_info()
4443- self.folders_info = []
4444- for _, _, volumes in volumes_info:
4445- for volume in volumes:
4446- if volume[u'type'] == u"UDF":
4447- self.folders_info.append(volume)
4448- self.ui.folder_list.clear()
4449- self.items = {}
4450- for folder in self.folders_info:
4451- if folder['subscribed']:
4452- item = yield self.add_folder(
4453- os.path.expanduser(folder['path']),
4454- validate=False,
4455- volume_id=folder['volume_id'],
4456- calculate=False,
4457- )
4458- if item:
4459- item.setCheckState(0, QtCore.Qt.Checked)
4460- item.size = 0
4461- for folder_name in default_folders():
4462- item = yield self.add_folder(folder_name, validate=True)
4463- self.timer.start(2000)
4464- self.timer.timeout.connect(self.update_sizes)
4465- self.wizard().currentIdChanged.connect(self.changed_page)
4466- except:
4467- logger.exception("Error getting backend info:")
4468- finally:
4469- self.wizard().overlay.hide()
4470-
4471- @QtCore.pyqtSlot("int")
4472- @inlineCallbacks
4473- def changed_page(self, page_id):
4474- """When moving to next page, create/[un]subscribe UDFs."""
4475- self.timer.stop()
4476- try:
4477- self.wizard().currentIdChanged.disconnect(self.changed_page)
4478- except KeyError:
4479- pass
4480- if page_id == self.wizard().CONGRATULATIONS_PAGE:
4481- # The page following this one
4482- self.wizard().overlay.show()
4483- for path, item in self.items.items():
4484- if item.checkState(0) == QtCore.Qt.Checked:
4485- if item.volume_id:
4486- yield self.cp_backend.change_volume_settings(
4487- item.volume_id,
4488- dict(subscribed=True))
4489- else:
4490- yield self.cp_backend.create_folder(path)
4491- else:
4492- if item.volume_id:
4493- yield self.cp_backend.change_volume_settings(
4494- item.volume_id,
4495- dict(subscribed=False))
4496- self.wizard().overlay.hide()
4497-
4498- @inlineCallbacks
4499- def add_folder(self, path, validate=True, calculate=True, volume_id=None):
4500- """Add a folder to the list."""
4501- if path in self.items:
4502- returnValue(None)
4503- if validate:
4504- is_valid = yield self.cp_backend.validate_path_for_folder(path)
4505- else:
4506- is_valid = True
4507- if is_valid:
4508- item = FolderItem([path, ""],
4509- path=path,
4510- queue=self.queue,
4511- volume_id=volume_id,
4512- calculate=calculate)
4513- self.ui.folder_list.addTopLevelItem(item)
4514- self.items[path] = item
4515- returnValue(item)
4516- returnValue(None)
4517-
4518- def update_sizes(self):
4519- """Poll the queue were the threads put the size info."""
4520- while True:
4521- try:
4522- path, size = self.queue.get(False)
4523- except Queue.Empty:
4524- break
4525- else:
4526- item = self.items.get(path)
4527- if item:
4528- item.size = size
4529- try:
4530- item.setText(1, humanize(size))
4531- except RuntimeError:
4532- del self.items[path]
4533- total = long(self.account_info['quota_used'])
4534- for path, item in self.items.items():
4535- if item.size is None:
4536- total = LOCAL_FOLDERS_CALCULATING
4537- break
4538- if not item.volume_id and item.checkState(0) == QtCore.Qt.Checked:
4539- # Existing UDFs are already accounted for, count if marked.
4540- total += item.size
4541- if isinstance(total, long):
4542- self.show_hide_offer(total)
4543- total = humanize(total)
4544- else:
4545- self.show_hide_offer(0)
4546- self.ui.folder_list.headerItem().setText(
4547- 1, LOCAL_FOLDERS_SPACE_HEADER % total)
4548-
4549- def show_hide_offer(self, cur_size):
4550- """Show or hide the offer to buy space according to the total size."""
4551- quota = self.account_info['quota_total']
4552- if cur_size > quota:
4553- self.ui.offer_frame.setVisible(True)
4554- else:
4555- self.ui.offer_frame.setVisible(False)
4556- self.ui.offer_label.setText(LOCAL_FOLDERS_OFFER_LABEL %
4557- {"quota": humanize(quota)})
4558-
4559- def stop_threads(self):
4560- """Stop all pending threads."""
4561- for _, item in self.items:
4562- item.thread._stop = True
4563-
4564- # itemClicked is a Qt signal name.
4565- # pylint: disable=C0103
4566- def on_folder_list_itemChanged(self, item, column):
4567- """Delete folder from the list."""
4568- if column == 0:
4569- self.update_sizes()
4570-
4571- @inlineCallbacks
4572- @QtCore.pyqtSlot()
4573- def on_add_storage_button_clicked(self):
4574- """user clicked on the "Add more storage" button."""
4575- # Really want to catch everything
4576- # pylint: disable=W0702
4577- url = "https://one.ubuntu.com/services/#storage_panel"
4578- try:
4579- credtool = CredentialsManagementTool()
4580- creds = yield credtool.find_credentials()
4581- except:
4582- logger.exception('Error while trying to get credentials:')
4583- creds = {}
4584- if creds:
4585- timestamp = yield timestamp_checker.get_faithful_time()
4586- signed_url = yield sign_url(url, creds, timestamp)
4587- else:
4588- signed_url = url
4589- QtGui.QDesktopServices.openUrl(QtCore.QUrl(signed_url))
4590-
4591- @inlineCallbacks
4592- @QtCore.pyqtSlot()
4593- def on_add_folder_button_clicked(self):
4594- """user clicked on the "Add Folder" button."""
4595- folder = QtGui.QFileDialog.getExistingDirectory(
4596- parent=self,
4597- options=QtGui.QFileDialog.DontUseNativeDialog)
4598- folder = unicode(QtCore.QDir.toNativeSeparators(folder))
4599- if folder == '':
4600- return
4601-
4602- is_valid = yield self.cp_backend.validate_path_for_folder(folder)
4603- if not is_valid:
4604- user_home = os.path.expanduser('~')
4605- text = FOLDER_INVALID_PATH % {'folder_path': folder,
4606- 'home_folder': user_home}
4607- QtGui.QMessageBox.warning(self, '', text, QtGui.QMessageBox.Close)
4608- return
4609- item = yield self.add_folder(folder, validate=False, volume_id=False)
4610- if item is not None:
4611- item.setCheckState(0, QtCore.Qt.Checked)
4612
4613=== removed directory 'ubuntuone_installer/gui/qt/main'
4614=== removed file 'ubuntuone_installer/gui/qt/main/__init__.py'
4615--- ubuntuone_installer/gui/qt/main/__init__.py 2011-11-11 19:27:39 +0000
4616+++ ubuntuone_installer/gui/qt/main/__init__.py 1970-01-01 00:00:00 +0000
4617@@ -1,60 +0,0 @@
4618-# -*- coding: utf-8 -*-
4619-#
4620-# Copyright 2011 Canonical Ltd.
4621-#
4622-# This program is free software: you can redistribute it and/or modify it
4623-# under the terms of the GNU General Public License version 3, as published
4624-# by the Free Software Foundation.
4625-#
4626-# This program is distributed in the hope that it will be useful, but
4627-# WITHOUT ANY WARRANTY; without even the implied warranties of
4628-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4629-# PURPOSE. See the GNU General Public License for more details.
4630-#
4631-# You should have received a copy of the GNU General Public License along
4632-# with this program. If not, see <http://www.gnu.org/licenses/>.
4633-
4634-"""Provide the correct reactor and ui integration."""
4635-
4636-import sys
4637-
4638-from PyQt4 import QtGui
4639-
4640-# Module used to include the resources into this file
4641-# Unused import images_rc, pylint: disable=W0611
4642-from ubuntuone_installer.gui.qt.ui import images_rc
4643-# pylint: enable=W0611
4644-
4645-
4646-# Invalid name "source", pylint: disable=C0103
4647-if sys.platform == 'win32':
4648- from ubuntuone_installer.gui.qt.main import windows
4649- source = windows
4650-else:
4651- from ubuntuone_installer.gui.qt.main import linux
4652- source = linux
4653-# pylint: enable=C0103
4654-
4655-
4656-def main(installing=False):
4657- """Start the Qt reactor and open the main window."""
4658- # The following cannot be imported outside this function
4659- # because u1trial already provides a reactor.
4660-
4661- # The main loop MUST be initialized before importing the reactor
4662- app = QtGui.QApplication(sys.argv)
4663- source.main(app)
4664-
4665- # Reimport 'qt4reactor', 'reactor', pylint: disable=W0404
4666- import qt4reactor
4667- qt4reactor.install()
4668-
4669- from twisted.internet import reactor
4670- from ubuntuone_installer.gui.qt.utils import check_credentials
4671- # pylint: enable=W0404
4672-
4673- # Module 'reactor' has no 'run'/'stop' member, pylint: disable=E1101
4674- reactor.callWhenRunning(check_credentials,
4675- installing=installing, stop_cb=reactor.stop)
4676- reactor.run()
4677- # pylint: enable=E1101
4678
4679=== removed file 'ubuntuone_installer/gui/qt/main/linux.py'
4680--- ubuntuone_installer/gui/qt/main/linux.py 2011-11-11 19:27:39 +0000
4681+++ ubuntuone_installer/gui/qt/main/linux.py 1970-01-01 00:00:00 +0000
4682@@ -1,30 +0,0 @@
4683-# -*- coding: utf-8 -*-
4684-#
4685-# Copyright 2011 Canonical Ltd.
4686-#
4687-# This program is free software: you can redistribute it and/or modify it
4688-# under the terms of the GNU General Public License version 3, as published
4689-# by the Free Software Foundation.
4690-#
4691-# This program is distributed in the hope that it will be useful, but
4692-# WITHOUT ANY WARRANTY; without even the implied warranties of
4693-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4694-# PURPOSE. See the GNU General Public License for more details.
4695-#
4696-# You should have received a copy of the GNU General Public License along
4697-# with this program. If not, see <http://www.gnu.org/licenses/>.
4698-
4699-"""Main method to be used on linux."""
4700-
4701-from dbus.mainloop.qt import DBusQtMainLoop
4702-from PyQt4 import QtCore
4703-
4704-
4705-def main(app):
4706- """Apply style sheet."""
4707- # The DBus main loop MUST be initialized before importing the reactor
4708- DBusQtMainLoop(set_as_default=True)
4709-
4710- # Apply Style Sheet -- The linux version may be different
4711- qss = QtCore.QResource(":/ubuntuone.qss")
4712- app.setStyleSheet(qss.data())
4713
4714=== removed file 'ubuntuone_installer/gui/qt/main/windows.py'
4715--- ubuntuone_installer/gui/qt/main/windows.py 2012-01-18 12:37:40 +0000
4716+++ ubuntuone_installer/gui/qt/main/windows.py 1970-01-01 00:00:00 +0000
4717@@ -1,33 +0,0 @@
4718-# -*- coding: utf-8 -*-
4719-#
4720-# Copyright 2011 Canonical Ltd.
4721-#
4722-# This program is free software: you can redistribute it and/or modify it
4723-# under the terms of the GNU General Public License version 3, as published
4724-# by the Free Software Foundation.
4725-#
4726-# This program is distributed in the hope that it will be useful, but
4727-# WITHOUT ANY WARRANTY; without even the implied warranties of
4728-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4729-# PURPOSE. See the GNU General Public License for more details.
4730-#
4731-# You should have received a copy of the GNU General Public License along
4732-# with this program. If not, see <http://www.gnu.org/licenses/>.
4733-
4734-"""Main method to be used on windows."""
4735-
4736-from PyQt4 import QtGui, QtCore
4737-
4738-
4739-def main(app):
4740- """Apply style sheet and fonts."""
4741- # Apply font to the entire application
4742- QtGui.QFontDatabase.addApplicationFont(':/Ubuntu-R.ttf')
4743- QtGui.QFontDatabase.addApplicationFont(':/Ubuntu-B.ttf')
4744-
4745- # Set Application Icon
4746- app.setWindowIcon(QtGui.QIcon(":/ubuntu_one_favicon.png"))
4747-
4748- # Apply Style Sheet -- The windows version may be different
4749- qss = QtCore.QResource(":/ubuntuone.qss")
4750- app.setStyleSheet(qss.data())
4751
4752=== removed file 'ubuntuone_installer/gui/qt/network_detection.py'
4753--- ubuntuone_installer/gui/qt/network_detection.py 2012-01-25 12:37:01 +0000
4754+++ ubuntuone_installer/gui/qt/network_detection.py 1970-01-01 00:00:00 +0000
4755@@ -1,76 +0,0 @@
4756-# -*- coding: utf-8 *-*
4757-#
4758-# Copyright 2011 Canonical Ltd.
4759-#
4760-# This program is free software: you can redistribute it and/or modify it
4761-# under the terms of the GNU General Public License version 3, as published
4762-# by the Free Software Foundation.
4763-#
4764-# This program is distributed in the hope that it will be useful, but
4765-# WITHOUT ANY WARRANTY; without even the implied warranties of
4766-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4767-# PURPOSE. See the GNU General Public License for more details.
4768-#
4769-# You should have received a copy of the GNU General Public License along
4770-# with this program. If not, see <http://www.gnu.org/licenses/>.
4771-
4772-"""Widget to show if we don't detect a network connection."""
4773-
4774-import gettext
4775-
4776-from twisted.internet import defer
4777-from PyQt4 import QtGui
4778-
4779-from ubuntu_sso import networkstate
4780-
4781-from ubuntuone_installer.gui.qt.ui import network_detection_ui
4782-
4783-_ = gettext.gettext
4784-
4785-
4786-class NetworkDetectionPage(QtGui.QWizardPage):
4787-
4788- """Widget to show if we don't detect a network connection."""
4789-
4790- def __init__(self, parent=None):
4791- super(NetworkDetectionPage, self).__init__(parent)
4792- self.setTitle(_("Installing Ubuntu One"))
4793- self.ui = network_detection_ui.Ui_Form()
4794- self.ui.setupUi(self)
4795- self.btn_try_again = None
4796-
4797- # pylint: disable=C0103
4798- def initializePage(self):
4799- """Set UI details."""
4800- self.wizard()._next_id = None
4801-
4802- self.setButtonText(QtGui.QWizard.CustomButton1, _("Try again"))
4803- self.setButtonText(QtGui.QWizard.CancelButton,
4804- _("Close window and set up later"))
4805- self.wizard().setButtonLayout([
4806- QtGui.QWizard.Stretch,
4807- QtGui.QWizard.CustomButton1,
4808- QtGui.QWizard.CancelButton,
4809- ])
4810-
4811- try:
4812- self.wizard().customButtonClicked.disconnect()
4813- except TypeError:
4814- pass
4815-
4816- self.btn_try_again = self.wizard().button(QtGui.QWizard.CustomButton1)
4817- self.btn_try_again.setDefault(True)
4818- self.btn_try_again.style().unpolish(self.btn_try_again)
4819- self.btn_try_again.style().polish(self.btn_try_again)
4820- self.wizard().customButtonClicked.connect(self.try_again)
4821- # pylint: enable=C0103
4822-
4823- @defer.inlineCallbacks
4824- def try_again(self, button_id=QtGui.QWizard.CustomButton1):
4825- """Test the connection again."""
4826- if button_id == QtGui.QWizard.CustomButton1:
4827- d = yield networkstate.is_machine_connected()
4828- if d:
4829- self.wizard()._next_id = self.wizard().SIGN_IN_PAGE_ID
4830- self.wizard().next()
4831- self.wizard()._next_id = None
4832
4833=== removed file 'ubuntuone_installer/gui/qt/preferences.py'
4834--- ubuntuone_installer/gui/qt/preferences.py 2011-10-18 10:59:36 +0000
4835+++ ubuntuone_installer/gui/qt/preferences.py 1970-01-01 00:00:00 +0000
4836@@ -1,98 +0,0 @@
4837-# -*- coding: utf-8 -*-
4838-
4839-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
4840-# Diego Sarmentero <diego.sarmentero@canonical.com>
4841-#
4842-# Copyright 2011 Canonical Ltd.
4843-#
4844-# This program is free software: you can redistribute it and/or modify it
4845-# under the terms of the GNU General Public License version 3, as published
4846-# by the Free Software Foundation.
4847-#
4848-# This program is distributed in the hope that it will be useful, but
4849-# WITHOUT ANY WARRANTY; without even the implied warranties of
4850-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4851-# PURPOSE. See the GNU General Public License for more details.
4852-#
4853-# You should have received a copy of the GNU General Public License along
4854-# with this program. If not, see <http://www.gnu.org/licenses/>.
4855-
4856-"""Page to list folders in a Ubuntu One account."""
4857-
4858-import gettext
4859-
4860-from PyQt4 import QtGui
4861-from ubuntuone.controlpanel.gui.qt import preferences
4862-from ubuntu_sso.qt.gui import SSOWizardPage
4863-
4864-from ubuntuone_installer.gui.qt.ui import preferences_ui
4865-
4866-_ = gettext.gettext
4867-
4868-
4869-class PreferencesPage(SSOWizardPage):
4870- """Wizard page to list and manage an account's folders."""
4871-
4872- def __init__(self, parent=None):
4873- super(PreferencesPage, self).__init__(
4874- preferences_ui.Ui_Form(), None, parent)
4875- self.preferences_widget = preferences.PreferencesPanel()
4876- self.layout().addWidget(self.preferences_widget)
4877- self.preferences_widget.ui.apply_changes_button.hide()
4878- self.preferences_widget.ui.restore_defaults_button.hide()
4879-
4880- # Invalid name "initializePage"
4881- # pylint: disable=C0103
4882-
4883- def initializePage(self):
4884- """Initialize the page before the Wizard show it."""
4885- self.wizard().setOption(QtGui.QWizard.HaveCustomButton1, True)
4886- self.wizard().setOption(QtGui.QWizard.HaveCustomButton2, True)
4887- # This is just to catch an exception thrown when nothing
4888- # is connected to the signal. It's not an exceptional
4889- # condition at all.
4890- try:
4891- self.wizard().customButtonClicked.disconnect()
4892- except TypeError:
4893- pass
4894- self.wizard()._next_id = None
4895- self.setButtonText(QtGui.QWizard.CustomButton1,
4896- _("Apply these settings >"))
4897- self.setButtonText(QtGui.QWizard.CustomButton2, _("Default settings"))
4898-
4899- self.wizard().setButtonLayout([
4900- QtGui.QWizard.BackButton,
4901- QtGui.QWizard.Stretch,
4902- QtGui.QWizard.CustomButton2,
4903- QtGui.QWizard.CustomButton1])
4904- self.wizard().button(QtGui.QWizard.CustomButton1).setDefault(True)
4905- self.wizard().button(QtGui.QWizard.CustomButton1).style().unpolish(
4906- self.wizard().button(QtGui.QWizard.CustomButton1))
4907- self.wizard().button(QtGui.QWizard.CustomButton1).style().polish(
4908- self.wizard().button(QtGui.QWizard.CustomButton1))
4909-
4910- self.wizard().customButtonClicked.connect(self._button_clicked)
4911-
4912- # pylint: enable=C0103
4913-
4914- def _button_clicked(self, btn):
4915- """Receive custom wizard buttons clicks."""
4916- if btn == QtGui.QWizard.CustomButton1:
4917- self.preferences_widget.on_apply_changes_button_clicked()
4918- self.cleanupPage()
4919- self.wizard().back()
4920- elif btn == QtGui.QWizard.CustomButton2:
4921- self.preferences_widget.on_restore_defaults_button_clicked()
4922-
4923- # Invalid name "cleanupPage"
4924- # pylint: disable=C0103
4925- def cleanupPage(self):
4926- """Execute this cleanup function when the back button is pressed."""
4927- self.wizard().setOption(QtGui.QWizard.HaveCustomButton1, False)
4928- self.wizard().setOption(QtGui.QWizard.HaveCustomButton2, False)
4929- self.wizard().setButtonLayout([
4930- QtGui.QWizard.BackButton,
4931- QtGui.QWizard.Stretch,
4932- QtGui.QWizard.NextButton])
4933- self.wizard().folders_page.initializePage()
4934- # pylint: enable=C0103
4935
4936=== removed file 'ubuntuone_installer/gui/qt/setup_account.py'
4937--- ubuntuone_installer/gui/qt/setup_account.py 2011-09-28 17:31:15 +0000
4938+++ ubuntuone_installer/gui/qt/setup_account.py 1970-01-01 00:00:00 +0000
4939@@ -1,226 +0,0 @@
4940-# -*- coding: utf-8 -*-
4941-
4942-# Authors: Roberto Alsina <roberto.alsina@canonical.com>
4943-#
4944-# Copyright 2011 Canonical Ltd.
4945-#
4946-# This program is free software: you can redistribute it and/or modify it
4947-# under the terms of the GNU General Public License version 3, as published
4948-# by the Free Software Foundation.
4949-#
4950-# This program is distributed in the hope that it will be useful, but
4951-# WITHOUT ANY WARRANTY; without even the implied warranties of
4952-# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
4953-# PURPOSE. See the GNU General Public License for more details.
4954-#
4955-# You should have received a copy of the GNU General Public License along
4956-# with this program. If not, see <http://www.gnu.org/licenses/>.
4957-
4958-"""Customized Setup Account page for SSO."""
4959-
4960-import gettext
4961-import re
4962-
4963-from PyQt4 import QtGui, QtCore
4964-
4965-from ubuntu_sso.qt import common
4966-from ubuntu_sso.qt import gui as sso_gui
4967-from ubuntu_sso.utils.ui import SET_UP_ACCOUNT_BUTTON
4968-
4969-from ubuntuone_installer.gui.qt import enhanced_check_box
4970-
4971-_ = gettext.gettext
4972-
4973-# pylint: disable=C0103
4974-ERROR = u'<font color="#df2d1f"><b> %s </b></font>'
4975-TITLE_STYLE = "<span style=\"font-size:24px\">%s</span>"
4976-
4977-EMAIL = _("Email")
4978-EMPTY_NAME = _("Please enter your name")
4979-INVALID_EMAIL = _("Please enter a valid email address")
4980-EMAIL_MATCH = _("The email addresses do not match")
4981-NAME = _("Name")
4982-PASSWORD = _("Create a password")
4983-RETYPE_EMAIL = _("Retype email")
4984-RETYPE_PASSWORD = _("Retype password")
4985-SUBTITLE = _("You only need to set up your account "
4986- "once to get access to Ubuntu One across your devices.")
4987-TERMS = _("By signing up to Ubuntu One you agree to our "
4988- "{terms_and_conditions} and {privacy_policy}")
4989-TERMS_LINK = _("<a href='https://one.ubuntu.com/terms/'>"
4990- "<span style='color:#df2d1f;'>Terms of Service</span></a>")
4991-PRIVACY_POLICY_LINK = _("<a href='https://one.ubuntu.com/privacy/'>"
4992- "<span style='color:#df2d1f;'>Privacy Policy"
4993- "</span></a></font>")
4994-TITLE = _("Sign Up to Ubuntu One")
4995-
4996-
4997-class SetupAccountPage(sso_gui.SetupAccountPage):
4998- """Customized Setup Account page for SSO."""
4999-
5000- def __init__(self, *args, **kwargs):
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches