mrdialog 1.0.3 → 1.0.5

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.
@@ -188,6 +188,13 @@ class MRDialog
188
188
  # For widgets holding a scrollable set of data, draw a scrollbar
189
189
  # on its right-margin. This does not respond to the mouse.
190
190
  attr_accessor :scrollbar
191
+
192
+ # Normally dialog converts tabs to spaces and reduces multiple
193
+ # spaces to a single space for text which is displayed
194
+ # # in a message boxes, etc. Use this option to disable that feature.
195
+ # Note that dialog will still wrap text, subject to the "--cr-wrap"
196
+ # and "--trim" options. #7
197
+ attr_accessor :no_collapse
191
198
  # -- muquit@muquit.com mod ends---
192
199
 
193
200
  # Returns a new RDialog Object
@@ -276,9 +283,9 @@ class MRDialog
276
283
  cmd << " "
277
284
  cmd << "--gauge"
278
285
  cmd << " "
279
- cmd << '"'
286
+ cmd << "'"
280
287
  cmd << text
281
- cmd << '"'
288
+ cmd << "'"
282
289
  cmd << " "
283
290
  cmd << height.to_s
284
291
  cmd << " "
@@ -309,9 +316,9 @@ class MRDialog
309
316
  cmd << "--progressbox"
310
317
  cmd << " "
311
318
  if description.length > 0
312
- cmd << '"'
319
+ cmd << "'"
313
320
  cmd << description
314
- cmd << '"'
321
+ cmd << "'"
315
322
  end
316
323
  cmd << " "
317
324
  cmd << height.to_s
@@ -330,9 +337,9 @@ class MRDialog
330
337
  cmd << "--programbox"
331
338
  cmd << " "
332
339
  if description.length > 0
333
- cmd << '"'
340
+ cmd << "'"
334
341
  cmd << description
335
- cmd << '"'
342
+ cmd << "'"
336
343
  end
337
344
  cmd << " "
338
345
  cmd << height.to_s
@@ -364,14 +371,14 @@ class MRDialog
364
371
  cmd << "--prgbox"
365
372
  cmd << " "
366
373
  if text.length > 0
367
- cmd << '"'
374
+ cmd << "'"
368
375
  cmd << text
369
- cmd << '"'
376
+ cmd << "'"
370
377
  end
371
378
  cmd << " "
372
- cmd << '"'
379
+ cmd << "'"
373
380
  cmd << command
374
- cmd << '"'
381
+ cmd << "'"
375
382
  cmd << " "
376
383
  cmd << height.to_s
377
384
  cmd << " "
@@ -394,22 +401,22 @@ class MRDialog
394
401
  tmp = Tempfile.new('dialog')
395
402
  itemlist = ''
396
403
  items.each do |item|
397
- itemlist << '"'
404
+ itemlist << "'"
398
405
  itemlist << item[0].to_s
399
- itemlist << '"'
406
+ itemlist << "'"
400
407
  itemlist << " "
401
- itemlist << '"'
408
+ itemlist << "'"
402
409
  itemlist << item[1].to_s
403
- itemlist << '"'
410
+ itemlist << "'"
404
411
  itemlist << " "
405
- itemlist << '"'
412
+ itemlist << "'"
406
413
  if item[2]
407
414
  item[2] = "on"
408
415
  else
409
416
  item[2] = "off"
410
417
  end
411
418
  itemlist << item[2]
412
- itemlist << '"'
419
+ itemlist << "'"
413
420
  itemlist << " "
414
421
  itemlist << item[3].to_s
415
422
  itemlist << " "
@@ -422,10 +429,10 @@ class MRDialog
422
429
  cmd << " "
423
430
  cmd << "--treeview"
424
431
  cmd << " "
425
- cmd << '"'
432
+ cmd << "'"
426
433
  cmd << " "
427
434
  cmd << text
428
- cmd << '"'
435
+ cmd << "'"
429
436
  cmd << " "
430
437
  cmd << height.to_s
431
438
  cmd << " "
