hail.rb 2015.10.12.00.44 → 2015.10.13.02.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hail/account.rb +7 -2
  3. data/lib/hail/gui.rb +56 -8
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5a3f1e20a1ff59f487f66c521029a1e6208af1d
4
- data.tar.gz: 2fbb4e2052803cefd5998861e0710edd7471241d
3
+ metadata.gz: 08aaebc776997e8e93d0fa92e3121430bafd4acf
4
+ data.tar.gz: b9942bc062494a03c52e8ac3c6b0c10b0726d474
5
5
  SHA512:
6
- metadata.gz: 1eb9a5bd3c264afd10b3cabb66de923dd2d82bbeeb42784cb02289fca6d694dff7440082d704206ff5d586547abd4afffa806118f7474856460f44383746e278
7
- data.tar.gz: a96b20927f4183c3c599b8a6efa219ef4b357b19a771b61768c82de07ac2f075186e9385e698bb9efdf6b59f1545be2643844916633cab706ea64782babcd04a
6
+ metadata.gz: 8934a534651a1b9bf655f386cb1d4e0e9e102b95fd53d635c065a11711ba86888209f6a20e4de827d9f7654028c87c6444ab76b344529c19701f3346c50fbe80
7
+ data.tar.gz: b2a81bce737c9ccec3e531a7b4f71fa4297c688da072ddb4127f526b4fc1cbb718b5881f8338ef754976015aa8808355427c64a0b895fbab4a95d65b688b57d3
data/lib/hail/account.rb CHANGED
@@ -15,10 +15,15 @@ class Hail::Account
15
15
 
16
16
 
17
17
  list = {name: [], subject: [], date: []}
18
+
19
+ list.each do |v|
20
+ v.hg_style = {selectable: true}
21
+ end
22
+
18
23
  @imap.sort(["REVERSE", "SUBJECT"], ["ALL"], "US-ASCII").each do |message_id|
19
24
  envelope = @imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
20
- list[:name] << Hail::Mail.header_readable(envelope.from[0].name)
21
- list[:subject] << Hail::Mail.header_readable(envelope.subject)
25
+ list[:name] << Hail::Mail.header_readable(envelope.from[0].name).to_s
26
+ list[:subject] << Hail::Mail.header_readable(envelope.subject).to_s
22
27
 
23
28
  date = @imap.fetch(message_id, "INTERNALDATE")[0].attr["INTERNALDATE"]
24
29
  date = DateTime.parse(date)
data/lib/hail/gui.rb CHANGED
@@ -7,6 +7,8 @@ class Hail::GUI
7
7
  @buffer = []
8
8
  @render_buffer = 0
9
9
  Curses.init_screen()
10
+ @win = Curses::Window.new(0, 0, 0, 0)
11
+ win.keypad true
10
12
  end
11
13
 
12
14
  def win
@@ -14,13 +16,11 @@ class Hail::GUI
14
16
  end
15
17
 
16
18
  def render
17
- @win = Curses::Window.new(0, 0, 0, 0)
18
19
  area = {height: win.maxy, width: win.maxx, top: 0, left: 0}
19
-
20
20
  win.clear
21
21
  @buffer[@render_buffer].to_hg(area) if not @buffer[@render_buffer].nil?
22
22
  win.refresh
23
- win.getch
23
+ @buffer[@render_buffer].__hg_getch(win.getch)
24
24
  end
25
25
 
26
26
  def buffer=(buffer)
@@ -34,6 +34,16 @@ class Hail::GUI
34
34
  end
35
35
 
36
36
  class Hash
37
+ def hg_style=(style)
38
+ @__hg_style = style
39
+ end
40
+
41
+ def __hg_getch(ch)
42
+ self.each do |k,v|
43
+ v.__hg_getch(ch)
44
+ end
45
+ end
46
+
37
47
  def to_hg(area)
38
48
  width = area[:width] / self.length
39
49
  i = 0
@@ -44,6 +54,7 @@ class Hash
44
54
 
45
55
  #List
46
56
  subarea = {height: area[:height], width: i+1*width, top: area[:top] + header.__hg_height, left: area[:left]+(i*width)}
57
+ v.hg_style = {selectable: true}
47
58
  v.to_hg(subarea)
48
59
  i += 1
49
60
  end
@@ -51,27 +62,49 @@ class Hash
51
62
  end
52
63
 
53
64
  class Array
65
+ def hg_style=(style)
66
+ @__hg_style = style
67
+ end
68
+
69
+ def __hg_getch(ch)
70
+ @__hg_selector = 0 if @__hg_selector.nil?
71
+ case ch
72
+ when Curses::KEY_UP
73
+ @__hg_selector -= 1
74
+ when Curses::KEY_DOWN
75
+ @__hg_selector += 1
76
+ end
77
+ end
78
+
54
79
  def __hg_height
55
80
  height = 0
56
81
  self.each do |v|
57
- height += v.__hg_height if not v.nil?
82
+ height += v.__hg_height
58
83
  end
59
84
  height
60
85
  end
61
86
 
62
87
  def to_hg(area)
88
+ @__hg_selector = 0 if @__hg_selector.nil?
89
+ @__hg_style = {} if @__hg_style.nil?
63
90
  top = area[:top]
64
- self.each do |v|
91
+
92
+ self.each_with_index do |v,k|
65
93
  subarea = {height: area[:height]-top, width: area[:width], top: top, left: area[:left]}
66
- if not v.nil?
67
- v.to_hg(subarea)
68
- top = top + v.__hg_height
94
+ if @__hg_style[:selectable]
95
+ v.hg_style = {strong: (@__hg_selector == k)}
69
96
  end
97
+ v.to_hg(subarea)
98
+ top = top + v.__hg_height
70
99
  end
71
100
  end
72
101
  end
73
102
 
74
103
  class String
104
+ def hg_style=(style)
105
+ @__hg_style = style
106
+ end
107
+
75
108
  def __hg_height
76
109
  1
77
110
  end
@@ -91,9 +124,24 @@ class String
91
124
  end
92
125
 
93
126
  def to_hg(area)
127
+ @__hg_style = {} if @__hg_style.nil?
94
128
  if area[:height] >= self.__hg_height
129
+ if @__hg_style[:strong]
130
+ Hail::GUI.instance.win.attrset(Curses::A_STANDOUT)
131
+ end
95
132
  Hail::GUI.instance.win.setpos(area[:top], area[:left])
96
133
  Hail::GUI.instance.win.addstr(self.__truncate(area[:width]-3))
134
+ Hail::GUI.instance.win.attrset(Curses::A_NORMAL)
97
135
  end
98
136
  end
99
137
  end
138
+
139
+ class Fixnum
140
+ def __hg_height
141
+ 1
142
+ end
143
+
144
+ def to_hg(area, style = {})
145
+ self.to_s.to_hg(area, style)
146
+ end
147
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hail.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2015.10.12.00.44
4
+ version: 2015.10.13.02.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Jeser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-12 00:00:00.000000000 Z
11
+ date: 2015-10-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: adrien@jeser.me