gtk2html 0.2.3 → 0.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0c561432e806c509dd65c19c30cf8ec3fd10b85
4
- data.tar.gz: 7d4a7b42285eee2c779065451d7d4f2cb4b90c27
3
+ metadata.gz: c80dee92494fdba1f1733f682343d08a32ee37c2
4
+ data.tar.gz: 4605a22228a85ea5dc97297a212bb2b198802b8d
5
5
  SHA512:
6
- metadata.gz: 253849ae650454dae7edb83fcfbf6261d348a8898f9a057a3a5e5de53cda6c84f7b340186020d9e2b0be968a47c104019db4f900e2ab06c1afc74c63baa69c4c
7
- data.tar.gz: 4d833d62c181165d045cd43fc65762ff582f3c2b8e0358ea666496772da6b06c4740a49cfc50956ac0d76ceef2fabb4b671316c1ce1ab3648bc0427a42342f68
6
+ metadata.gz: b4d5a4c6494e12b79ee0fc14375a8f07e88876bb44281a1ca9d6b7de13ffca01ca80703552694a14685f00aa6514842b0dbbe455ca01b177f7ff357913a6abbd
7
+ data.tar.gz: dcde178eaaf6f6d85dd43fec8d8c34b0ca8bd6c0ee5716793f120be74bddbc7d7f53848cf2e8cfba5deb38203d893c2254915488f747b26da9e5fdd8dee512e1
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -60,6 +60,15 @@ module Gtk2HTML
60
60
 
61
61
  [[:draw_box, margin, coords, padding, style], render_all(e)]
62
62
  end
63
+
64
+ def input(e, attributes, style)
65
+
66
+ margin = [0, 0, 0, 0] # style[:margin].values
67
+ coords = [0, 0, @width, @height]
68
+ padding = [0, 0, 0, 0] # style[:padding].values
69
+
70
+ [[:add_inputbox, margin, coords, padding, style], render_all(e)]
71
+ end
63
72
 
64
73
  def style(*args)
65
74
 
@@ -137,7 +146,6 @@ module Gtk2HTML
137
146
 
138
147
  if inspect or verbose then
139
148
  scan @a
140
- puts
141
149
  @a
142
150
  else
143
151
  @a
@@ -257,12 +265,14 @@ module Gtk2HTML
257
265
 
258
266
  class DrawingInstructions
259
267
 
260
- attr_accessor :area
268
+ attr_accessor :layout
269
+ attr_reader :widgets
261
270
 
262
271
 
263
- def initialize(area=nil)
272
+ def initialize(layout=nil)
264
273
 
265
- @area = area if area
274
+ @layout = layout if layout
275
+ @widgets = []
266
276
 
267
277
  end
268
278
 
@@ -277,9 +287,10 @@ module Gtk2HTML
277
287
  height = y2 - y1
278
288
 
279
289
  gc = gc_ini(h2)
280
- @area.window.draw_rectangle(gc, 1, x1, y1, width, height)
290
+ @layout.bin_window.draw_rectangle(gc, 1, x1, y1, width, height)
281
291
  end
282
292
 
293
+
283
294
  def draw_layout(text, coords, style)
284
295
 
285
296
  x, y = coords
@@ -294,7 +305,7 @@ module Gtk2HTML
294
305
  layout.text = text
295
306
 
296
307
  gc = gc_ini(h2)
297
- @area.window.draw_layout(gc, x, y, layout)
308
+ @layout.bin_window.draw_layout(gc, x, y, layout)
298
309
  end
299
310
 
300
311
  def window(args)
@@ -312,13 +323,15 @@ module Gtk2HTML
312
323
  private
313
324
 
314
325
  def draw(a)
315
-
326
+
316
327
  return unless a
317
328
 
318
329
  if a.first.is_a? Symbol then
319
330
 
320
331
  name, margin, coords, padding, style, _, *children = a
321
- method(name).call(margin, coords, padding, style)
332
+
333
+ method(name).call(margin, coords, padding, style) if name =~ /^draw_/
334
+
322
335
  draw children
323
336
 
324
337
  elsif a.first.is_a? String and not a.first.empty?
@@ -340,7 +353,7 @@ module Gtk2HTML
340
353
 
341
354
  name, margin, coords, padding, style, _, *children = x
342
355
 
343
- method(name).call(margin, coords, padding, style)
356
+ method(name).call(margin, coords, padding, style) if name =~ /^draw_/
344
357
  draw children
345
358
 
346
359
  when :'Rexle::Element::Value' then
@@ -352,17 +365,14 @@ module Gtk2HTML
352
365
  method(:draw_layout).call(*row)
353
366
 
354
367
  when :Array
355
-
356
- if row[-1][0].is_a? String then
357
- method(:draw_layout).call(*row[-1])
358
- else
359
- draw row[-1]
360
- end
368
+
369
+ draw row
370
+
361
371
  else
362
372
 
363
373
  name, *args = x
364
374
 
365
- method(name).call(args)
375
+ method(name).call(args) if name =~ /^draw_/
366
376
  draw row[-1]
367
377
  end
368
378
 
@@ -392,7 +402,7 @@ module Gtk2HTML
392
402
 
393
403
  def gc_ini(style)
394
404
 
395
- gc = Gdk::GC.new(@area.window)
405
+ gc = Gdk::GC.new(@layout.bin_window)
396
406
 
397
407
  color, bgcolor = style[:color], style[:'background-color']
398
408
 
@@ -404,10 +414,103 @@ module Gtk2HTML
404
414
 
