rufus 0.1 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTYxMGQ2OWIzYTFiMDQ3YmU2MmExYjJiMTI2NTc3NTY5ZGM3NDY2Ng==
5
+ data.tar.gz: !binary |-
6
+ Mzg4YmI0ODc0MWM2NGFlNGI0ZDM3ZTJkNDZmOWE0YzM4ZWQ4YmZmYQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODA3MTAzMjhiMDU1OWZlMDZlMmNmMDJjNzcxMTA3ZWVjNWU5NDY2NmZlZGQ1
10
+ ZTEzYjI2OGY4MDQwZDQ3NzA5OWIxZjQ2NzVkYTJkYjdjZjJiOTVkZjJhZWIy
11
+ NTgwMDU3NzMyNzgxZDhlMmRhMDkxZjUyOTU1ZjhhYWEwMDI0ZWY=
12
+ data.tar.gz: !binary |-
13
+ MWY0MjFkMDMzNzc5ZTRhYWFjOTU3OWYzZDFhYzNhNzM4MjRiZTY3NTExZjcz
14
+ NTIxYTYxY2RhMTRlZTVlZTQzZTUxNzAxNWJjN2E3MjI2NDIyY2RmOGM5YzY4
15
+ MTJkNDdiMjJkOTU2ZTI0Y2I0N2UxOWExMTllMGQwODlhNjAyMmY=
data/Gemfile.lock CHANGED
@@ -18,7 +18,7 @@ GEM
18
18
  ffi (1.9.0)
19
19
  gherkin (2.11.8)
20
20
  multi_json (~> 1.3)
21
- i18n (0.6.4)
21
+ i18n (0.6.1)
22
22
  multi_json (1.7.9)
23
23
  page_navigation (0.9)
24
24
  data_magic (>= 0.14)
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Jeremy Stewart
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,120 +1,105 @@
1
- Last Updated: 9-24-2013
1
+ Last Updated: 9-25-2013
2
2
 
3
3
  This project is intended to facilitate automated testing on iOS devices using cucumber and the Page Object pattern.
4
4
 
5
-
6
- QUICK START GUIDE
7
- -----------------
8
- 1. gem install rufus
9
- 2. require 'rufus' in your Gemfile
10
- 3. Clone appium into project directory (where .xcodeproj resides). Repo located at: https://github.com/appium/appium.git
11
- 4. Create a config.yml in project directory with the following information:
12
-
13
- browser: iOS
14
- platform: Mac
15
- version: 6.1
16
- app:$HOME/Library/Developer/Xcode/DerivedData/<UNIQUE>/Build/Products/Debug-iphoneos/YourApp.app
17
-
18
- 5. Start appium server using node
19
- >appium -U <UDID> --app <PATH_TO_APP>
20
-
21
- 6. Deploy to iOS device using libimobiledevice. Repo located at: https://github.com/benvium/libimobiledevice-macosx
22
-
23
- 7. Run tests
24
- >bundle exec cucumber
25
-
26
-
27
- LONG START GUIDE
28
- ----------------
29
-
30
- PREREQUISITES
5
+ PREREQUISITES
31
6
  --------------------------
32
- 1. Ruby
33
- 2. Homebrew
34
- 3. Bundler
7
+ -Ruby
35
8
 
36
- INSTALLING NODE WITH HOMEBREW
37
- -----------------------------
9
+ -Homebrew
38
10
 
39
- - brew doctor
40
- - brew install node
41
- - curl https://npmjs.org/install.sh | sh
42
- - export NODE_PATH="/usr/local/lib/node"
43
- - export PATH="/usr/local/share/npm/bin:$PATH"
44
- - node -v <= check to see that node installed correctly
11
+ -Bundler
45
12
 
46
- APPIUM
47
- ------
13
+ In order to use appium you'll first need to install node and npm. Perform the following steps in the terminal to retrieve the necessary items:
48
14
 
49
- Appium must be installed to run it from the command line. The repository at https://github.com/appium/appium.git is included as a submodule to this project. To download the necessary files, issue the following in your project directory:
15
+ >brew install node
50
16
 
51
- >git submodule init
52
- >git submodule update
17
+ >curl https://npmjs.org/install.sh | sh
53
18
 