@@ -442,11 +449,12 @@ class MRDialog
442
449
  @exit_code = $?.exitstatus
443
450
  log_debug "Exit code: #{exit_code}"
444
451
  tag = ''
445
- if @exit_code == 0
452
+ if @exit_code != 1
446
453
  tag = tmp.read
447
454
  end
448
- tmp.close!
449
455
  return tag
456
+ ensure
457
+ tmp.close!
450
458
  end
451
459
 
452
460
  #
@@ -470,22 +478,22 @@ class MRDialog
470
478
  itemlist = ''
471
479
 
472
480
  items.each do |item|
473
- itemlist << '"'
481
+ itemlist << "'"
474
482
  itemlist << item[0].to_s
475
- itemlist << '"'
483
+ itemlist << "'"
476
484
  itemlist << " "
477
- itemlist << '"'
485
+ itemlist << "'"
478
486
  itemlist << item[1].to_s
479
- itemlist << '"'
487
+ itemlist << "'"
480
488
  itemlist << " "
481
- itemlist << '"'
489
+ itemlist << "'"
482
490
  if item[2]
483
491
  item[2] = "on"
484
492
  else
485
493
  item[2] = "off"
486
494
  end
487
495
  itemlist << item[2]
488
- itemlist << '"'
496
+ itemlist << "'"
489
497
  itemlist << " "
490
498
  end
491
499
  itemlist << "2>"
@@ -499,17 +507,17 @@ class MRDialog
499
507
  cmd << " "
500
508
  cmd << "--separator"
501
509
  cmd << " "
502
- cmd << '"'
510
+ cmd << "'"
503
511
  cmd << @separator
504
- cmd << '"'
512
+ cmd << "'"
505
513
  end
506
514
  cmd << " "
507
515
  cmd << "--buildlist"
508
516
  cmd << " "
509
- cmd << '"'
517
+ cmd << "'"
510
518
  cmd << " "
511
519
  cmd << text
512
- cmd << '"'
520
+ cmd << "'"
513
521
  cmd << " "
514
522
  cmd << height.to_s
515
523
  cmd << " "
@@ -525,7 +533,7 @@ class MRDialog
525
533
  system(cmd)
526
534
  @exit_code = $?.exitstatus
527
535
  log_debug "Exit code: #{exit_code}"
528
- if @exit_code == 0
536
+ if @exit_code != 1
529
537
  lines = tmp.read
530
538
  log_debug "lines: #{lines} #{lines.class}"
531
539
  sep = Shellwords.escape(@separator)
@@ -535,8 +543,9 @@ class MRDialog
535
543
  selected_tags << tag if tag.to_s.length > 0
536
544
  end
537
545
  end
538
- tmp.close!
539
546
  return selected_tags
547
+ ensure
548
+ tmp.close!
540
549
  end
541
550
 
542
551
  # A pause box displays a meter along the bottom of the box. The
@@ -550,9 +559,9 @@ class MRDialog
550
559
  cmd << " "
551
560
  cmd << "--pause"
552
561
  cmd << " "
553
- cmd << '"'
562
+ cmd << "'"
554
563
  cmd << text
555
- cmd << '"'
564
+ cmd << "'"
556
565
  cmd << " "
557
566
  cmd << height.to_s
558
567
  cmd << " "
@@ -584,9 +593,9 @@ class MRDialog
584
593
  cmd << " "
585
594
  cmd << "--editbox"
586
595
  cmd << " "
587
- cmd << '"'
596
+ cmd << "'"
588
597
  cmd << filepath
589
- cmd << '"'
598
+ cmd << "'"
590
599
  cmd << " "
591
600
  cmd << height.to_s
592
601
  cmd << " "
@@ -604,8 +613,9 @@ class MRDialog
604
613
  if @exit_code == 0
605
614
  result = tmp.read
606
615
  end
607
- tmp.close!
608
616
  return result
617
+ ensure
618
+ tmp.close!
609
619
  end
610
620
 
611
621
  #
