mrdialog 1.0.3 → 1.0.5

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