54
- If you did not download the rufus source code, clone appium into your project directory. Either way, look into the appium directory to make sure there is a file server.js.
19
+ >export NODE_PATH="/usr/local/lib/node"
55
20
 
56
- CONFIGURING ENVIRONMENT
57
- --------------------------------------------
58
- Rufus relies on a config.yml file to exists in the project's root directory. This is used to tell appium about the physical device and the software under test. Below is a typical configuration to run automated tests on the iPad.
21
+ >export PATH="/usr/local/share/npm/bin:$PATH
59
22
 
60
- browser: iOS
61
- platform: Mac
62
- version: 6.1
63
- app:$HOME/Library/Developer/Xcode/DerivedData/<UNIQUE_ID>/Build/Products/Debug-iphoneos/YourApp.app
23
+ >npm install -g appium
64
24
 
65
- STARTING APPIUM SERVER
66
- -----------------------------------------
67
- Open a separate terminal window and navigate to you appium installation. This will be the window that shows the appium server output. In this window issue the following command to start the appium server
25
+ >npm install wd
68
26
 
69
- >node server.js -U <UDID> --app <PATH_TO_APP>
70
27
 
71
- The UDID is the unique identifier of your physical device. This can be found in Xcode. Navigate to Window > Organizer, select the target device and notice it's identifier. The PATH_TO_APP is the path to the compiled app that Xcode produces. It should be the same as the path configured in the config.yml
28
+ QUICK START GUIDE
29
+ ------------------------------
30
+ - gem install rufus
31
+ - require 'rufus' in your Gemfile
32
+ - Create a config.yml in project directory (the one with .xcodeproj in it) with the following information:
72
33
 
73
- After issuing the command there should be a message stating that the appium server is listening.
34
+ ````YAML
35
+ browser: iOS
36
+ platform: Mac
37
+ version: 7.0
38
+ app:$HOME/Library/Developer/Xcode/DerivedData/<UNIQUE>/Build/Products/Debug-iphoneos/YourApp.app
39
+ ````
40
+ - Start appium server in new terminal window
74
41
 
75
- DEPLOYING TO DEVICE
76
- ----------------------------------
42
+ >appium -U DEVICE_UDID --app YourApp.app
77
43
 
78
- Rufus doesn't necessarily care how your app made it onto the device as long as selenium can see it, but I found the most consistent method to be through libimobiledevice. That project also is included as a submodule to this one. The original repository is https://github.com/benvium/libimobiledevice-macosx. Look at the libimobiledevice Readme in order to configure the environment variables your system needs to use this deployment mechanism.
44
+ - Deploy to iOS device using XCode or libimobiledevice. Libimobiledevice repo located at: https://github.com/benvium/libimobiledevice-macosx
79
45
 
80
- The only gotcha I ran into was generating the .ipa archive that libimobiledevice uses. Take the following steps to generate the .ipa archive.
81
-
82
- 1. Build the app for deployment to device
83
- 2. Navigate to the .app file that should be found in the ../Debug-iphoneos/ directory
84
- 3. Create a folder in that directory named 'Payload'. It must be named Payload.
85
- 4. Put a copy of the .app file in the Payload directory
86
- 5. Compress the directory into a .zip archive
87
- 6. Change the .zip extension to .ipa
88
- 7. Issue the command ideviceinstaller -i YourApp.ipa (This installs the app)
46
+ - Run tests
89
47
 
48
+ >bundle exec cucumber
90
49
 
91
50
  USING THE RUFUS IRB DRIVER
92
51
  --------------------------
93
52
  After installing the gem, open an irb session from the same directory as your config.yml.
94
53
 
95
- >require 'rufus/driver'
96
- >driver = Rufus.new
97
- >driver.start (starts the app)
98
-
54
+ ````ruby
55
+ require 'rufus/driver'
56
+ driver = Rufus.new
57
+ driver.start (starts the app)
58
+ ````
99
59
 
100
60
  DEFINING A BUTTON SEQUENCE
101
61
  --------------------------
102
62
 
103
63
  Rufus doesn't mind the mindless work of pushing buttons in sequence. The following command will push the goodButton, badButton and sortaOkayButton in sequence 10 times in a row if such a sequence is possible. In this example, the goodButton must be available to be pressed after pushing the sortaOkayButton in order for the loop to continue.
