motion-ipkeyboard 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4949a0af228eb1b7c07d11330bd2497f624ab7e
4
- data.tar.gz: cb48cbfd1a54d26e8264ed201dd5fc0964de10a7
3
+ metadata.gz: 16debd0148e6df1c6a68d7a85a35e1e09b982637
4
+ data.tar.gz: 3bf895763f884c60385bd5ace7bcba28f2965fa9
5
5
  SHA512:
6
- metadata.gz: 268c64055813f55d76d92a3f7d186bc56e71682d4054f2d40fc38467a72160c87e890356c1ccaf58c86196f099412da892ffa07d35fdf7f9aa1c2842de7ae57b
7
- data.tar.gz: dd0358f1207550ab4a114ed177e3039c3430e94cad73fd1640daf98c1639328109c058d41d49c76bf36e872b48e603227bac40ad997fe2edc04e5fcb9643bdef
6
+ metadata.gz: bce6b1beb7a1e3370854a1a8fc1515f519c34657dfa1f3173632f556561c78dbb97f4a50d09c6b2340f1a7f459fc74160f8246be45ba00bb26483197ce4c8451
7
+ data.tar.gz: 0c0f0be38a6702b0454325cfca4c47c297ad5fdb825123d67c26265ce9b013e0a2f4335c1bdb01b3898aba143de5b818c0cf093864154a435903329d1ed319ae
data/README.md CHANGED
@@ -0,0 +1,53 @@
1
+ #motion-ipkeyboard
2
+
3
+ A simple custom keyboard meant for typing ip addresses.
4
+
5
+ ## Installing
6
+
7
+ ### With Bundler
8
+
9
+ 1. Add motion-ipkeyboard gem to your Gemfile
10
+ ```ruby
11
+ gem 'motion-ipkeyboard'
12
+ ```
13
+
14
+ 2. ```$ bundle install```
15
+
16
+ ### Without Bundler
17
+
18
+ 1. install the motion-ipkeyboard gem
19
+ ```$ gem install motion-ipkeyboard```
20
+ 2. add to your RubyMotion app Rakefile:
21
+
22
+ ```ruby
23
+ require 'rubygems'
24
+ require 'motion-ipkeyboard'
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ```ruby
30
+ # IPv6 keyboard
31
+ ipv6_input_field = UITextField.alloc.initWithFrame(CGRectMake(10, 100, 300, 45))
32
+ ipv6_input_field.setBackgroundColor(UIColor.whiteColor)
33
+ ipv6_input_field.inputView = RMIPKeyboard::Keyboard.alloc.initWithTextFieldAndLayout(ipv6_input_field,"ipv6")
34
+ ipv6_input_field.setDelegate(self)
35
+ self.view.addSubview(ipv6_input_field)
36
+
37
+ # IPv4 keyboard
38
+ ipv4_input_field = UITextField.alloc.initWithFrame(CGRectMake(10, 50, 300, 45))
39
+ ipv4_input_field.setBackgroundColor(UIColor.whiteColor)
40
+ ipv4_input_field.inputView = RMIPKeyboard::Keyboard.alloc.initWithTextFieldAndLayout(ipv4_input_field,"ipv4")
41
+ ipv4_input_field.setDelegate(self)
42
+ self.view.addSubview(ipv4_input_field)
43
+ ```
44
+
45
+ ## Screenshots
46
+
47
+ |IPv6|IPv4|
48
+ |---|---|
49
+ |![IPv6](ipkeyboard-ipv6@2x.png)|![IPv4](ipkeyboard-ipv4@2x.png)|
50
+
51
+ ## Thanks
52
+
53
+ The keyboard implementation is basicaly a translation of [doofyus/HexKeyboard](https://github.com/doofyus/HexKeyboard) to RubyMotion.
@@ -1,120 +1,117 @@
1
1
  module RMIPKeyboard
2
2
  class Keyboard < UIView
3
- HEX_KEYBOARD_HEIGHT = 305
4
- DEC_KEYBOARD_HEIGHT = 205
5
- SGRAYCOLOUR = UIColor.lightTextColor
6
3
 
7
4
  def initWithTextFieldAndLayout(textField, klayout="ipv6")
5
+
6
+ define_constants
7
+ calc_sizes(klayout)
8
+
9
+ self.initWithFrame(CGRectMake(0.0, 0.0, @screen_width, @keyboardHeight))
10
+
11
+ @textField = WeakRef.new(textField)
12
+ self.backgroundColor = @bg_color
13
+ self.createButtons
14
+ self
15
+ end
16
+
17
+ def define_constants
18
+ @bg_color = UIColor.lightGrayColor
19
+ @text_color = UIColor.lightTextColor
20
+ @screen_width = UIScreen.mainScreen.bounds.size.width
21
+ @screen_height = UIScreen.mainScreen.bounds.size.height
22
+ end
23
+
24
+ def calc_sizes(klayout)
25
+
8
26
  if klayout == "ipv6"
9
- @keyboardHeight = HEX_KEYBOARD_HEIGHT
27
+ @key_height = 49
10
28
  @numrows = 6.0
11
29
  @dividerChar = ":"
12
- @numberOfKeys = 15 # minus one
30
+ @numberOfKeys = 18
13
31
  else
14
- @keyboardHeight = DEC_KEYBOARD_HEIGHT
32
+ @key_height = 54
15
33
  @numrows = 4.0
16
34
  @dividerChar = "."
17
- @numberOfKeys = 9 # minus one
35
+ @numberOfKeys = 12
36
+ @first_origin
18
37
  end
19
-
20
- self.initWithFrame(CGRectMake(0.0, 0.0, 320.0, @keyboardHeight))
21
-
22
- @textField = WeakRef.new(textField)
23
- self.backgroundColor = UIColor.lightGrayColor
24
- self.createButtons
25
-
26
- self
38
+
39
+ @keyboardHeight = @key_height * @numrows
40
+ @key_width = @screen_width / 3.0
41
+ @rect = CGRectMake(0.0, 0.0, @key_width, @key_height)
27
42
  end
28
43
 
29
44
  def createButtons
30
- rect = CGRectMake(0.0, 0.0, ((self.bounds.size.width / 3.0) + 0.3).floor, (((@keyboardHeight - 5.0) / @numrows) + 0.3))
31
-
32
- # Makes the numerical buttons
33
45
  (1..@numberOfKeys).each do |num|
34
- rect.origin = self.buttonOriginPointForNumber(num)
35
-
36
- self.makeButtonWithRect(rect,self.buttonTitleForNumber(num),false)
46
+ @rect.origin = self.buttonOriginPointForNumber(num)
47
+ self.makeButtonWithRect(@rect,num,false)
37
48
  end
38
- # Makes the ':' button
39
- rect.origin = self.buttonOriginPointForNumber(@numberOfKeys + 1)
40
-
41
- self.makeButtonWithRect(rect,@dividerChar,true)
42
-
43
- # Makes the '0' button
44
- rect.origin = self.buttonOriginPointForNumber(@numberOfKeys + 2)
45
-
46
- self.makeButtonWithRect(rect,"0",false)
47
-
48
- # Makes the 'delete' button
49
- rect.origin = self.buttonOriginPointForNumber(@numberOfKeys + 3)
50
-
51
- button = UIButton.alloc.initWithFrame(rect)
52
- button.tag = @numberOfKeys + 3
53
- button.backgroundColor = SGRAYCOLOUR
54
- button.setImage(UIImage.imageNamed("deleteButton"), forState:UIControlStateNormal)
55
- button.addTarget(self, action:"changeButtonBackgroundColourForHighlight:", forControlEvents:(UIControlEventTouchDown|UIControlEventTouchDragEnter|UIControlEventTouchDragExit))
56
- button.addTarget(self, action:"changeTextFieldText:", forControlEvents:UIControlEventTouchUpInside)
57
-
58
- self.addSubview(button)
59
49
  end
60
50
 
61
- def makeButtonWithRect(rect, title, grayBackground)
51
+ def makeButtonWithRect(rect, num, grayBackground)
62
52
  button = UIButton.buttonWithType(UIButtonTypeCustom)
63
53
  button.frame = rect
64
54
  fontSize = 25.0
65
55
 
66
- unless NSCharacterSet.decimalDigitCharacterSet.isSupersetOfSet(NSCharacterSet.characterSetWithCharactersInString(title))
67
- fontSize = 20.0
56
+ button.backgroundColor = grayBackground ? @text_color : UIColor.whiteColor
57
+
58
+ if num != @numberOfKeys
59
+ button.titleLabel.font = UIFont.systemFontOfSize(fontSize)
60
+ button.setTitleColor(UIColor.darkTextColor, forState:UIControlStateNormal)
61
+ button.setTitle(buttonTitleForNumber(num), forState:UIControlStateNormal)
62
+ else
63
+ #button.backgroundColor = @text_color
64
+ button.setImage(UIImage.imageNamed("deleteButton"), forState:UIControlStateNormal)
65
+ button.setAccessibilityLabel("delete")
68
66
  end
69
-
70
- button.backgroundColor = grayBackground ? SGRAYCOLOUR : UIColor.whiteColor
71
- #button.backgroundColor = grayBackground ? UIColor.lightTextColor : UIColor.whiteColor
72
- button.titleLabel.font = UIFont.systemFontOfSize(fontSize)
73
- button.setTitleColor(UIColor.darkTextColor, forState:UIControlStateNormal)
74
- button.setTitle(title, forState:UIControlStateNormal)
67
+
68
+ if num == @numberOfKeys || num == (@numberOfKeys - 2)
69
+ button.backgroundColor = @text_color
70
+ end
71
+
72
+ button.tag = num
75
73
  button.addTarget(self, action:"changeButtonBackgroundColourForHighlight:", forControlEvents: (UIControlEventTouchDown|UIControlEventTouchDragEnter|UIControlEventTouchDragExit))
76
74
  button.addTarget(self, action:"changeTextFieldText:", forControlEvents: UIControlEventTouchUpInside)
77
-
75
+
78
76
  self.addSubview(button)
79
77
  end
80
78
 
81
79
  def buttonTitleForNumber(num)
82
80
  str = num.to_s
83
- if num <= 15
84
- if num >= 10
85
- str = ["A", "B", "C", "D", "E", "F"][num - 10]
86
- end
87
- else
88
- str = "F#%K"
81
+
82
+ if num > 9 && @numberOfKeys == 18
83
+ str = ["a", "b", "c", "d", "e", "f",@dividerChar,"0","del"][num - 10]
84
+ elsif num > 9
85
+ str = [@dividerChar,"0","del"][num - 10]
89
86
  end
90
87
  str
91
88
  end
92
-
89
+
93
90
  def buttonOriginPointForNumber(num)
94
91
  point = CGPointMake(0.0,0.0)
95
-
92
+
96
93
  if (num % 3) == 2 # 2nd button in the row
97
- point.x = (self.bounds.size.width / 3.0).ceil
94
+ point.x = @key_width.ceil
98
95
  elsif (num % 3) == 0 # 3rd button in the row
99
- point.x = (self.bounds.size.width / 3.0 * 2.0).ceil
96
+ point.x = (@key_width * 2.0).ceil
100
97
  end
101
-
98
+
102
99
  if num > 3 # The row multiplied by row's height
103
- point.y = ((num - 1) / 3.0).floor * (@keyboardHeight / @numrows)
100
+ point.y = ((num - 1) / 3.0).floor * (@key_height + 0.5)
104
101
  end
105
102
  point
106
103
  end
107
104
 
108
105
  def changeButtonBackgroundColourForHighlight(button)
109
- if button.backgroundColor == SGRAYCOLOUR
106
+ if button.backgroundColor == @text_color
110
107
  button.backgroundColor = UIColor.whiteColor
111
108
  else
112
- button.backgroundColor = SGRAYCOLOUR
109
+ button.backgroundColor = @text_color
113
110
  end
114
111
  end
115
112
 
116
113
  def changeTextFieldText(button)
117
- if button.tag == @numberOfKeys + 3
114
+ if button.tag == @numberOfKeys # Last key
118
115
  @textField.text = "#{@textField.text.chop}"
119
116
  else
120
117
  @textField.text = "#{@textField.text}#{button.titleLabel.text}"
@@ -123,4 +120,4 @@ module RMIPKeyboard
123
120
  end
124
121
 
125
122
  end
126
- end
123
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-ipkeyboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo André
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-19 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Custom iPhone keyboard. Made for iOS7
14
14
  email: diogo@regattapix.com