@@ -633,17 +643,17 @@ class MRDialog
633
643
  mixed_form = true
634
644
  end
635
645
  items.each do |item|
636
- itemlist << '"'
646
+ itemlist << "'"
637
647
  itemlist << item[0].to_s
638
- itemlist << '"'
648
+ itemlist << "'"
639
649
  itemlist << " "
640
650
  itemlist << item[1].to_s
641
651
  itemlist << " "
642
652
  itemlist << item[2].to_s
643
653
  itemlist << " "
644
- itemlist << '"'
654
+ itemlist << "'"
645
655
  itemlist << item[3].to_s
646
- itemlist << '"'
656
+ itemlist << "'"
647
657
  itemlist << " "
648
658
  itemlist << item[4].to_s
649
659
  itemlist << " "
@@ -675,9 +685,9 @@ class MRDialog
675
685
  end
676
686
  end
677
687
  cmd << " "
678
- cmd << '"'
688
+ cmd << "'"
679
689
  cmd << text
680
- cmd << '"'
690
+ cmd << "'"
681
691
  cmd << " "
682
692
  cmd << height.to_s
683
693
  cmd << " "
@@ -693,7 +703,7 @@ class MRDialog
693
703
  @exit_code = $?.exitstatus
694
704
  log_debug "Exit code: #{exit_code}"
695
705
 
696
- if @exit_code == 0
706
+ if @exit_code != 1
697
707
  lines = tmp.readlines
698
708
  lines.each_with_index do |val, idx|
699
709
  key = items[idx][0]
@@ -701,8 +711,9 @@ class MRDialog
701
711
  end
702
712
  end
703
713
 
704
- tmp.close!
705
714
  return res_hash
715
+ ensure
716
+ tmp.close!
706
717
  end
707
718
 
708
719
  #
@@ -754,15 +765,14 @@ class MRDialog
754
765
  " 2> " + tmp.path
755
766
  success = system(command)
756
767
  @exit_code = $?.exitstatus
757
- if success
768
+ if @exit_code != 1
758
769
  date = Date::civil(*tmp.readline.split('/').collect {|i| i.to_i}.reverse)
759
- tmp.close!
760
770
  return date
761
771
  else
762
- tmp.close!
763
772
  return success
764
773
  end
765
-
774
+ ensure
775
+ tmp.close!
766
776
  end
767
777
 
768
778
  # A checklist box is similar to a menu box; there are multiple
@@ -800,9 +810,8 @@ class MRDialog
800
810
  success = system(command)
801
811
  @exit_code = $?.exitstatus
802
812
  selected_array = []
803
- if success
813
+ if @exit_code != 1
804
814
  selected_string = tmp.readline
805
- tmp.close!
806
815
  log_debug "Separator: #{@separator}"
807
816
 
808
817
  sep = Shellwords.escape(@separator)
@@ -813,10 +822,10 @@ class MRDialog
813
822
  end
814
823
  return selected_array
815
824
  else
816
- tmp.close!
817
825
  return success
818
826
  end
819
-
827
+ ensure
828
+ tmp.close!
820
829
  end
821
830
 
822
831
  # The file-selection dialog displays a text-entry window in which
@@ -850,18 +859,18 @@ class MRDialog
850
859
  success = system(command)
851
860
  @exit_code = $?.exitstatus
852
861
 
853
- if success
862
+ if @exit_code != 1
854
863
  begin
855
864
  selected_string = tmp.readline
856
865
  rescue EOFError
857
866
  selected_string = ""
858
867
  end
859
- tmp.close!
860
868
  return selected_string
861
869
  else
862
- tmp.close!
863
870
  return success
864
871
  end
872
+ ensure
873
+ tmp.close!
865
874
  end
866
875
 
867
876
 
@@ -914,15 +923,14 @@ class MRDialog
914
923
  success = system(command)
915
924
  @exit_code = $?.exitstatus
916
925
 
917
- if success
926
+ if @exit_code != 1
918
927
  selected_string = tmp.readline
919
- tmp.close!
920
928
  return selected_string