104
64
 
105
- driver.sequence 'goodButton', 'badButton', 'sortaOkayButton', 10
65
+ ````ruby
66
+ driver.sequence 'goodButton', 'badButton', 'sortaOkayButton', '10'
67
+ ````
106
68
 
107
69
  OTHER DRIVER USE CASES
108
70
  ----------------------
109
71
 
110
72
  Push a button by name
111
73
 
112
- >driver.push_button 'buttonName'
74
+ ````ruby
75
+ driver.push_button 'buttonName'
76
+ ````
113
77
 
114
- >Get a list of all the button names
78
+ Get a list of all the button names
115
79
 
116
- >driver.buttons (example return: ['go', 'yesButton','noButton'])
80
+ ````ruby
81
+ driver.buttons (example return: ['go', 'yesButton','noButton'])
82
+ ````
117
83
 
118
84
  Enter 'Hello' into text field
119
85
 
120
- >driver.type 'hello' 'textFieldName'
86
+ ````ruby
87
+ driver.type 'hello' 'textFieldName'
88
+ ````
89
+
90
+ DEPLOYING TO DEVICE WITHOUT USING XCODE
91
+ ----------------------------------------------------------------------
92
+
93
+ Rufus doesn't necessarily care how your app made it onto the device as long as selenium can see it, but I found the most consistent method to be through libimobiledevice. That project also is included as a submodule to this one. The original repository is https://github.com/benvium/libimobiledevice-macosx. Look at the libimobiledevice Readme in order to configure the environment variables your system needs to use this deployment mechanism.
94
+
95
+ The only gotcha I ran into was generating the .ipa archive that libimobiledevice uses. Take the following steps to generate the .ipa archive.
96
+
97
+ 1. Build the app for deployment to device
98
+ 2. Navigate to the .app file that should be found in the ../Debug-iphoneos/ directory
99
+ 3. Create a folder in that directory named 'Payload'. It must be named Payload.
100
+ 4. Put a copy of the .app file in the Payload directory
101
+ 5. Compress the directory into a .zip archive
102
+ 6. Change the .zip extension to .ipa
103
+ 7. Issue the command ideviceinstaller -i YourApp.ipa (This installs the app)
104
+
105
+
@@ -8,9 +8,12 @@
8
8
 
9
9
  #import <UIKit/UIKit.h>
10
10
 
11
- @interface RUViewController : UIViewController
11
+ @interface RUViewController : UIViewController <UIAlertViewDelegate>
12
12
 
13
+ @property (weak, nonatomic) IBOutlet UIButton *showAlertButton;
13
14
  @property (weak, nonatomic) IBOutlet UIButton *rufusButton;
14
15
  - (IBAction)toRufusPage:(id)sender;
16
+ - (IBAction)showAlert:(id)sender;
17
+
15
18
 
16
19
  @end
@@ -31,4 +31,25 @@
31
31
  RufusPageViewController *rufusPageViewController = [[RufusPageViewController alloc] init];
32
32
  [[self navigationController] pushViewController:rufusPageViewController animated:YES];
33
33
  }
34
+
35
+ - (IBAction)showAlert:(id)sender
36
+ {
37
+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rufus Alert" message:@"You've chosen to show the rufus alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
38
+
39
+ [alert show];
40
+ }
41
+
42
+ -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
43
+ {
44
+ if (buttonIndex == [alertView cancelButtonIndex])
45
+ {
46
+ alertView = nil;
47
+ }
48
+ else
49
+ {
50
+ [self toRufusPage:nil];
51
+ }
52
+
53
+ }
54
+
34
55
  @end
