motion-prime 0.5.6 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +8 -3
- data/bin/prime +1 -1
- data/doc/code/getting_started.rb +53 -11
- data/doc/code/models.rb +32 -0
- data/doc/code/screens.rb +25 -19
- data/doc/code/sections.rb +27 -3
- data/doc/docs/docco.css +116 -279
- data/doc/docs/getting_started.html +125 -141
- data/doc/docs/models.html +102 -0
- data/doc/docs/public/fonts/fleurons.eot +0 -0
- data/doc/docs/public/fonts/fleurons.ttf +0 -0
- data/doc/docs/public/fonts/fleurons.woff +0 -0
- data/doc/docs/public/images/gray.png +0 -0
- data/doc/docs/screens.html +114 -167
- data/doc/docs/sections.html +90 -93
- data/files/Gemfile +1 -1
- data/files/Gemfile.lock +2 -2
- data/files/app/screens/{application_screen.rb → application.rb} +0 -0
- data/files/app/screens/{help_screen.rb → help.rb} +0 -0
- data/files/app/screens/{home_screen.rb → home.rb} +0 -0
- data/files/app/screens/{sidebar_screen.rb → sidebar.rb} +0 -0
- data/motion-prime/core_ext/time.rb +10 -0
- data/motion-prime/models/_association_mixin.rb +4 -0
- data/motion-prime/models/_base_mixin.rb +12 -3
- data/motion-prime/models/_dirty_mixin.rb +7 -1
- data/motion-prime/models/_nano_bag_mixin.rb +9 -2
- data/motion-prime/models/_sync_mixin.rb +24 -19
- data/motion-prime/sections/base_section.rb +17 -10
- data/motion-prime/version.rb +1 -1
- metadata +13 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGY4ZTYxMzFiMWVjNjA2ZGFmNTVlNzIxYjAwOTMzZjc3OTdhNzU3NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2ZmNGQ3OTY1MzZmMjViNDQyNzljYmZiMTdkYWY0ZGM1YzQ4OThkOA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzUyNzliMGNhYjIyMjEyNDdhN2FkNmNhYTdiOWIwNzc0ZDhlMTFjMzc1ZTRm
|
10
|
+
NDgzZmFlN2UxYzYwMzZjNmNjMGEwNjdmOWY2ZmRhNDdiNjM5MDA1YjQwYTdk
|
11
|
+
OTY2NzFmYmNhMzdhMTIyNzY4YWE1NmUyNjY3OTBmYmU0MDM0Yzk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MWQ2MGIyMzhhODk5MThmZmY5YzY2MGI2MDMyZjJhNmE5NjQ5MTE5ZTg0MDcz
|
14
|
+
MTA1YTQ5OWNiODA5NGEzZjg5MDc1Y2ZjOGJhNTI1MzIwODA2ZjY4MzgxM2Yy
|
15
|
+
NTcwNDNmOWQ5ODQ5YzYzMjgyYzJjNjAzMGM0Y2ZhODk2M2QzZjI=
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# MotionPrime [](https://travis-ci.org/droidlabs/motion-prime) [](https://codeclimate.com/github/droidlabs/motion-prime) [](https://travis-ci.org/droidlabs/motion-prime) [](https://codeclimate.com/github/droidlabs/motion-prime) [](https://roadchange.com/droidlabs/motion-prime)
|
2
2
|
|
3
3
|

