knjrbfw 0.0.78 → 0.0.79

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.78
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.78"
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-03}
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, {:cachename => cachename})
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, value|
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
- if model_obj[col_data[:col]].to_i == 1
253
- model_obj[col_data[:col]] = 0
254
- iter[col_no] = 0
255
- else
256
- model_obj[col_data[:col]] = 1
257
- iter[col_no] = 1
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
- regex = Regexp.new(pattern, arg_two)
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
- return "#{"%02d" % hours}:#{"%02d" % mins}:#{"%02d" % secs}"
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[3].to_i
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.78
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-03 00:00:00 +02:00
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: -1132063425696658380
397
+ hash: 1485433927830025325
398
398
  segments:
399
399
  - 0
400
400
  version: "0"