@@ -1,372 +1,52 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
3
- <data>
4
- <int key="IBDocument.SystemTarget">1552</int>
5
- <string key="IBDocument.SystemVersion">12E55</string>
6
- <string key="IBDocument.InterfaceBuilderVersion">3084</string>
7
- <string key="IBDocument.AppKitVersion">1187.39</string>
8
- <string key="IBDocument.HIToolboxVersion">626.00</string>
9
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
10
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
11
- <string key="NS.object.0">2083</string>
12
- </object>
13
- <array key="IBDocument.IntegratedClassDependencies">
14
- <string>IBNSLayoutConstraint</string>
15
- <string>IBProxyObject</string>
16
- <string>IBUIButton</string>
17
- <string>IBUILabel</string>
18
- <string>IBUIView</string>
19
- </array>
20
- <array key="IBDocument.PluginDependencies">
21
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
22
- </array>
23
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
24
- <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
25
- <integer value="1" key="NS.object.0"/>
26
- </object>
27
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
28
- <object class="IBProxyObject" id="841351856">
29
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
30
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
31
- </object>
32
- <object class="IBProxyObject" id="606714003">
33
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
34
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
35
- </object>
36
- <object class="IBUIView" id="766721923">
37
- <reference key="NSNextResponder"/>
38
- <int key="NSvFlags">292</int>
39
- <array class="NSMutableArray" key="NSSubviews">
40
- <object class="IBUILabel" id="138991431">
41
- <reference key="NSNextResponder" ref="766721923"/>
42
- <int key="NSvFlags">292</int>
43
- <string key="NSFrame">{{300, 295}, {172, 81}}</string>
44
- <reference key="NSSuperview" ref="766721923"/>
45
- <string key="NSReuseIdentifierKey">_NS:9</string>
46
- <bool key="IBUIOpaque">NO</bool>
47
- <bool key="IBUIClipsSubviews">YES</bool>
48
- <int key="IBUIContentMode">7</int>
49
- <bool key="IBUIUserInteractionEnabled">NO</bool>
50
- <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
51
- <string key="IBUIAccessibilityLabel">rufusDescription</string>
52
- </object>
53
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
54
- <string key="IBUIText">This is the Rufus Page</string>
55
- <object class="NSColor" key="IBUITextColor">
56
- <int key="NSColorSpace">1</int>
57
- <bytes key="NSRGB">MCAwIDAAA</bytes>
58
- <string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
59
- </object>
60
- <nil key="IBUIHighlightedColor"/>
61
- <int key="IBUIBaselineAdjustment">0</int>
62
- <int key="IBUITextAlignment">1</int>
63
- <object class="IBUIFontDescription" key="IBUIFontDescription">
64
- <int key="type">1</int>
65
- <double key="pointSize">17</double>
66
- </object>
67
- <object class="NSFont" key="IBUIFont">
68
- <string key="NSName">Helvetica</string>
69
- <double key="NSSize">17</double>
70
- <int key="NSfFlags">16</int>
71
- </object>
72
- <bool key="IBUIAdjustsFontSizeToFit">NO</bool>
73
- </object>
74
- <object class="IBUIButton" id="760254641">
75
- <reference key="NSNextResponder" ref="766721923"/>
76
- <int key="NSvFlags">292</int>
77
- <string key="NSFrame">{{300, 391}, {172, 44}}</string>
78
- <reference key="NSSuperview" ref="766721923"/>
79
- <string key="NSReuseIdentifierKey">_NS:9</string>
80
- <bool key="IBUIOpaque">NO</bool>
81
- <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
82
- <string key="IBUIAccessibilityLabel">rufusPageButton</string>
83
- </object>
84
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
85
- <int key="IBUIContentHorizontalAlignment">0</int>
86
- <int key="IBUIContentVerticalAlignment">0</int>
87
- <int key="IBUIButtonType">1</int>
88
- <string key="IBUINormalTitle">Rufus Page Button</string>
89
- <object class="NSColor" key="IBUIHighlightedTitleColor">
90
- <int key="NSColorSpace">3</int>
91
- <bytes key="NSWhite">MQA</bytes>
92
- </object>
93
- <object class="NSColor" key="IBUINormalTitleColor">
94
- <int key="NSColorSpace">1</int>
95
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
96
- </object>
97
- <object class="NSColor" key="IBUINormalTitleShadowColor">
98
- <int key="NSColorSpace">3</int>
99
- <bytes key="NSWhite">MC41AA</bytes>
100
- </object>
101
- <object class="IBUIFontDescription" key="IBUIFontDescription">
102
- <int key="type">2</int>
103
- <double key="pointSize">15</double>
104
- </object>
105
- <object class="NSFont" key="IBUIFont">
106
- <string key="NSName">Helvetica-Bold</string>
107
- <double key="NSSize">15</double>
108
- <int key="NSfFlags">16</int>
109
- </object>
110
- </object>
111
- </array>
112
- <string key="NSFrame">{{0, 20}, {768, 1004}}</string>
113
- <reference key="NSSuperview"/>
114
- <reference key="NSNextKeyView" ref="138991431"/>
115
- <object class="NSColor" key="IBUIBackgroundColor">
116
- <int key="NSColorSpace">3</int>
117
- <bytes key="NSWhite">MQA</bytes>
118
- <object class="NSColorSpace" key="NSCustomColorSpace">
119
- <int key="NSID">2</int>
120
- </object>
121
- </object>
122
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
123
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
124
- <int key="IBUIStatusBarStyle">2</int>
125
- </object>
126
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
127
- </object>
128
- </array>
129
- <object class="IBObjectContainer" key="IBDocument.Objects">
130
- <array class="NSMutableArray" key="connectionRecords">
131
- <object class="IBConnectionRecord">
132
- <object class="IBCocoaTouchOutletConnection" key="connection">
133
- <string key="label">view</string>
134
- <reference key="source" ref="841351856"/>
135
- <reference key="destination" ref="766721923"/>
136
- </object>
137
- <int key="connectionID">3</int>
138
- </object>
139
- <object class="IBConnectionRecord">
140
- <object class="IBCocoaTouchOutletConnection" key="connection">
141
- <string key="label">rufusPageButton</string>
142
- <reference key="source" ref="841351856"/>
143
- <reference key="destination" ref="760254641"/>
144
- </object>
145
- <int key="connectionID">17</int>
146
- </object>
147
- <object class="IBConnectionRecord">
148
- <object class="IBCocoaTouchEventConnection" key="connection">
149
- <string key="label">goToHomePage:</string>
150
- <reference key="source" ref="760254641"/>
151
- <reference key="destination" ref="841351856"/>
152
- <int key="IBEventType">7</int>
153
- </object>
154
- <int key="connectionID">18</int>
155
- </object>
156
- </array>
157
- <object class="IBMutableOrderedSet" key="objectRecords">
158
- <array key="orderedObjects">
159
- <object class="IBObjectRecord">
160
- <int key="objectID">0</int>
161
- <array key="object" id="0"/>
162
- <reference key="children" ref="1000"/>
163
- <nil key="parent"/>
164
- </object>
165
- <object class="IBObjectRecord">
166
- <int key="objectID">-1</int>
167
- <reference key="object" ref="841351856"/>
168
- <reference key="parent" ref="0"/>
169
- <string key="objectName">File's Owner</string>
170
- </object>
171
- <object class="IBObjectRecord">
172
- <int key="objectID">-2</int>
173
- <reference key="object" ref="606714003"/>
174
- <reference key="parent" ref="0"/>
175
- </object>
176
- <object class="IBObjectRecord">
177
- <int key="objectID">2</int>
178
- <reference key="object" ref="766721923"/>
179
- <array class="NSMutableArray" key="children">
180
- <object class="IBNSLayoutConstraint" id="624600486">
181
- <reference key="firstItem" ref="760254641"/>
182
- <int key="firstAttribute">3</int>
183
- <int key="relation">0</int>
184
- <reference key="secondItem" ref="766721923"/>
185
- <int key="secondAttribute">3</int>
186
- <float key="multiplier">1</float>
187
- <object class="IBLayoutConstant" key="constant">
188
- <double key="value">391</double>
189
- </object>
190
- <float key="priority">1000</float>
191
- <reference key="containingView" ref="766721923"/>
192
- <int key="scoringType">3</int>
193
- <float key="scoringTypeFloat">9</float>
194
- <int key="contentType">3</int>
195
- </object>
196
- <object class="IBNSLayoutConstraint" id="531322201">
197
- <reference key="firstItem" ref="138991431"/>
198
- <int key="firstAttribute">5</int>
199
- <int key="relation">0</int>
200
- <reference key="secondItem" ref="760254641"/>
201
- <int key="secondAttribute">5</int>
202
- <float key="multiplier">1</float>
203
- <object class="IBLayoutConstant" key="constant">
204
- <double key="value">0.0</double>
205
- </object>
206
- <float key="priority">1000</float>
207
- <reference key="containingView" ref="766721923"/>
208
- <int key="scoringType">6</int>
209
- <float key="scoringTypeFloat">24</float>
210
- <int key="contentType">2</int>
211
- </object>
212
- <object class="IBNSLayoutConstraint" id="288956434">
213
- <reference key="firstItem" ref="138991431"/>
214
- <int key="firstAttribute">6</int>
215
- <int key="relation">0</int>
216
- <reference key="secondItem" ref="760254641"/>
217
- <int key="secondAttribute">6</int>
218
- <float key="multiplier">1</float>
219
- <object class="IBLayoutConstant" key="constant">
220
- <double key="value">0.0</double>
221
- </object>
222
- <float key="priority">1000</float>
223
- <reference key="containingView" ref="766721923"/>
224
- <int key="scoringType">6</int>
225
- <float key="scoringTypeFloat">24</float>
226
- <int key="contentType">2</int>
227
- </object>
228
- <object class="IBNSLayoutConstraint" id="638909364">
229
- <reference key="firstItem" ref="138991431"/>
230
- <int key="firstAttribute">5</int>
231
- <int key="relation">0</int>
232
- <reference key="secondItem" ref="766721923"/>
233
- <int key="secondAttribute">5</int>
234
- <float key="multiplier">1</float>
235
- <object class="IBLayoutConstant" key="constant">
236
- <double key="value">300</double>
237
- </object>
238
- <float key="priority">1000</float>
239
- <reference key="containingView" ref="766721923"/>
240
- <int key="scoringType">3</int>
241
- <float key="scoringTypeFloat">9</float>
242
- <int key="contentType">3</int>
243
- </object>
244
- <object class="IBNSLayoutConstraint" id="539535921">
245
- <reference key="firstItem" ref="138991431"/>
246
- <int key="firstAttribute">3</int>
247
- <int key="relation">0</int>
248
- <reference key="secondItem" ref="766721923"/>
249
- <int key="secondAttribute">3</int>
250
- <float key="multiplier">1</float>
251
- <object class="IBLayoutConstant" key="constant">
252
- <double key="value">295</double>
253
- </object>
254
- <float key="priority">1000</float>
255
- <reference key="containingView" ref="766721923"/>
256
- <int key="scoringType">3</int>
257
- <float key="scoringTypeFloat">9</float>
258
- <int key="contentType">3</int>
259
- </object>
260
- <reference ref="138991431"/>
261
- <reference ref="760254641"/>
262
- </array>
263
- <reference key="parent" ref="0"/>
264
- </object>
265
- <object class="IBObjectRecord">
266
- <int key="objectID">4</int>
267
- <reference key="object" ref="138991431"/>
268
- <array class="NSMutableArray" key="children">
269
- <object class="IBNSLayoutConstraint" id="573769063">
270
- <reference key="firstItem" ref="138991431"/>
271
- <int key="firstAttribute">8</int>
272
- <int key="relation">0</int>
273
- <nil key="secondItem"/>
274
- <int key="secondAttribute">0</int>
275
- <float key="multiplier">1</float>
276
- <object class="IBLayoutConstant" key="constant">
277
- <double key="value">81</double>
278
- </object>
279
- <float key="priority">1000</float>
280
- <reference key="containingView" ref="138991431"/>
281
- <int key="scoringType">3</int>
282
- <float key="scoringTypeFloat">9</float>
283
- <int key="contentType">1</int>
284
- </object>
285
- </array>
286
- <reference key="parent" ref="766721923"/>
287
- </object>
288
- <object class="IBObjectRecord">
289
- <int key="objectID">5</int>
290
- <reference key="object" ref="539535921"/>
291
- <reference key="parent" ref="766721923"/>
292
- </object>
293
- <object class="IBObjectRecord">
294
- <int key="objectID">8</int>
295
- <reference key="object" ref="573769063"/>
296
- <reference key="parent" ref="138991431"/>
297
- </object>
298
- <object class="IBObjectRecord">
299
- <int key="objectID">9</int>
300
- <reference key="object" ref="638909364"/>
301
- <reference key="parent" ref="766721923"/>
302
- </object>
303
- <object class="IBObjectRecord">
304
- <int key="objectID">11</int>
305
- <reference key="object" ref="760254641"/>
306
- <array class="NSMutableArray" key="children"/>
307
- <reference key="parent" ref="766721923"/>
308
- </object>
309
- <object class="IBObjectRecord">
310
- <int key="objectID">12</int>
311
- <reference key="object" ref="624600486"/>
312
- <reference key="parent" ref="766721923"/>
313
- </object>
314
- <object class="IBObjectRecord">
315
- <int key="objectID">14</int>
316
- <reference key="object" ref="288956434"/>
317
- <reference key="parent" ref="766721923"/>
318
- </object>
319
- <object class="IBObjectRecord">
320
- <int key="objectID">16</int>
321
- <reference key="object" ref="531322201"/>
322
- <reference key="parent" ref="766721923"/>
323
- </object>
324
- </array>
325
- </object>
326
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
327
- <string key="-1.CustomClassName">RufusPageViewController</string>
328
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
329
- <string key="-2.CustomClassName">UIResponder</string>
330
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
331
- <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
332
- <boolean value="NO" key="11.IBViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
333
- <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
334
- <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
335
- <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
336
- <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
337
- <array key="2.IBViewMetadataConstraints">
338
- <reference ref="539535921"/>
339
- <reference ref="638909364"/>
340
- <reference ref="288956434"/>
341
- <reference ref="531322201"/>
342
- <reference ref="624600486"/>
343
- </array>
344
- <string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
345
- <array class="NSMutableArray" key="4.IBViewMetadataConstraints">
346
- <reference ref="573769063"/>
347
- </array>
348
- <boolean value="NO" key="4.IBViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
349
- <object class="NSMutableAttributedString" key="4.notes">
350
- <object class="NSMutableString" key="NSString">
351
- <characters key="NS.bytes"/>
352
- </object>
353
- </object>
354
- <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
355
- <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
356
- <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
357
- </dictionary>
358
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
359
- <nil key="activeLocalization"/>
360
- <dictionary class="NSMutableDictionary" key="localizations"/>
361
- <nil key="sourceID"/>
362
- <int key="maxID">18</int>
363
- </object>
364
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
365
- <int key="IBDocument.localizationMode">0</int>
366
- <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
367
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
368
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
369
- <bool key="IBDocument.UseAutolayout">YES</bool>
370
- <string key="IBCocoaTouchPluginVersion">2083</string>
371
- </data>
372
- </archive>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/>
5
+ </dependencies>
6
+ <objects>
7
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RufusPageViewController">
8
+ <connections>
9
+ <outlet property="rufusPageButton" destination="11" id="17"/>
10
+ <outlet property="view" destination="2" id="3"/>
11
+ </connections>
12
+ </placeholder>
13
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
14
+ <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2">
15
+ <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
16
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
17
+ <subviews>
18
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This is the Rufus Page" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4">
19
+ <rect key="frame" x="300" y="295" width="172" height="81"/>
20
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
21
+ <accessibility key="accessibilityConfiguration" label="rufusDescription"/>
22
+ <constraints>
23
+ <constraint firstAttribute="height" constant="81" id="8"/>
24
+ </constraints>
25
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
26
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
27
+ <nil key="highlightedColor"/>
28
+ </label>
29
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="11">
30
+ <rect key="frame" x="300" y="391" width="172" height="30"/>
31
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
32
+ <accessibility key="accessibilityConfiguration" label="rufusPageButton"/>
33
+ <state key="normal" title="Rufus Page Button">
34
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
35
+ </state>
36
+ <connections>
37
+ <action selector="goToHomePage:" destination="-1" eventType="touchUpInside" id="18"/>
38
+ </connections>
39
+ </button>
40
+ </subviews>
41
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
42
+ <constraints>
43
+ <constraint firstItem="4" firstAttribute="top" secondItem="2" secondAttribute="top" constant="295" id="5"/>
44
+ <constraint firstItem="4" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="300" id="9"/>
45
+ <constraint firstItem="11" firstAttribute="top" secondItem="2" secondAttribute="top" constant="391" id="12"/>
46
+ <constraint firstItem="4" firstAttribute="trailing" secondItem="11" secondAttribute="trailing" id="14"/>
47
+ <constraint firstItem="4" firstAttribute="leading" secondItem="11" secondAttribute="leading" id="16"/>
48
+ </constraints>
49
+ <simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>
50
+ </view>
51
+ </objects>
52
+ </document>