knjrbfw 0.0.78 → 0.0.79
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/knjrbfw.gemspec +2 -2
- data/lib/knj/eruby.rb +1 -1
- data/lib/knj/gtk2_tv.rb +63 -10
- data/lib/knj/strings.rb +26 -7
- data/spec/strings_spec.rb +22 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.79
|
data/knjrbfw.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{knjrbfw}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.79"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = %q{2012-08-
|
12
|
+
s.date = %q{2012-08-07}
|
13
13
|
s.description = %q{Including stuff for HTTP, SSH and much more.}
|
14
14
|
s.email = %q{k@spernj.org}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/knj/eruby.rb
CHANGED
@@ -51,7 +51,7 @@ class Knj::Eruby
|
|
51
51
|
cachetime = File.mtime(cachename) if File.exists?(cachename)
|
52
52
|
|
53
53
|
if !File.exists?(cachename) or filetime > cachetime
|
54
|
-
Knj::Eruby::Handler.load_file(filename,
|
54
|
+
Knj::Eruby::Handler.load_file(filename, :cachename => cachename)
|
55
55
|
File.chmod(0777, cachename)
|
56
56
|
cachetime = File.mtime(cachename)
|
57
57
|
reload_cache = true
|
data/lib/knj/gtk2_tv.rb
CHANGED
@@ -45,11 +45,9 @@ module Knj::Gtk2::Tv
|
|
45
45
|
renderer = Gtk::CellRendererText.new
|
46
46
|
col = Gtk::TreeViewColumn.new(args[:title], renderer, col_args)
|
47
47
|
col.resizable = true
|
48
|
-
tv.append_column(col)
|
49
48
|
elsif args[:type] == :toggle
|
50
49
|
renderer = Gtk::CellRendererToggle.new
|
51
50
|
col = Gtk::TreeViewColumn.new(args[:title], renderer, :active => count)
|
52
|
-
tv.append_column(col)
|
53
51
|
elsif args[:type] == :combo
|
54
52
|
renderer = Gtk::CellRendererCombo.new
|
55
53
|
renderer.text_column = 0
|
@@ -61,16 +59,29 @@ module Knj::Gtk2::Tv
|
|
61
59
|
end
|
62
60
|
|
63
61
|
col = Gtk::TreeViewColumn.new(args[:title], renderer, col_args)
|
62
|
+
col.resizable = true
|
64
63
|
|
65
64
|
renderer.model = args[:model] if args.key?(:model)
|
66
65
|
renderer.has_entry = args[:has_entry] if args.key?(:has_entry)
|
67
|
-
tv.append_column(col)
|
68
66
|
else
|
69
67
|
raise "Invalid type: '#{args[:type]}'."
|
70
68
|
end
|
71
69
|
|
70
|
+
col.spacing = 0
|
72
71
|
col.reorderable = true
|
73
72
|
col.sort_column_id = count
|
73
|
+
|
74
|
+
if args.key?(:fixed_width)
|
75
|
+
col.sizing = Gtk::TreeViewColumn::FIXED
|
76
|
+
else
|
77
|
+
col.sizing = Gtk::TreeViewColumn::AUTOSIZE
|
78
|
+
end
|
79
|
+
|
80
|
+
[:min_width, :max_width, :fixed_width, :expand, :spacing, :reorderable].each do |arg|
|
81
|
+
col.__send__("#{arg}=", args[arg]) if args.key?(arg)
|
82
|
+
end
|
83
|
+
|
84
|
+
tv.append_column(col)
|
74
85
|
ret[:renderers] << renderer
|
75
86
|
count += 1
|
76
87
|
end
|
@@ -148,6 +159,15 @@ module Knj::Gtk2::Tv
|
|
148
159
|
:human_number => {
|
149
160
|
:value => proc{ |data| Knj::Locales.number_in(data[:value]) },
|
150
161
|
:value_set => proc{ |data| Knj::Locales.number_out(data[:value], data[:col_data][:decimals]) }
|
162
|
+
},
|
163
|
+
:toggle_rev => {
|
164
|
+
:value_set => lambda{|data|
|
165
|
+
if data[:value]
|
166
|
+
return false
|
167
|
+
else
|
168
|
+
return true
|
169
|
+
end
|
170
|
+
}
|
151
171
|
}
|
152
172
|
}
|
153
173
|
|
@@ -184,6 +204,16 @@ module Knj::Gtk2::Tv
|
|
184
204
|
end
|
185
205
|
end
|
186
206
|
|
207
|
+
if col_data[:on_edit]
|
208
|
+
renderer.signal_connect("editing-started") do |renderer, row_no, path|
|
209
|
+
iter = args[:tv].model.get_iter(path)
|
210
|
+
id = args[:tv].model.get_value(iter, args[:id_col])
|
211
|
+
model_obj = args[:ob].get(args[:model_class], id)
|
212
|
+
|
213
|
+
col_data[:on_edit].call(:renderer => renderer, :row_no => row_no, :path => path, :iter => iter, :args => args, :model => model_obj, :col_no => col_no, :col_data => col_data)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
187
217
|
if renderer.is_a?(Gtk::CellRendererText)
|
188
218
|
renderer.editable = true
|
189
219
|
renderer.signal_connect("edited") do |renderer, row_no, value|
|
@@ -230,10 +260,19 @@ module Knj::Gtk2::Tv
|
|
230
260
|
end
|
231
261
|
elsif renderer.is_a?(Gtk::CellRendererToggle)
|
232
262
|
renderer.activatable = true
|
233
|
-
renderer.signal_connect("toggled") do |renderer, path
|
263
|
+
renderer.signal_connect("toggled") do |renderer, path|
|
234
264
|
iter = args[:tv].model.get_iter(path)
|
235
265
|
id = args[:tv].model.get_value(iter, 0)
|
236
266
|
model_obj = args[:ob].get(args[:model_class], id)
|
267
|
+
|
268
|
+
if model_obj[col_data[:col]].to_i == 1
|
269
|
+
value = false
|
270
|
+
value_i = 0
|
271
|
+
else
|
272
|
+
value = true
|
273
|
+
value_i = 1
|
274
|
+
end
|
275
|
+
|
237
276
|
callback_hash = {:args => args, :value => value, :model => model_obj, :col_no => col_no, :col_data => col_data}
|
238
277
|
|
239
278
|
if col_data[:value_callback]
|
@@ -246,16 +285,30 @@ module Knj::Gtk2::Tv
|
|
246
285
|
end
|
247
286
|
end
|
248
287
|
|
288
|
+
if value
|
289
|
+
value_i = 1
|
290
|
+
else
|
291
|
+
value_i = 0
|
292
|
+
end
|
293
|
+
|
294
|
+
callback_hash[:value] = value
|
295
|
+
|
249
296
|
if !cancel
|
250
297
|
args[:change_before].call(callback_hash) if args[:change_before]
|
251
298
|
begin
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
299
|
+
model_obj[col_data[:col]] = value_i
|
300
|
+
|
301
|
+
if col_data.key?(:value_set_callback)
|
302
|
+
value = col_data[:value_set_callback].call(callback_hash)
|
303
|
+
|
304
|
+
if value
|
305
|
+
value_i = 1
|
306
|
+
else
|
307
|
+
value_i = 0
|
308
|
+
end
|
258
309
|
end
|
310
|
+
|
311
|
+
iter[col_no] = value_i
|
259
312
|
ensure
|
260
313
|
args[:change_after].call(:args => args) if args[:change_after]
|
261
314
|
end
|
data/lib/knj/strings.rb
CHANGED
@@ -54,9 +54,7 @@ module Knj::Strings
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
return regex
|
57
|
+
return Regexp.new(pattern, arg_two)
|
60
58
|
end
|
61
59
|
|
62
60
|
#Partens a string up in blocks for whatever words can be used to search for. Supports a block or returns an array.
|
@@ -272,8 +270,23 @@ module Knj::Strings
|
|
272
270
|
end
|
273
271
|
end
|
274
272
|
|
273
|
+
#Returns a short time-format for the given amount of seconds.
|
274
|
+
def self.secs_to_human_short_time(secs)
|
275
|
+
secs = secs.to_i
|
276
|
+
|
277
|
+
return "#{secs}s" if secs < 60
|
278
|
+
|
279
|
+
mins = (secs.to_f / 60.0).floor
|
280
|
+
if mins < 60
|
281
|
+
return "#{mins.to_i}m"
|
282
|
+
end
|
283
|
+
|
284
|
+
hours = (mins.to_f / 60.0)
|
285
|
+
return "#{Knj::Locales.number_out(hours, 1)}t"
|
286
|
+
end
|
287
|
+
|
275
288
|
#Returns a human readable time-string from a given number of seconds.
|
276
|
-
def self.secs_to_human_time_str(secs)
|
289
|
+
def self.secs_to_human_time_str(secs, args = nil)
|
277
290
|
secs = secs.to_i
|
278
291
|
hours = (secs.to_f / 3600.0).floor.to_i
|
279
292
|
secs = secs - (hours * 3600)
|
@@ -281,17 +294,23 @@ module Knj::Strings
|
|
281
294
|
mins = (secs.to_f / 60).floor.to_i
|
282
295
|
secs = secs - (mins * 60)
|
283
296
|
|
284
|
-
|
297
|
+
str = "#{"%02d" % hours}:#{"%02d" % mins}"
|
298
|
+
|
299
|
+
if !args or !args.key?(:secs) or args[:secs]
|
300
|
+
str << ":#{"%02d" % secs}"
|
301
|
+
end
|
302
|
+
|
303
|
+
return str
|
285
304
|
end
|
286
305
|
|
287
306
|
#Turns a human readable time-string into a number of seconds.
|
288
307
|
def self.human_time_str_to_secs(str)
|
289
|
-
match = str.match(/^\s*(\d+)\s*:\s*(\d+)\s*:\s*(\d+)\s
|
308
|
+
match = str.match(/^\s*(\d+)\s*:\s*(\d+)(\s*:\s*(\d+)\s*|)/)
|
290
309
|
raise "Could not match string: '#{str}'." if !match
|
291
310
|
|
292
311
|
hours = match[1].to_i
|
293
312
|
minutes = match[2].to_i
|
294
|
-
secs = match[
|
313
|
+
secs = match[4].to_i
|
295
314
|
|
296
315
|
total = (hours * 3600) + (minutes * 60) + secs
|
297
316
|
return total
|
data/spec/strings_spec.rb
CHANGED
@@ -18,6 +18,11 @@ describe "Strings" do
|
|
18
18
|
#this should happen - Ruby doesnt support U-modifier...
|
19
19
|
end
|
20
20
|
|
21
|
+
regex = Knj::Strings.regex("/(\\d{6})$/")
|
22
|
+
res = "FNR. 7213820".match(regex)
|
23
|
+
raise "Not matched." if !res
|
24
|
+
raise "Expected result 1 to be '213820' but it wasnt: '#{res[1]}'." if res[1] != "213820"
|
25
|
+
|
21
26
|
res = Knj::Strings.is_regex?("Kasper")
|
22
27
|
raise "Expected res to be false but it wasnt." if res
|
23
28
|
|
@@ -28,5 +33,22 @@ describe "Strings" do
|
|
28
33
|
it "secs_to_human_time_str" do
|
29
34
|
res = Knj::Strings.secs_to_human_time_str(3695)
|
30
35
|
raise "Expected '01:01:35' but got: '#{res}'." if res != "01:01:35"
|
36
|
+
|
37
|
+
secs = Knj::Strings.human_time_str_to_secs("01:30:30")
|
38
|
+
raise "Expected secs to be 5430 but it was #{secs}" if secs != 5430
|
39
|
+
|
40
|
+
secs = Knj::Strings.human_time_str_to_secs("01:30")
|
41
|
+
raise "Expected secs to be 5400 but it was #{secs}" if secs != 5400
|
42
|
+
end
|
43
|
+
|
44
|
+
it "secs_to_human_short_time" do
|
45
|
+
res = Knj::Strings.secs_to_human_short_time(3700)
|
46
|
+
raise "Expected '1.0t' but got '#{res}'." if res != "1.0t"
|
47
|
+
|
48
|
+
res = Knj::Strings.secs_to_human_short_time(57)
|
49
|
+
raise "Expected '57s' but got '#{res}'." if res != "57s"
|
50
|
+
|
51
|
+
res = Knj::Strings.secs_to_human_short_time(185)
|
52
|
+
raise "Expected '3m' but got '#{res}'." if res != "3m"
|
31
53
|
end
|
32
54
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: knjrbfw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.79
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-08-
|
13
|
+
date: 2012-08-07 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -394,7 +394,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
394
394
|
requirements:
|
395
395
|
- - ">="
|
396
396
|
- !ruby/object:Gem::Version
|
397
|
-
hash:
|
397
|
+
hash: 1485433927830025325
|
398
398
|
segments:
|
399
399
|
- 0
|
400
400
|
version: "0"
|