knjrbfw 0.0.87 → 0.0.88

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.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/knjrbfw.gemspec +2 -2
  3. data/lib/knj/gtk2_tv.rb +68 -38
  4. metadata +3 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.87
1
+ 0.0.88
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{knjrbfw}
8
- s.version = "0.0.87"
8
+ s.version = "0.0.88"
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-19}
12
+ s.date = %q{2012-08-22}
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 = [
@@ -3,11 +3,18 @@ module Knj::Gtk2::Tv
3
3
  #Initializes a treeview with a model and a number of columns. Returns a hash containing various data like the renderers.
4
4
  #===Examples
5
5
  # Knj::Gtk2::Tv.init(treeview, ["ID", "Name"])
6
- def self.init(tv, columns)
6
+ def self.init(tv, args)
7
7
  ret = {
8
8
  :renderers => []
9
9
  }
10
10
 
11
+ if args.is_a?(Array)
12
+ columns = args
13
+ args = {}
14
+ else
15
+ columns = args[:cols]
16
+ end
17
+
11
18
  model_args = []
12
19
  columns.each do |args|
13
20
  if args.is_a?(String)
@@ -25,7 +32,12 @@ module Knj::Gtk2::Tv
25
32
  end
26
33
  end
27
34
 
28
- list_store = Gtk::ListStore.new(*model_args)
35
+ if args[:type] == :treestore
36
+ list_store = Gtk::TreeStore.new(*model_args)
37
+ else
38
+ list_store = Gtk::ListStore.new(*model_args)
39
+ end
40
+
29
41
  tv.model = list_store
30
42
  tv.reorderable = true
31
43
 
@@ -191,14 +203,17 @@ module Knj::Gtk2::Tv
191
203
  end
192
204
 
193
205
  renderer = args[:renderers][col_no]
206
+ raise "Could not find a renderer for column no. '#{col_no}'." if !renderer
194
207
 
195
208
  if args[:on_edit]
196
209
  renderer.signal_connect("editing-started") do |renderer, row_no, path|
197
210
  iter = args[:tv].model.get_iter(path)
198
211
  id = args[:tv].model.get_value(iter, args[:id_col])
199
- model_obj = args[:ob].get(args[:model_class], id)
200
212
 
201
- args[:on_edit].call(:renderer => renderer, :row_no => row_no, :path => path, :args => args, :model => model_obj, :col_no => col_no, :col_data => col_data)
213
+ if id.to_i > 0
214
+ model_obj = args[:ob].get(args[:model_class], id)
215
+ args[:on_edit].call(:renderer => renderer, :row_no => row_no, :path => path, :args => args, :model => model_obj, :col_no => col_no, :col_data => col_data)
216
+ end
202
217
  end
203
218
  end
204
219
 
@@ -223,41 +238,44 @@ module Knj::Gtk2::Tv
223
238
  renderer.signal_connect("edited") do |renderer, row_no, value|
224
239
  iter = args[:tv].model.get_iter(row_no)
225
240
  id = args[:tv].model.get_value(iter, args[:id_col])
226
- model_obj = args[:ob].get(args[:model_class], id)
227
- cancel = false
228
- callback_hash = {:args => args, :value => value, :model => model_obj, :col_no => col_no, :col_data => col_data}
229
-
230
- if args[:on_edit_done]
231
- args[:on_edit_done].call(:renderer => renderer, :row_no => row_no, :done_mode => :canceled, :args => args, :model => model_obj, :col_no => col_no, :col_data => col_data)
232
- end
233
241
 
234
- if col_data[:value_callback]
235
- begin
236
- value = col_data[:value_callback].call(callback_hash)
237
- callback_hash[:value] = value
238
- rescue => e
239
- Knj::Gtk2.msgbox(e.message, "warning")
240
- cancel = true
242
+ if id.to_i > 0
243
+ model_obj = args[:ob].get(args[:model_class], id)
244
+ cancel = false
245
+ callback_hash = {:args => args, :value => value, :model => model_obj, :col_no => col_no, :col_data => col_data}
246
+
247
+ if args[:on_edit_done]
248
+ args[:on_edit_done].call(:renderer => renderer, :row_no => row_no, :done_mode => :canceled, :args => args, :model => model_obj, :col_no => col_no, :col_data => col_data)
241
249
  end
242
- end
243
-
244
- if !cancel
245
- begin
246
- args[:change_before].call(callback_hash) if args[:change_before]
247
- rescue => e
248
- cancel = true
249
- Knj::Gtk2.msgbox(e.message, "warning")
250
+
251
+ if col_data[:value_callback]
252
+ begin
253
+ value = col_data[:value_callback].call(callback_hash)
254
+ callback_hash[:value] = value
255
+ rescue => e
256
+ Knj::Gtk2.msgbox(e.message, "warning")
257
+ cancel = true
258
+ end
250
259
  end
251
260
 
252
261
  if !cancel
253
262
  begin
254
- model_obj[col_data[:col]] = value
255
- value = col_data[:value_set_callback].call(callback_hash) if col_data.key?(:value_set_callback)
256
- iter[col_no] = value
263
+ args[:change_before].call(callback_hash) if args[:change_before]
257
264
  rescue => e
265
+ cancel = true
258
266
  Knj::Gtk2.msgbox(e.message, "warning")
259
- ensure
260
- args[:change_after].call(callback_hash) if args[:change_after]
267
+ end
268
+
269
+ if !cancel
270
+ begin
271
+ model_obj[col_data[:col]] = value
272
+ value = col_data[:value_set_callback].call(callback_hash) if col_data.key?(:value_set_callback)
273
+ iter[col_no] = value
274
+ rescue => e
275
+ Knj::Gtk2.msgbox(e.message, "warning")
276
+ ensure
277
+ args[:change_after].call(callback_hash) if args[:change_after]
278
+ end
261
279
  end
262
280
  end
263
281
  end
@@ -267,14 +285,26 @@ module Knj::Gtk2::Tv
267
285
  renderer.signal_connect("toggled") do |renderer, path|
268
286
  iter = args[:tv].model.get_iter(path)
269
287
  id = args[:tv].model.get_value(iter, 0)
270
- model_obj = args[:ob].get(args[:model_class], id)
288
+ model_obj = args[:ob].get(args[:model_class], id) if id.to_i > 0
271
289
 
272
- if model_obj[col_data[:col]].to_i == 1
273
- value = false
274
- value_i = 0
290
+ if model_obj and col_data[:col]
291
+ if model_obj[col_data[:col]].to_i == 1
292
+ value = false
293
+ value_i = 0
294
+ else
295
+ value = true
296
+ value_i = 1
297
+ end
275
298
  else
276
- value = true
277
- value_i = 1
299
+ puts "Test: #{iter[col_no]}"
300
+
301
+ if iter[col_no] == 0
302
+ value = true
303
+ value_i = 1
304
+ else
305
+ value = false
306
+ value_i = 0
307
+ end
278
308
  end
279
309
 
280
310
  callback_hash = {:args => args, :value => value, :model => model_obj, :col_no => col_no, :col_data => col_data}
@@ -300,7 +330,7 @@ module Knj::Gtk2::Tv
300
330
  if !cancel
301
331
  args[:change_before].call(callback_hash) if args[:change_before]
302
332
  begin
303
- model_obj[col_data[:col]] = value_i
333
+ model_obj[col_data[:col]] = value_i if model_obj and col_data[:col]
304
334
 
305
335
  if col_data.key?(:value_set_callback)
306
336
  value = col_data[:value_set_callback].call(callback_hash)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: knjrbfw
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.87
5
+ version: 0.0.88
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-19 00:00:00 +02:00
13
+ date: 2012-08-22 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: -398379275512532928
397
+ hash: 2484404489757704635
398
398
  segments:
399
399
  - 0
400
400
  version: "0"