405
415
  end
406
416
 
417
+ class WidgetInstructions
418
+
419
+ attr_accessor :layout
420
+
421
+
422
+ def initialize(layout=nil)
423
+
424
+ @layout = layout if layout
425
+
426
+ end
427
+
428
+
429
+ def add_inputbox(margin, coords, padding, style)
430
+
431
+ h2 = style.clone
432
+ h2.delete :color
433
+
434
+ x1, y1, x2, y2 = coords
435
+
436
+ width = x2 - x1
437
+ height = y2 - y1
438
+
439
+ entry = Gtk::Entry.new
440
+ entry.set_text('type something')
441
+ @layout.put entry, 10,40
442
+
443
+ end
444
+
445
+ def render(a)
446
+ add a
447
+ end
448
+
449
+
450
+ private
451
+
452
+ def add(a)
453
+
454
+ return unless a
455
+
456
+ if a.first.is_a? Symbol then
457
+
458
+ name, margin, coords, padding, style, _, *children = a
459
+ return if name =~ /^draw_/
460
+ method(name).call(margin, coords, padding, style)
461
+ add children
462
+
463
+ else
464
+
465
+ a.each do |row|
466
+
467
+ next unless row
468
+
469
+ x = row
470
+
471
+ case row[0].class.to_s.to_sym
472
+
473
+ when :Symbol
474
+
475
+ name, margin, coords, padding, style, _, *children = x
476
+
477
+ next if name =~ /^draw_/
478
+ method(name).call(margin, coords, padding, style)
479
+ add children
480
+
481
+ when :'Rexle::Element::Value' then
482
+
483
+ next
484
+
485
+ when :Array
486
+
487
+ if row[-1][0].is_a? String then
488
+ next
489
+ else
490
+ add row[-1]
491
+ end
492
+ else
493
+
494
+ name, *args = x
495
+
496
+ next if name =~ /^draw_/
497
+ method(name).call(args)
498
+ add row[-1]
499
+ end
500
+
501
+ end
502
+ end
503
+
504
+ end
505
+
506
+
507
+ end
508
+
509
+
407
510
  class Main
408
511
 
409
512
 
410
- attr_accessor :doc, :html
513
+ attr_accessor :doc, :html, :layout_instructions
411
514
  attr_reader :width, :height, :window
412
515
 
413
516
  def initialize(html, irb: false)
@@ -416,6 +519,10 @@ module Gtk2HTML
416
519
  @doc = Htmle.new(html, callback: self)
417
520
 
418
521
  @area = area = Gtk::DrawingArea.new
522
+ @layout = layout = Gtk::Layout.new
523
+ widgets = nil
524
+
525
+
419
526
  client_code = []
420
527
 
421
528
  window = Gtk::Window.new
@@ -428,7 +535,7 @@ module Gtk2HTML
428
535
  @dirty = true
429
536
 
430
537
 
431
- area.signal_connect("expose_event") do
538
+ layout.signal_connect("expose_event") do
432
539
 
433
540
  width, height = window.size
434
541
 
@@ -436,18 +543,14 @@ module Gtk2HTML
436
543
 
437
544
 
438
545
  if @dirty then
439
-
440
- Thread.new { @doc.root.xpath('//script').each {|x| eval x.text.unescape } }
441
546
 
442
- @width, @height = window.size
443
- instructions = Gtk2HTML::Render.new(@doc, @width, @height).to_a
444
-
445
- @layout_instructions = Gtk2HTML::Layout.new(instructions).to_a
547
+ @layout_instructions = prepare_layout @doc
446
548
 
447
549
  end
448
550
 
449
- drawing = Gtk2HTML::DrawingInstructions.new area
551
+ drawing = Gtk2HTML::DrawingInstructions.new layout
450
552
  drawing.render @layout_instructions
553
+
451
554
  @dirty = false
452
555
 
453
556
  end
@@ -473,8 +576,15 @@ module Gtk2HTML
473
576
 
474
577
  end
475
578
  end
579
+
580
+ layout_instructions = prepare_layout @doc
581
+
582
+ widgets = Gtk2HTML::WidgetInstructions.new layout
583
+ widgets.render layout_instructions
584
+
585
+ @layout.put area, 0, 0
476
586
 
477
- window.add(area).show_all
587
+ window.add(@layout).show_all
478
588
  window.show_all.signal_connect("destroy"){Gtk.main_quit}
479
589
 
480
590
  irb ? Thread.new {Gtk.main } : Gtk.main
@@ -494,6 +604,17 @@ module Gtk2HTML
494
604
  @doc = Htmle.new(svg, callback: self)
495
605
  end
496
606
 
607
+ private
608
+
609
+ def prepare_layout(doc)
610
+
611
+ Thread.new { doc.root.xpath('//script').each {|x| eval x.text.unescape } }
612
+
613
+ @width, @height = window.size
614
+ instructions = Gtk2HTML::Render.new(doc, @width, @height).to_a
615
+
616
+ Gtk2HTML::Layout.new(instructions).to_a
617
+ end
497
618
  end
498
619
 
499
620
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  HcgEV5WVgO2X3OsEEkfaHgi8R+LiEsmUOYiPgzi3ImiJBJCRzkvK0iQFtQENVbdN
32
32
  OFyd/PIiSrxPFA==
33
33
  -----END CERTIFICATE-----
34
- date: 2016-12-13 00:00:00.000000000 Z
34
+ date: 2016-12-22 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: gtk2svg
metadata.gz.sig CHANGED
Binary file