|
4
4
|
|
@@ -75,6 +75,11 @@ MotionPrime is yet another framework written on RubyMotion for creating really f
|
|
75
75
|
|
76
76
|
* [Simple to-do app](https://github.com/droidlabs/prime_sample_todo)
|
77
77
|
|
78
|
+
## Documentation
|
79
|
+
|
80
|
+
* [Getting Started](http://prime.droidlabs.pro/)
|
81
|
+
* [RubyDoc](http://rubydoc.info/gems/motion-prime/)
|
82
|
+
|
78
83
|
## Contributing
|
79
84
|
|
80
85
|
1. Fork it
|
@@ -83,14 +88,14 @@ MotionPrime is yet another framework written on RubyMotion for creating really f
|
|
83
88
|
4. Push to the branch (`git push origin my-new-feature`)
|
84
89
|
5. Create new Pull Request
|
85
90
|
|
86
|
-
## Help with
|
91
|
+
## Help us with documentation
|
87
92
|
|
88
93
|
We are using [Docco](http://jashkenas.github.io/docco/) to generate documentation.
|
89
94
|
|
90
95
|
Please install the tool and run this to update documentation:
|
91
96
|
|
92
97
|
```
|
93
|
-
$ cd doc && docco code/*.rb
|
98
|
+
$ cd doc && docco code/*.rb --layout linear
|
94
99
|
```
|
95
100
|
|
96
101
|
## Thanks for using MotionPrime!
|
data/bin/prime
CHANGED
@@ -27,7 +27,7 @@ class App
|
|
27
27
|
def self.create(name)
|
28
28
|
return puts "Usage: prime new <appname>" unless name.to_s.length > 0
|
29
29
|
info "Creating new MotionPrime iOS app: #{name}"
|
30
|
-
sh "motion create --template=
|
30
|
+
sh "motion create #{name} --template=motion-prime"
|
31
31
|
info "Command: bundle instal"
|
32
32
|
sh "cd ./#{name} & bundle install"
|
33
33
|
info "Command: pod setup"
|
data/doc/code/getting_started.rb
CHANGED
@@ -1,5 +1,33 @@
|
|
1
|
+
# ** Why MotionPrime? **
|
2
|
+
|
3
|
+
# Did you ever notice that table views in your RubyMotion application scrolls not smoothly?
|
4
|
+
#
|
5
|
+
# Let's see why:
|
6
|
+
#
|
7
|
+
# 
|
8
|
+
#
|
9
|
+
# Each table cell will create 5 UIViews inside and it's very slow operation for mobile device.
|
10
|
+
# The main feature of MotionPrime is that it creates abstraction layer for "elements" in screen.
|
11
|
+
# If it's possible in current context, MotionPrime will draw elements directly in table cell using CoreGraphics.
|
12
|
+
# Just add 'label' element to the section:
|
13
|
+
|
14
|
+
class MySection < Prime::Section
|
15
|
+
element :greeting, text: 'Hello World', type: :label
|
16
|
+
end
|
17
|
+
|
18
|
+
# It will be rendered 5 times faster in iPhone 4/4s for cells containing 5 elements.
|
19
|
+
#
|
20
|
+
# You can force it to use UIView instead of CoreGraphics:
|
21
|
+
|
22
|
+
class MySection < Prime::Section
|
23
|
+
element :greeting, text: 'Hello World', type: :label, as: :view
|
24
|
+
end
|
25
|
+
|
26
|
+
# MotionPrime contains other features to improve application performance, but performance is not the only feature.
|
27
|
+
#
|
28
|
+
# So let's get started.
|
29
|
+
|
1
30
|
# **1. Install required tools.**
|
2
|
-
---
|
3
31
|
|
4
32
|
# * Ruby 1.9.3 or newer.
|
5
33
|
$ rvm install 2.0.0
|
@@ -7,11 +35,16 @@ $ rvm install 2.0.0
|
|
7
35
|
# * RubyMotion.
|
8
36
|
Visit http://www.rubymotion.com
|
9
37
|
|
10
|
-
# **2. Create
|
38
|
+
# **2. Create MotionPrime project.**
|
39
|
+
|
40
|
+
$ gem install motion-prime
|
41
|
+
$ prime new hello
|
42
|
+
|
43
|
+
# **3. Create application delegate.**
|
11
44
|
#
|
12
|
-
#
|
45
|
+
# E.g. `hello/app/app_delegate.rb`
|
13
46
|
#
|
14
|
-
#
|
47
|
+
# Inherit `AppDelegate` class from `Prime::BaseAppDelegate` and rewrite the `on_load` method, which will be runned after starting application.
|
15
48
|
|
16
49
|
class AppDelegate < Prime::BaseAppDelegate
|
17
50
|
def on_load(app, options)
|
@@ -19,11 +52,12 @@ class AppDelegate < Prime::BaseAppDelegate
|
|
19
52
|
end
|
20
53
|
end
|
21
54
|
|
22
|
-
# **
|
55
|
+
# **4. Create the main screen.**
|
23
56
|
#
|
24
|
-
#
|
57
|
+
# E.g. `hello/app/screens/home.rb`
|
58
|
+
#
|
59
|
+
# Inherit screen from `Prime::Screen` and rewrite the `render` method, which will be runned after first opening screen.
|
25
60
|
#
|
26
|
-
# NOTE: it's recommended to use instance variables for sections, e.g. `@main_section` instead of `main_section`.
|
27
61
|
|
28
62
|
class MainScreen < Prime::Screen
|
29
63
|
title 'Main screen'
|
@@ -34,18 +68,22 @@ class MainScreen < Prime::Screen
|
|
34
68
|
end
|
35
69
|
end
|
36
70
|
|
37
|
-
# **
|
71
|
+
# **5. Create your first section.**
|
72
|
+
#
|
73
|
+
# E.g. `hello/app/sections/home/section.rb`
|
38
74
|
#
|
39
75
|
# "Section" is something like helper, which contains "Elements".
|
40
76
|
#
|
41
77
|
# Each element will be added to the parent screen when you run `section.render`
|
42
78
|
|
43
|
-
class
|
79
|
+
class HomeSection < Prime::Section
|
44
80
|
element :title, text: "Hello World"
|
45
81
|
element :avatar, image: "images/avatar.png", type: :image
|
46
82
|
end
|
47
83
|
|
48
|
-
# **
|
84
|
+
# **6. Create your first stylesheet file.**
|
85
|
+
#
|
86
|
+
# E.g. `hello/app/styles/home.rb`
|
49
87
|
#
|
50
88
|
# Styles will be applied to each element in section.
|
51
89
|
# The simplest rule by default is: `:section-name_:element-name`.
|
@@ -61,4 +99,8 @@ end
|
|
61
99
|
|
62
100
|
Prime::Styles.define :my_profile do
|
63
101
|
style :title, width: 300, height: 20
|
64
|
-
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# ** Next **
|
105
|
+
#
|
106
|
+
# [Read more about Screens](screens.html)
|
data/doc/code/models.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# ** What is a Model? **
|
2
|
+
#
|
3
|
+
# "Model" will help you to store any information in database and sync this information with server.
|
4
|
+
|
5
|
+
# ** Create a model. **
|
6
|
+
#
|
7
|
+
# Just inherit it from `Prime::Model`.
|
8
|
+
|
9
|
+
class Event < Prime::Model
|
10
|
+
end
|
11
|
+
|
12
|
+
# ** Add some attributes to model. **
|
13
|
+
#
|
14
|
+
# E.g. we want event to have title and description.
|
15
|
+
|
16
|
+
class Event < Prime::Model
|
17
|
+
attribute :title
|
18
|
+
attribute :description
|
19
|
+
end
|
20
|
+
|
21
|
+
# ** Create some item. **
|
22
|
+
#
|
23
|
+
# This event will be saved to database and accessible after restart of application.
|
24
|
+
|
25
|
+
event = Event.create(
|
26
|
+
title: 'MotionPrime release.',
|
27
|
+
description: 'Check out new features.'
|
28
|
+
)
|
29
|
+
|
30
|
+
# ** Retrieve all events **
|
31
|
+
|
32
|
+
Event.all
|
data/doc/code/screens.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
# "Screen" is the most common class in MotionPrime, you can create entire application using only "Screens".
|
4
4
|
# Generally it's just a "UIViewController" wrapper with some syntax sugar.
|
5
5
|
# For RubyOnRails developers the nearest analogy would be "Controllers".
|
6
|
-
---
|
7
6
|
|
8
7
|
# ** Create a screen. **
|
9
8
|
#
|
@@ -27,7 +26,6 @@ end
|
|
27
26
|
#
|
28
27
|
# Title will be used in screen's navigation controller and will be shown on top of screen.
|
29
28
|
#
|
30
|
-
# NOTE: screen should be created with enabled navigation (see "Initialize screen" block).
|
31
29
|
|
32
30
|
class FooScreen < Prime::Screen
|
33
31
|
title 'Foo screen'
|
@@ -44,12 +42,13 @@ end
|
|
44
42
|
# Available options:
|
45
43
|
# * `:navigation`. When this options is true, screen will be created with navigation support: it will allow adding title and left/right buttons.
|
46
44
|
# This option is true by default.
|
47
|
-
|
48
|
-
def
|
49
|
-
|
45
|
+
class AppDelegate < Prime::BaseAppDelegate
|
46
|
+
def on_load(application, launch_options)
|
47
|
+
foo_screen = FooScreen.new(navigation: false)
|
48
|
+
end
|
50
49
|
end
|
51
50
|
|
52
|
-
# ** Open screen:
|
51
|
+
# ** Open screen: from app delegate. **
|
53
52
|
|
54
53
|
# Opening screen using app delegate is the most basic way, you would use it at least on app load.
|
55
54
|
#
|
@@ -61,27 +60,34 @@ end
|
|
61
60
|
# * `:sidebar`. Send `Prime::Screen` instance to this option if you want to create root screen with sidebar.
|
62
61
|
# Value of this options will be used as sidebar controller.
|
63
62
|
# NOTE: you should install some gem providing sidebar functionality, e.g. 'prime_reside_menu'
|
64
|
-
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
63
|
+
class AppDelegate < Prime::BaseAppDelegate
|
64
|
+
def on_load(application, launch_options)
|
65
|
+
foo_screen = FooScreen.new
|
66
|
+
sidebar = MySidebar.new(navigation: false)
|
67
|
+
app_delegate.open_screen foo_screen, sidebar: sidebar
|
68
|
+
end
|
69
69
|
end
|
70
70
|
|
71
|
-
# ** Open screen:
|
71
|
+
# ** Open screen: from parent screen. **
|
72
72
|
|
73
73
|
# Opening screen using parent screen is usefull if you want to create inherited screen.
|
74
74
|
# Parent screen should have been initialized with navigation support.
|
75
|
-
|
76
|
-
def
|
77
|
-
|
78
|
-
|
75
|
+
class FooScreen < Prime::Screen
|
76
|
+
def render
|
77
|
+
second_screen = SecondScreen.new(navigation: true)
|
78
|
+
foo_screen.open_screen second_screen
|
79
|
+
end
|
79
80
|
end
|
80
81
|
|
81
82
|
# ** Open screen: using short version. **
|
82
83
|
|
83
84
|
# Opening screen using short syntax available both for opening via app delegate and via parent screen.
|
85
|
+
class AppDelegate < Prime::BaseAppDelegate
|
86
|
+
def on_load(application, launch_options)
|
87
|
+
open_screen :foo_bar, sidebar: true
|
88
|
+
end
|
89
|
+
end
|
84
90
|
|
85
|
-
|
86
|
-
|
87
|
-
|
91
|
+
# ** Next **
|
92
|
+
#
|
93
|
+
# [Read more about Sections](sections.html)
|
data/doc/code/sections.rb
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
# That way increases application speed (especially on Table elements) by 5-10 times.
|
9
9
|
#
|
10
10
|
# Let's get started.
|
11
|
-
---
|
12
11
|
|
13
12
|
# ** Create a section. **
|
14
13
|
#
|
@@ -20,7 +19,9 @@ end
|
|
20
19
|
# ** Add some elements to the section. **
|
21
20
|
#
|
22
21
|
# Each element should have name and type: "image", "label", "button", etc.
|
22
|
+
#
|
23
23
|
# When you send `:text` option, type will be "label" by default.
|
24
|
+
#
|
24
25
|
# When you send `:image` option, type will be "image" by default.
|
25
26
|
|
26
27
|
class FooSection < Prime::Section
|
@@ -29,9 +30,9 @@ class FooSection < Prime::Section
|
|
29
30
|
element :cheer, type: :button
|
30
31
|
end
|
31
32
|
|
32
|
-
# ** Render Section
|
33
|
+
# ** Render Section to Screen **
|
33
34
|
#
|
34
|
-
# NOTE:
|
35
|
+
# NOTE: it's recommended to use instance variables for sections, e.g. `@main_section` instead of `main_section`.
|
35
36
|
|
36
37
|
class FooScreen < Prime::Screen
|
37
38
|
def render
|
@@ -39,3 +40,26 @@ class FooScreen < Prime::Screen
|
|
39
40
|
@main_section.render
|
40
41
|
end
|
41
42
|
end
|
43
|
+
|
44
|
+
# ** Add some styles for section **
|
45
|
+
#
|
46
|
+
# Generally styles are just attributes of UIView elements.
|
47
|
+
#
|
48
|
+
# Let's style the UILabel element (:welcome label element we added above.)
|
49
|
+
#
|
50
|
+
# We send :foo parameter to `define`, because we have section named `foo` (FooSection)
|
51
|
+
# and :welcome parameter to `style`, because the name of element is `welcome`.
|
52
|
+
#
|
53
|
+
Prime::Styles.define :foo do
|
54
|
+
style :welcome,
|
55
|
+
text_color: :black,
|
56
|
+
top: 100,
|
57
|
+
width: 320,
|
58
|
+
left: 20,
|
59
|
+
font: proc { :system.uifont(20) },
|
60
|
+
size_to_fit: true,
|
61
|
+
end
|
62
|
+
|
63
|
+
# ** Next **
|
64
|
+
#
|
65
|
+
# [Read more about Models](models.html)
|
data/doc/docs/docco.css
CHANGED
@@ -30,85 +30,132 @@
|
|
30
30
|
font-style: normal;
|
31
31
|
}
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
height:100%;
|
33
|
+
@font-face {
|
34
|
+
font-family: 'fleurons';
|
35
|
+
src: url('public/fonts/fleurons.eot');
|
36
|
+
src: url('public/fonts/fleurons.eot?#iefix') format('embedded-opentype'),
|
37
|
+
url('public/fonts/fleurons.woff') format('woff'),
|
38
|
+
url('public/fonts/fleurons.ttf') format('truetype');
|
39
|
+
font-weight: normal;
|
40
|
+
font-style: normal;
|
42
41
|
}
|
43
|
-
#container { min-height: 100%; }
|
44
42
|
|
45
|
-
|
46
|
-
color: #000;
|
47
|
-
}
|
43
|
+
/*--------------------- Base Styles ----------------------------*/
|
48
44
|
|
49
|
-
|
50
|
-
font-
|
51
|
-
|
45
|
+
body {
|
46
|
+
font-family: "aller-light";
|
47
|
+
background: url('public/images/gray.png') #fff;
|
48
|
+
background-size: 322px;
|
49
|
+
margin: 0;
|
52
50
|
}
|
53
51
|
|
54
|
-
|
55
|
-
|
52
|
+
hr {
|
53
|
+
height: 1px;
|
54
|
+
background: #ddd;
|
55
|
+
border: 0;
|
56
56
|
}
|
57
57
|
|
58
58
|
h1, h2, h3, h4, h5, h6 {
|
59
59
|
color: #112233;
|
60
|
-
line-height: 1em;
|
61
60
|
font-weight: normal;
|
62
61
|
font-family: "novecento-bold";
|
63
62
|
text-transform: uppercase;
|
64
|
-
|
63
|
+
line-height: 1em;
|
64
|
+
margin-top: 50px;
|
65
65
|
}
|
66
|
+
h1 {
|
67
|
+
margin: 0;
|
68
|
+
text-align: center;
|
69
|
+
}
|
70
|
+
h2 {
|
71
|
+
font-size: 1.3em;
|
72
|
+
}
|
73
|
+
h1:after {
|
74
|
+
content: "8";
|
75
|
+
display: block;
|
76
|
+
font-family: "fleurons";
|
77
|
+
color: #999;
|
78
|
+
font-size: 80px;
|
79
|
+
padding: 10px 0 25px;
|
80
|
+
}
|
66
81
|
|
67
|
-
|
68
|
-
|
82
|
+
a {
|
83
|
+
color: #000;
|
69
84
|
}
|
70
85
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
height: 1px;
|
75
|
-
margin: 20px 0;
|
86
|
+
b, strong {
|
87
|
+
font-weight: normal;
|
88
|
+
font-family: "aller-bold";
|
76
89
|
}
|
77
90
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
91
|
+
blockquote {
|
92
|
+
border-left: 5px solid #ccc;
|
93
|
+
margin-left: 0;
|
94
|
+
padding: 1px 0 1px 1em;
|
82
95
|
}
|
83
|
-
.
|
84
|
-
|
96
|
+
.page blockquote p {
|
97
|
+
font-family: Menlo, Consolas, Monaco, monospace;
|
98
|
+
font-size: 14px; line-height: 19px;
|
99
|
+
color: #999;
|
100
|
+
margin: 10px 0 0;
|
101
|
+
white-space: pre-wrap;
|
102
|
+
}
|
103
|
+
|
104
|
+
pre, tt, code {
|
105
|
+
font-family: Menlo, Consolas, Monaco, monospace;
|
106
|
+
font-size: 12px;
|
107
|
+
display: inline-block;
|
108
|
+
border: 1px solid #EAEAEA;
|
109
|
+
background: #f8f8f8;
|
110
|
+
color: #555;
|
111
|
+
padding: 0 5px;
|
112
|
+
line-height: 20px;
|
113
|
+
}
|
114
|
+
.page pre {
|
85
115
|
margin: 0;
|
86
|
-
|
116
|
+
width: 608px;
|
117
|
+
padding: 10px 15px;
|
87
118
|
background: #fcfcfc;
|
88
119
|
-moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
89
120
|
-webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
90
121
|
box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
91
122
|
overflow-x: auto;
|
92
123
|
}
|
93
|
-
.
|
124
|
+
.page pre code {
|
94
125
|
border: 0;
|
95
126
|
padding: 0;
|
96
127
|
background: transparent;
|
97
128
|
}
|
98
129
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
130
|
+
.fleur {
|
131
|
+
font-family: "fleurons";
|
132
|
+
font-size: 100px;
|
133
|
+
text-align: center;
|
134
|
+
margin: 40px 0;
|
135
|
+
color: #ccc;
|
104
136
|
}
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
137
|
+
|
138
|
+
/*--------------------- Layout ----------------------------*/
|
139
|
+
|
140
|
+
.container {
|
141
|
+
width: 760px;
|
142
|
+
margin: 0 auto;
|
143
|
+
background: #fff;
|
144
|
+
background: rgba(255,255,255, 0.4);
|
145
|
+
overflow: hidden;
|
146
|
+
}
|
147
|
+
.page {
|
148
|
+
width: 640px;
|
149
|
+
padding: 30px;
|
150
|
+
margin: 30px;
|
151
|
+
background: #fff;
|
152
|
+
font-size: 17px;
|
153
|
+
line-height: 26px;
|
111
154
|
}
|
155
|
+
.page p {
|
156
|
+
color: #30404f;
|
157
|
+
margin: 26px 0;
|
158
|
+
}
|
112
159
|
|
113
160
|
ul.sections {
|
114
161
|
list-style: none;
|
@@ -116,249 +163,39 @@ ul.sections {
|
|
116
163
|
margin:0;
|
117
164
|
}
|
118
165
|
|
119
|
-
|
120
|
-
|
121
|
-
container without overlap because of margin/padding.
|
122
|
-
|
123
|
-
More Info : http://www.quirksmode.org/css/box.html
|
124
|
-
*/
|
125
|
-
ul.sections > li > div {
|
126
|
-
-moz-box-sizing: border-box; /* firefox */
|
127
|
-
-ms-box-sizing: border-box; /* ie */
|
128
|
-
-webkit-box-sizing: border-box; /* webkit */
|
129
|
-
-khtml-box-sizing: border-box; /* konqueror */
|
130
|
-
box-sizing: border-box; /* css3 */
|
166
|
+
.page li p {
|
167
|
+
margin: 12px 0;
|
131
168
|
}
|
132
169
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
|
141
|
-
|
142
|
-
text-align: right;
|
143
|
-
list-style: none;
|
144
|
-
}
|
145
|
-
|
146
|
-
#jump_to a {
|
147
|
-
text-decoration: none;
|
148
|
-
}
|
149
|
-
|
150
|
-
#jump_to a.large {
|
151
|
-
display: none;
|
152
|
-
}
|
153
|
-
#jump_to a.small {
|
154
|
-
font-size: 22px;
|
155
|
-
font-weight: bold;
|
156
|
-
color: #676767;
|
170
|
+
.toc {
|
171
|
+
max-height: 0;
|
172
|
+
overflow: hidden;
|
173
|
+
text-align: center;
|
174
|
+
font-size: 13px;
|
175
|
+
line-height: 20px;
|
176
|
+
-moz-transition: max-height 1s;
|
177
|
+
-webkit-transition: max-height 1s;
|
178
|
+
transition: max-height 1s;
|
157
179
|
}
|
158
|
-
|
159
|
-
|
160
|
-
position: fixed;
|
161
|
-
right: 0; top: 0;
|
162
|
-
padding: 10px 15px;
|
163
|
-
margin:0;
|
164
|
-
}
|
165
|
-
|
166
|
-
#jump_wrapper {
|
167
|
-
display: none;
|
168
|
-
padding:0;
|
169
|
-
}
|
170
|
-
|
171
|
-
#jump_to:hover #jump_wrapper {
|
172
|
-
display: block;
|
173
|
-
}
|
174
|
-
|
175
|
-
#jump_page {
|
176
|
-
padding: 5px 0 3px;
|
177
|
-
margin: 0 0 25px 25px;
|
178
|
-
}
|
179
|
-
|
180
|
-
#jump_page .source {
|
181
|
-
display: block;
|
182
|
-
padding: 15px;
|
183
|
-
text-decoration: none;
|
184
|
-
border-top: 1px solid #eee;
|
185
|
-
}
|
186
|
-
|
187
|
-
#jump_page .source:hover {
|
188
|
-
background: #f5f5ff;
|
189
|
-
}
|
190
|
-
|
191
|
-
#jump_page .source:first-child {
|
192
|
-
}
|
193
|
-
|
194
|
-
/*---------------------- Low resolutions (> 320px) ---------------------*/
|
195
|
-
@media only screen and (min-width: 320px) {
|
196
|
-
.pilwrap { display: none; }
|
197
|
-
|
198
|
-
ul.sections > li > div {
|
199
|
-
display: block;
|
200
|
-
padding:5px 10px 0 10px;
|
201
|
-
}
|
202
|
-
|
203
|
-
ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
|
204
|
-
padding-left: 30px;
|
205
|
-
}
|
206
|
-
|
207
|
-
ul.sections > li > div.content {
|
208
|
-
background: #f5f5ff;
|
209
|
-
overflow-x:auto;
|
210
|
-
-webkit-box-shadow: inset 0 0 5px #e5e5ee;
|
211
|
-
box-shadow: inset 0 0 5px #e5e5ee;
|
212
|
-
border: 1px solid #dedede;
|
213
|
-
margin:5px 10px 5px 10px;
|
214
|
-
padding-bottom: 5px;
|
215
|
-
}
|
216
|
-
|
217
|
-
ul.sections > li > div.annotation pre {
|
218
|
-
margin: 7px 0 7px;
|
219
|
-
padding-left: 15px;
|
220
|
-
}
|
221
|
-
|
222
|
-
ul.sections > li > div.annotation p tt, .annotation code {
|
223
|
-
background: #f8f8ff;
|
224
|
-
border: 1px solid #dedede;
|
225
|
-
font-size: 12px;
|
226
|
-
padding: 0 0.2em;
|
227
|
-
}
|
228
|
-
}
|
229
|
-
|
230
|
-
/*---------------------- (> 481px) ---------------------*/
|
231
|
-
@media only screen and (min-width: 481px) {
|
232
|
-
#container {
|
233
|
-
position: relative;
|
234
|
-
}
|
235
|
-
body {
|
236
|
-
background-color: #F5F5FF;
|
237
|
-
font-size: 15px;
|
238
|
-
line-height: 21px;
|
239
|
-
}
|
240
|
-
pre, tt, code {
|
241
|
-
line-height: 18px;
|
242
|
-
}
|
243
|
-
p, ul, ol {
|
244
|
-
margin: 0 0 15px;
|
245
|
-
}
|
246
|
-
|
247
|
-
|
248
|
-
#jump_to {
|
249
|
-
padding: 5px 10px;
|
180
|
+
.header:hover .toc {
|
181
|
+
max-height: 500px;
|
250
182
|
}
|
251
|
-
|
252
|
-
|
183
|
+
.toc h3 {
|
184
|
+
margin-top: 20px;
|
253
185
|
}
|
254
|
-
|
255
|
-
|
256
|
-
text-transform: uppercase;
|
257
|
-
}
|
258
|
-
#jump_page .source {
|
259
|
-
padding: 5px 10px;
|
260
|
-
}
|
261
|
-
#jump_to a.large {
|
262
|
-
display: inline-block;
|
263
|
-
}
|
264
|
-
#jump_to a.small {
|
265
|
-
display: none;
|
266
|
-
}
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
#background {
|
271
|
-
position: absolute;
|
272
|
-
top: 0; bottom: 0;
|
273
|
-
width: 350px;
|
274
|
-
background: #fff;
|
275
|
-
border-right: 1px solid #e5e5ee;
|
276
|
-
z-index: -1;
|
277
|
-
}
|
278
|
-
|
279
|
-
ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
|
280
|
-
padding-left: 40px;
|
281
|
-
}
|
282
|
-
|
283
|
-
ul.sections > li {
|
284
|
-
white-space: nowrap;
|
285
|
-
}
|
286
|
-
|
287
|
-
ul.sections > li > div {
|
186
|
+
.toc ol {
|
187
|
+
margin: 0 0 20px 0;
|
288
188
|
display: inline-block;
|
289
|
-
}
|
290
|
-
|
291
|
-
ul.sections > li > div.annotation {
|
292
|
-
max-width: 350px;
|
293
|
-
min-width: 350px;
|
294
|
-
min-height: 5px;
|
295
|
-
padding: 13px;
|
296
|
-
overflow-x: hidden;
|
297
|
-
white-space: normal;
|
298
|
-
vertical-align: top;
|
299
189
|
text-align: left;
|
190
|
+
list-style-type: upper-roman;
|
300
191
|
}
|
301
|
-
|
302
|
-
|
303
|
-
padding-left: 15px;
|
304
|
-
}
|
305
|
-
|
306
|
-
ul.sections > li > div.content {
|
307
|
-
padding: 13px;
|
308
|
-
vertical-align: top;
|
309
|
-
background: #f5f5ff;
|
310
|
-
border: none;
|
311
|
-
-webkit-box-shadow: none;
|
312
|
-
box-shadow: none;
|
313
|
-
}
|
314
|
-
|
315
|
-
.pilwrap {
|
316
|
-
position: relative;
|
317
|
-
display: inline;
|
318
|
-
}
|
319
|
-
|
320
|
-
.pilcrow {
|
321
|
-
font: 12px Arial;
|
322
|
-
text-decoration: none;
|
323
|
-
color: #454545;
|
324
|
-
position: absolute;
|
325
|
-
top: 3px; left: -20px;
|
326
|
-
padding: 1px 2px;
|
327
|
-
opacity: 0;
|
328
|
-
-webkit-transition: opacity 0.2s linear;
|
329
|
-
}
|
330
|
-
.for-h1 .pilcrow {
|
331
|
-
top: 47px;
|
332
|
-
}
|
333
|
-
.for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow {
|
334
|
-
top: 35px;
|
192
|
+
.toc li {
|
193
|
+
font-family: 'novecento-bold';
|
335
194
|
}
|
195
|
+
.toc li a {
|
196
|
+
font-family: 'aller-light';
|
197
|
+
}
|
336
198
|
|
337
|
-
ul.sections > li > div.annotation:hover .pilcrow {
|
338
|
-
opacity: 1;
|
339
|
-
}
|
340
|
-
}
|
341
|
-
|
342
|
-
/*---------------------- (> 1025px) ---------------------*/
|
343
|
-
@media only screen and (min-width: 1025px) {
|
344
|
-
|
345
|
-
body {
|
346
|
-
font-size: 16px;
|
347
|
-
line-height: 24px;
|
348
|
-
}
|
349
|
-
|
350
|
-
#background {
|
351
|
-
width: 525px;
|
352
|
-
}
|
353
|
-
ul.sections > li > div.annotation {
|
354
|
-
max-width: 525px;
|
355
|
-
min-width: 525px;
|
356
|
-
padding: 10px 25px 1px 50px;
|
357
|
-
}
|
358
|
-
ul.sections > li > div.content {
|
359
|
-
padding: 9px 15px 16px 25px;
|
360
|
-
}
|
361
|
-
}
|
362
199
|
|
363
200
|
/*---------------------- Syntax Highlighting -----------------------------*/
|
364
201
|
|