knjrbfw 0.0.87 → 0.0.88

Sign up to get free protection for your applications and to get access to all the features.
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"