921
929
  else
922
- tmp.close!
923
930
  return success
924
931
  end
925
-
932
+ ensure
933
+ tmp.close!
926
934
  end
927
935
 
928
936
  # As its name suggests, a menu box is a dialog box that can be
@@ -961,15 +969,14 @@ class MRDialog
961
969
  success = system(command)
962
970
  @exit_code = $?.exitstatus
963
971
 
964
- if success
972
+ if @exit_code != 1
965
973
  selected_string = tmp.readline
966
- tmp.close!
967
974
  return selected_string
968
975
  else
969
- tmp.close!
970
976
  return success
971
977
  end
972
-
978
+ ensure
979
+ tmp.close!
973
980
  end
974
981
 
975
982
  # A message box is very similar to a yes/no box. The only dif-
@@ -1012,18 +1019,18 @@ class MRDialog
1012
1019
  success = system(command)
1013
1020
  @exit_code = $?.exitstatus
1014
1021
 
1015
- if success
1022
+ if @exit_code != 1
1016
1023
  begin
1017
1024
  selected_string = tmp.readline
1018
1025
  rescue EOFError
1019
1026
  selected_string = ""
1020
1027
  end
1021
- tmp.close!
1022
1028
  return selected_string
1023
1029
  else
1024
- tmp.close!
1025
1030
  return success
1026
1031
  end
1032
+ ensure
1033
+ tmp.close!
1027
1034
  end
1028
1035
 
1029
1036
  # The textbox method handles three similar dialog functions, textbox,
@@ -1093,15 +1100,14 @@ class MRDialog
1093
1100
  log_debug("Command:\n#{command}")
1094
1101
  success = system(command)
1095
1102
  @exit_code = $?.exitstatus
1096
- if success
1103
+ if @exit_code != 1
1097
1104
  time = Time.parse(tmp.readline)
1098
- tmp.close!
1099
1105
  return time
1100
1106
  else
1101
- tmp.close!
1102
1107
  return success
1103
1108
  end
1104
-
1109
+ ensure
1110
+ tmp.close!
1105
1111
  end
1106
1112
 
1107
1113
  # An input box is useful when you want to ask questions that
@@ -1129,18 +1135,18 @@ class MRDialog
1129
1135
  success = system(command)
1130
1136
  @exit_code = $?.exitstatus
1131
1137
 
1132
- if success
1138
+ if @exit_code != 1
1133
1139
  begin
1134
1140
  selected_string = tmp.readline
1135
1141
  rescue EOFError
1136
1142
  selected_string = ""
1137
1143
  end
1138
- tmp.close!
1139
1144
  return selected_string
1140
1145
  else
1141
- tmp.close!
1142
1146
  return success
1143
1147
  end
1148
+ ensure
1149
+ tmp.close!
1144
1150
  end
1145
1151
 
1146
1152
  # A yes/no dialog box of size height rows by width columns will
@@ -1163,13 +1169,13 @@ class MRDialog
1163
1169
  command = ""
1164
1170
  command << option_string();
1165
1171
  command << " "
1166
- command << '"'
1172
+ command << "'"
1167
1173
  command << "--yesno"
1168
- command << '"'
1174
+ command << "'"
1169
1175
  command << " "
1170
- command << '"'
1176
+ command << "'"
1171
1177
  command << text
1172
- command << '"'
1178
+ command << "'"
1173
1179
  command << " "
1174
1180
  command << height.to_s
1175
1181
  command << " "
@@ -1320,6 +1326,11 @@ class MRDialog
1320
1326
  ostring += "--nocancel "
1321
1327
  end
1322
1328
 
1329
+ # #7
1330
+ if @no_collapse
1331
+ ostring += "--no-collapse "
1332
+ end
1333
+
1323
1334
  return ostring
1324
1335
  end
1325
1336
  end
data/mrdialog.gemspec ADDED
@@ -0,0 +1,124 @@
1
+ # Generated by juwelier
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: mrdialog 1.0.4 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "mrdialog"
9
+ s.version = "1.0.4"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Aleks Clark", "Muhammad Muquit"]
14
+ s.date = "2018-04-12"
15
+ s.description = "A ruby gem for ncurses dialog program.\n This gem is based on rdialog (http://rdialog.rubyforge.org/) by\n Aleks Clark. I added support for missing widgets, fixed \n bugs and wrote the sample apps. I am \n also renaming the class to MRDialog to avoid conflicts.\n Please look at ChangeLog.md for details. "
16
+ s.email = "muquit@gmail.com"
17
+ s.extra_rdoc_files = [
18
+ "ChangeLog.md",
19
+ "LICENSE.txt",
20
+ "README.md"
21
+ ]
22
+ s.files = [
23
+ ".document",
24
+ "ChangeLog.md",
25
+ "Gemfile",
26
+ "Gemfile.lock",
27
+ "LICENSE.txt",
28
+ "README.md",
29
+ "Rakefile",
30
+ "VERSION",
31
+ "lib/mrdialog.rb",
32
+ "lib/mrdialog/mrdialog.rb",
33
+ "pkg/md5.txt",
34
+ "pkg/mrdialog-1.0.4.gem",
35
+ "samples/buildlist.rb",
36
+ "samples/calendar.rb",
37
+ "samples/checklist.rb",
38
+ "samples/editbox.rb",
39
+ "samples/form1.rb",
40
+ "samples/form2.rb",
41
+ "samples/form3.rb",
42
+ "samples/fselect.rb",
43
+ "samples/gauge.rb",
44
+ "samples/infobox.rb",
45
+ "samples/inputbox.rb",
46
+ "samples/menubox.rb",
47
+ "samples/mixedform1.rb",
48
+ "samples/msgbox.rb",
49
+ "samples/password.rb",
50
+ "samples/password2.rb",
51
+ "samples/passwordform.rb",
52
+ "samples/pause.rb",
53
+ "samples/prgbox.rb",
54
+ "samples/program.rb",
55
+ "samples/progress.rb",
56
+ "samples/radiolist.rb",
57
+ "samples/run_all.rb",
58
+ "samples/shortlist",
59
+ "samples/timebox.rb",
60
+ "samples/treeview.rb",
61
+ "samples/treeview2.rb",
62
+ "samples/yesno.rb",
63
+ "screenshots/README.txt",
64
+ "screenshots/all.gif",
65
+ "screenshots/buildlist.png",
66
+ "screenshots/calendar.png",
67
+ "screenshots/checklist.png",
68
+ "screenshots/editbox.png",
69
+ "screenshots/form1.png",
70
+ "screenshots/form2.png",
71
+ "screenshots/form3.png",
72
+ "screenshots/fselect.png",
73
+ "screenshots/gauge.png",
74
+ "screenshots/infobox.png",
75
+ "screenshots/inputbox.png",
76
+ "screenshots/menubox.png",
77
+ "screenshots/mixedform1.png",
78
+ "screenshots/msgbox.png",
79
+ "screenshots/password.png",
80
+ "screenshots/password2.png",
81
+ "screenshots/passwordform.png",
82
+ "screenshots/pause.png",
83
+ "screenshots/prgbox.png",
84
+ "screenshots/program.png",
85
+ "screenshots/progress.png",
86
+ "screenshots/radiolist.png",
87
+ "screenshots/take_shots.rb",
88
+ "screenshots/timebox.png",
89
+ "screenshots/treeview.png",
90
+ "screenshots/treeview2.png",
91
+ "screenshots/yesno.png",
92
+ "test/helper.rb",
93
+ "test/test_mrdialog.rb"
94
+ ]
95
+ s.homepage = "http://github.com/muquit/mrdialog"
96
+ s.licenses = ["MIT"]
97
+ s.rubygems_version = "2.5.2.1"
98
+ s.summary = "A ruby gem for ncurses dialog program, based on the gem rdialog"
99
+
100
+ if s.respond_to? :specification_version then
101
+ s.specification_version = 4
102
+
103
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
104
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
105
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
106
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
107
+ s.add_development_dependency(%q<juwelier>, ["~> 2.0.1"])
108
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
109
+ else
110
+ s.add_dependency(%q<shoulda>, [">= 0"])
111
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
112
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
113
+ s.add_dependency(%q<juwelier>, ["~> 2.0.1"])
114
+ s.add_dependency(%q<simplecov>, [">= 0"])
115
+ end
116
+ else
117
+ s.add_dependency(%q<shoulda>, [">= 0"])
118
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
119
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
120
+ s.add_dependency(%q<juwelier>, ["~> 2.0.1"])
121
+ s.add_dependency(%q<simplecov>, [">= 0"])
122
+ end
123
+ end
124
+
data/pkg/md5.txt CHANGED
@@ -1 +1 @@
1
- 2e4238d8e121adb4b646a299e63d333f mrdialog-1.0.3.gem
1
+ e6497d81db203c5c49dfff90c7870a09 mrdialog-1.0.3.gem
Binary file
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require [File.expand_path(File.dirname(__FILE__)), '../..', 'lib', 'mrdialog'].join('/')
4
+ require 'pp'
5
+
6
+ begin
7
+ ME = File.basename($0)
8
+ if ENV['CHANGE_TITLE']
9
+ if ME =~ /(.+)\.rb$/
10
+ base = $1
11
+ puts "\033]0;mrdialog - #{base}\007"
12
+ end
13
+ end
14
+ text = <<EOF
15
+ This example is taken from dialog/samples/menulist
16
+ shell script.
17
+
18
+ Hi, this is a buildlist dialog. The list on the left
19
+ shows the unselected items. The list on the right shows
20
+ the selected items. Use SPACE bar to select/unselect
21
+ items. Shadow is set to false.
22
+
23
+ EOF
24
+ items = []
25
+ Struct.new("BuildListData", :tag, :item, :status)
26
+ data = Struct::BuildListData.new
27
+
28
+ data.tag = "1"
29
+ data.item = "Item number 1"
30
+ data.status = true
31
+ items.push(data.to_a)
32
+
33
+ data = Struct::BuildListData.new
34
+ data.tag = "2"
35
+ data.item = "Item number 2"
36
+ data.status = false
37
+ items.push(data.to_a)
38
+
39
+ data = Struct::BuildListData.new
40
+ data.tag = "3"
41
+ data.item = "Item number 3"
42
+ data.status = false
43
+ items.push(data.to_a)
44
+
45
+ data = Struct::BuildListData.new
46
+ data.tag = "4"
47
+ data.item = "Item number 4"
48
+ data.status = true
49
+ items.push(data.to_a)
50
+
51
+ data = Struct::BuildListData.new
52
+ data.tag = "5"
53
+ data.item = "Item number 5"
54
+ data.status = false
55
+ items.push(data.to_a)
56
+
57
+ data = Struct::BuildListData.new
58
+ data.tag = "6"
59
+ data.item = "Item number 6"
60
+ data.status = true
61
+ items.push(data.to_a)
62
+
63
+ dialog = MRDialog.new
64
+ dialog.clear = true
65
+ dialog.shadow = false
66
+ dialog.title = "BUILDLIST"
67
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
68
+ dialog.extra_button = true
69
+ dialog.ok_label = "Send"
70
+ dialog.extra_label = "Archive"
71
+ dialog.cancel_label = "Quit"
72
+
73
+ height = 0
74
+ width = 0
75
+ listheight = 0
76
+
77
+ selected_items = dialog.buildlist(text, items, height, width, listheight)
78
+ exit_code = dialog.exit_code
79
+ puts "Exit code: #{exit_code}"
80
+ puts "Selecetd tags:"
81
+ selected_items.each do |item|
82
+ puts " '#{item}'"
83
+ end
84
+
85
+ rescue => e
86
+ puts "#{$!}"
87
+ t = e.backtrace.join("\n\t")
88
+ puts "Error: #{t}"
89
+ end