mrdialog 1.0.1 → 1.0.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.
Files changed (81) hide show
  1. checksums.yaml +5 -5
  2. data/ChangeLog.md +68 -23
  3. data/Gemfile +3 -2
  4. data/LICENSE.txt +1 -1
  5. data/README.md +196 -0
  6. data/Rakefile +3 -3
  7. data/VERSION +1 -1
  8. data/lib/mrdialog/mrdialog.rb +261 -178
  9. data/mrdialog.gemspec +124 -0
  10. data/pkg/md5.txt +1 -0
  11. data/samples/buildlist.rb +9 -1
  12. data/samples/calendar.rb +7 -0
  13. data/samples/checklist.rb +17 -4
  14. data/samples/editbox.rb +7 -0
  15. data/samples/extra_button/buildlist.rb +89 -0
  16. data/samples/extra_button/calendar.rb +45 -0
  17. data/samples/extra_button/checklist.rb +84 -0
  18. data/samples/extra_button/form1.rb +101 -0
  19. data/samples/extra_button/fselect.rb +36 -0
  20. data/samples/extra_button/inputbox.rb +48 -0
  21. data/samples/extra_button/menubox.rb +85 -0
  22. data/samples/extra_button/password.rb +44 -0
  23. data/samples/extra_button/radiolist.rb +86 -0
  24. data/samples/extra_button/timebox.rb +43 -0
  25. data/samples/extra_button/treeview.rb +112 -0
  26. data/samples/form1.rb +8 -2
  27. data/samples/form2.rb +7 -0
  28. data/samples/form3.rb +7 -1
  29. data/samples/fselect.rb +7 -0
  30. data/samples/gauge.rb +7 -0
  31. data/samples/infobox.rb +7 -0
  32. data/samples/inputbox.rb +7 -0
  33. data/samples/menubox.rb +7 -0
  34. data/samples/mixedform1.rb +7 -2
  35. data/samples/msgbox.rb +7 -0
  36. data/samples/password.rb +7 -0
  37. data/samples/password2.rb +7 -0
  38. data/samples/passwordform.rb +8 -2
  39. data/samples/pause.rb +7 -0
  40. data/samples/prgbox.rb +7 -0
  41. data/samples/program.rb +7 -0
  42. data/samples/progress.rb +7 -0
  43. data/samples/radiolist.rb +8 -0
  44. data/samples/run_all.rb +52 -0
  45. data/samples/timebox.rb +7 -0
  46. data/samples/treeview.rb +7 -0
  47. data/samples/treeview2.rb +7 -0
  48. data/samples/yesno.rb +7 -0
  49. data/screenshots/README.txt +10 -0
  50. data/screenshots/all.gif +0 -0
  51. data/screenshots/buildlist.png +0 -0
  52. data/screenshots/calendar.png +0 -0
  53. data/screenshots/checklist.png +0 -0
  54. data/screenshots/editbox.png +0 -0
  55. data/screenshots/form1.png +0 -0
  56. data/screenshots/form2.png +0 -0
  57. data/screenshots/form3.png +0 -0
  58. data/screenshots/fselect.png +0 -0
  59. data/screenshots/gauge.png +0 -0
  60. data/screenshots/infobox.png +0 -0
  61. data/screenshots/inputbox.png +0 -0
  62. data/screenshots/menubox.png +0 -0
  63. data/screenshots/mixedform1.png +0 -0
  64. data/screenshots/msgbox.png +0 -0
  65. data/screenshots/password.png +0 -0
  66. data/screenshots/password2.png +0 -0
  67. data/screenshots/passwordform.png +0 -0
  68. data/screenshots/pause.png +0 -0
  69. data/screenshots/prgbox.png +0 -0
  70. data/screenshots/program.png +0 -0
  71. data/screenshots/progress.png +0 -0
  72. data/screenshots/radiolist.png +0 -0
  73. data/screenshots/take_shots.rb +111 -0
  74. data/screenshots/timebox.png +0 -0
  75. data/screenshots/treeview.png +0 -0
  76. data/screenshots/treeview2.png +0 -0
  77. data/screenshots/yesno.png +0 -0
  78. metadata +83 -29
  79. data/Gemfile.lock +0 -82
  80. data/README.rdoc +0 -52
  81. data/pkg/mrdialog-1.0.1.gem +0 -0
@@ -39,6 +39,9 @@ class MRDialog
39
39
  # All accessors are boolean unless otherwise noted.
40
40
  #
41
41
 
42
+ # Specify the rc file to use for dialog. Default is $HOME/.dialogrc
43
+ attr_accessor :rc_file
44
+
42
45
  #
43
46
  # This gives you some control over the box dimensions when
44
47
  # using auto sizing (specifying 0 for height and width).
@@ -94,6 +97,9 @@ class MRDialog
94
97
  #
95
98
  attr_accessor :shadow
96
99
 
100
+ # MMM
101
+ attr_accessor :notags
102
+
97
103
  #
98
104
  # Sleep (delay) for the given integer of seconds after processing
99
105
  # a dialog box.
@@ -129,9 +135,12 @@ class MRDialog
129
135
  attr_accessor :dialog_ok
130
136
  attr_accessor :dialog_cancel
131
137
  attr_accessor :dialog_help
132
- attr_accessor :dialog_extra
133
138
  attr_accessor :dialog_item_help
134
139
  attr_accessor :dialog_esc
140
+ attr_accessor :dialog_extra
141
+
142
+ # pass dialog's option exactly
143
+ attr_accessor :dialog_options
135
144
 
136
145
  #
137
146
  # ruby logger
@@ -140,6 +149,27 @@ class MRDialog
140
149
  # Override the label used for "OK" buttons
141
150
  attr_accessor :ok_label
142
151
 
152
+ # Override the label used for "Cancel" buttons
153
+ attr_accessor :cancel_label
154
+
155
+ # Override the label used for "Yes" buttons
156
+ attr_accessor :yes_label
157
+
158
+ # Override the label used for "No" buttons
159
+ attr_accessor :no_label
160
+
161
+ # Add a "Help" button
162
+ attr_accessor :help_button
163
+
164
+ # Override the label used for the "Help" button
165
+ attr_accessor :help_label
166
+
167
+ # Add an "Extra" button
168
+ attr_accessor :extra_button
169
+
170
+ # Override the label used for the "Extra" button
171
+ attr_accessor :extra_label
172
+
143
173
  # clear screen
144
174
  attr_accessor :clear
145
175
 
@@ -166,6 +196,7 @@ class MRDialog
166
196
  # muquit@muquit.com mod starts--
167
197
  $stdout.sync = true
168
198
  $stderr.sync = true
199
+ # @tags = true
169
200
  @dialog_ok = DIALOG_OK
170
201
  @dialog_cancel = DIALOG_CANCEL
171
202
  @dialog_help = DIALOG_HELP
@@ -411,11 +442,12 @@ class MRDialog
411
442
  @exit_code = $?.exitstatus
412
443
  log_debug "Exit code: #{exit_code}"
413
444
  tag = ''
414
- if @exit_code == 0
445
+ if @exit_code != 1
415
446
  tag = tmp.read
416
447
  end
417
- tmp.close!
418
448
  return tag
449
+ ensure
450
+ tmp.close!
419
451
  end
420
452
 
421
453
  #
@@ -494,7 +526,7 @@ class MRDialog
494
526
  system(cmd)
495
527
  @exit_code = $?.exitstatus
496
528
  log_debug "Exit code: #{exit_code}"
497
- if @exit_code == 0
529
+ if @exit_code != 1
498
530
  lines = tmp.read
499
531
  log_debug "lines: #{lines} #{lines.class}"
500
532
  sep = Shellwords.escape(@separator)
@@ -504,8 +536,9 @@ class MRDialog
504
536
  selected_tags << tag if tag.to_s.length > 0
505
537
  end
506
538
  end
507
- tmp.close!
508
539
  return selected_tags
540
+ ensure
541
+ tmp.close!
509
542
  end
510
543
 
511
544
  # A pause box displays a meter along the bottom of the box. The
@@ -573,8 +606,9 @@ class MRDialog
573
606
  if @exit_code == 0
574
607
  result = tmp.read
575
608
  end
576
- tmp.close!
577
609
  return result
610
+ ensure
611
+ tmp.close!
578
612
  end
579
613
 
580
614
  #
@@ -662,7 +696,7 @@ class MRDialog
662
696
  @exit_code = $?.exitstatus
663
697
  log_debug "Exit code: #{exit_code}"
664
698
 
665
- if @exit_code == 0
699
+ if @exit_code != 1
666
700
  lines = tmp.readlines
667
701
  lines.each_with_index do |val, idx|
668
702
  key = items[idx][0]
@@ -670,8 +704,9 @@ class MRDialog
670
704
  end
671
705
  end
672
706
 
673
- tmp.close!
674
707
  return res_hash
708
+ ensure
709
+ tmp.close!
675
710
  end
676
711
 
677
712
  #
@@ -722,15 +757,15 @@ class MRDialog
722
757
  day.to_i.to_s + " " + month.to_i.to_s + " " + year.to_i.to_s +
723
758
  " 2> " + tmp.path
724
759
  success = system(command)
725
- if success
760
+ @exit_code = $?.exitstatus
761
+ if @exit_code != 1
726
762
  date = Date::civil(*tmp.readline.split('/').collect {|i| i.to_i}.reverse)
727
- tmp.close!
728
763
  return date
729
764
  else
730
- tmp.close!
731
765
  return success
732
766
  end
733
-
767
+ ensure
768
+ tmp.close!
734
769
  end
735
770
 
736
771
  # A checklist box is similar to a menu box; there are multiple
@@ -766,10 +801,10 @@ class MRDialog
766
801
  tmp.path
767
802
  log_debug "Command:\n#{command}"
768
803
  success = system(command)
769
- selected_array = []
770
- if success
804
+ @exit_code = $?.exitstatus
805
+ selected_array = []
806
+ if @exit_code != 1
771
807
  selected_string = tmp.readline
772
- tmp.close!
773
808
  log_debug "Separator: #{@separator}"
774
809
 
775
810
  sep = Shellwords.escape(@separator)
@@ -780,10 +815,10 @@ class MRDialog
780
815
  end
781
816
  return selected_array
782
817
  else
783
- tmp.close!
784
818
  return success
785
819
  end
786
-
820
+ ensure
821
+ tmp.close!
787
822
  end
788
823
 
789
824
  # The file-selection dialog displays a text-entry window in which
@@ -807,27 +842,28 @@ class MRDialog
807
842
  # value in the text-entry window and exit.
808
843
 
809
844
  def fselect(path, height=0, width=0)
810
- tmp = Tempfile.new('tmp')
845
+ tmp = Tempfile.new('tmp')
811
846
 
812
- command = option_string() + "--fselect \"" + path.to_s +
813
- "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
847
+ command = option_string() + "--fselect \"" + path.to_s +
848
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
849
+
850
+ command += "2> " + tmp.path
814
851
 
815
- command += "2> " + tmp.path
816
-
817
- success = system(command)
818
-
819
- if success
820
- begin
821
- selected_string = tmp.readline
822
- rescue EOFError
823
- selected_string = ""
824
- end
825
- tmp.close!
826
- return selected_string
827
- else
828
- tmp.close!
829
- return success
830
- end
852
+ success = system(command)
853
+ @exit_code = $?.exitstatus
854
+
855
+ if @exit_code != 1
856
+ begin
857
+ selected_string = tmp.readline
858
+ rescue EOFError
859
+ selected_string = ""
860
+ end
861
+ return selected_string
862
+ else
863
+ return success
864
+ end
865
+ ensure
866
+ tmp.close!
831
867
  end
832
868
 
833
869
 
@@ -845,49 +881,49 @@ class MRDialog
845
881
  command = option_string() + "--infobox \"" + text.to_s +
846
882
  "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
847
883
  success = system(command)
884
+ @exit_code = $?.exitstatus
848
885
  return success
849
886
  end
850
887
 
851
- # A radiolist box is similar to a menu box. The only difference
852
- # is that you can indicate which entry is currently selected, by
853
- # setting its status to true.
854
-
855
- def radiolist(text, items, height=0, width=0, listheight=0)
888
+ # A radiolist box is similar to a menu box. The only difference
889
+ # is that you can indicate which entry is currently selected, by
890
+ # setting its status to true.
891
+ def radiolist(text, items, height=0, width=0, listheight=0)
856
892
 
857
- tmp = Tempfile.new('tmp')
893
+ tmp = Tempfile.new('tmp')
858
894
 
859
- itemlist = String.new
895
+ itemlist = String.new
860
896
 
861
- for item in items
862
- if item[2]
863
- item[2] = "on"
864
- else
865
- item[2] = "off"
866
- end
867
- itemlist += "\"" + item[0].to_s + "\" \"" + item[1].to_s +
868
- "\" " + item[2] + " "
897
+ for item in items
898
+ if item[2]
899
+ item[2] = "on"
900
+ else
901
+ item[2] = "off"
902
+ end
903
+ itemlist += "\"" + item[0].to_s + "\" \"" + item[1].to_s +
904
+ "\" " + item[2] + " "
869
905
 
870
- if @itemhelp
871
- itemlist += "\"" + item[3].to_s + "\" "
872
- end
873
- end
906
+ if @itemhelp
907
+ itemlist += "\"" + item[3].to_s + "\" "
908
+ end
909
+ end
874
910
 
875
- command = option_string() + "--radiolist \"" + text.to_s +
876
- "\" " + height.to_i.to_s + " " + width.to_i.to_s +
877
- " " + listheight.to_i.to_s + " " + itemlist + "2> " +
878
- tmp.path
879
- log_debug("Command:\n#{command}")
880
- success = system(command)
881
-
882
- if success
883
- selected_string = tmp.readline
884
- tmp.close!
885
- return selected_string
886
- else
887
- tmp.close!
888
- return success
889
- end
911
+ command = option_string() + "--radiolist \"" + text.to_s +
912
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s +
913
+ " " + listheight.to_i.to_s + " " + itemlist + "2> " +
914
+ tmp.path
915
+ log_debug("Command:\n#{command}")
916
+ success = system(command)
917
+ @exit_code = $?.exitstatus
890
918
 
919
+ if @exit_code != 1
920
+ selected_string = tmp.readline
921
+ return selected_string
922
+ else
923
+ return success
924
+ end
925
+ ensure
926
+ tmp.close!
891
927
  end
892
928
 
893
929
  # As its name suggests, a menu box is a dialog box that can be
@@ -905,43 +941,43 @@ class MRDialog
905
941
  # Returns a string containing the tag of the chosen menu entry.
906
942
 
907
943
  def menu(text="Text Goes Here", items=nil, height=0, width=0, listheight=0)
908
- tmp = Tempfile.new('tmp')
944
+ tmp = Tempfile.new('tmp')
909
945
 
910
- itemlist = String.new
946
+ itemlist = String.new
947
+
948
+ for item in items
949
+ itemlist += "\"" + item[0].to_s + "\" \"" + item[1].to_s + "\" "
950
+
951
+ if @itemhelp
952
+ itemlist += "\"" + item[2].to_s + "\" "
953
+ end
954
+ end
911
955
 
912
- for item in items
913
- itemlist += "\"" + item[0].to_s + "\" \"" + item[1].to_s + "\" "
956
+ command = option_string() + "--menu \"" + text.to_s +
957
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s +
958
+ " " + listheight.to_i.to_s + " " + itemlist + "2> " +
959
+ tmp.path
914
960
 
915
- if @itemhelp
916
- itemlist += "\"" + item[2].to_s + "\" "
917
- end
918
- end
961
+ log_debug("Command:\n#{command}")
962
+ success = system(command)
963
+ @exit_code = $?.exitstatus
919
964
 
920
- command = option_string() + "--menu \"" + text.to_s +
921
- "\" " + height.to_i.to_s + " " + width.to_i.to_s +
922
- " " + listheight.to_i.to_s + " " + itemlist + "2> " +
923
- tmp.path
924
-
925
- log_debug("Command:\n#{command}")
926
- success = system(command)
927
-
928
- if success
929
- selected_string = tmp.readline
930
- tmp.close!
931
- return selected_string
932
- else
933
- tmp.close!
934
- return success
935
- end
936
-
965
+ if @exit_code != 1
966
+ selected_string = tmp.readline
967
+ return selected_string
968
+ else
969
+ return success
970
+ end
971
+ ensure
972
+ tmp.close!
937
973
  end
938
974
 
939
- # A message box is very similar to a yes/no box. The only dif-
940
- # ference between a message box and a yes/no box is that a mes-
941
- # sage box has only a single OK button. You can use this dialog
942
- # box to display any message you like. After reading the mes-
943
- # sage, the user can press the ENTER key so that dialog will exit
944
- # and the calling shell script can continue its operation.
975
+ # A message box is very similar to a yes/no box. The only dif-
976
+ # ference between a message box and a yes/no box is that a mes-
977
+ # sage box has only a single OK button. You can use this dialog
978
+ # box to display any message you like. After reading the mes-
979
+ # sage, the user can press the ENTER key so that dialog will exit
980
+ # and the calling shell script can continue its operation.
945
981
 
946
982
  def msgbox(text="Text Goes Here", height=0, width=0)
947
983
  command = option_string() + "--msgbox \"" + text.to_s +
@@ -949,44 +985,46 @@ class MRDialog
949
985
 
950
986
  log_debug "Command\n#{command}"
951
987
  success = system(command)
988
+ @exit_code = $?.exitstatus
952
989
  return success
953
990
  end
954
991
 
955
- # A password box is similar to an input box, except that the text
956
- # the user enters is not displayed. This is useful when prompt-
957
- # ing for passwords or other sensitive information. Be aware
958
- # that if anything is passed in "init", it will be visible in the
959
- # system's process table to casual snoopers. Also, it is very
960
- # confusing to the user to provide them with a default password
961
- # they cannot see. For these reasons, using "init" is highly
962
- # discouraged.
992
+ # A password box is similar to an input box, except that the text
993
+ # the user enters is not displayed. This is useful when prompt-
994
+ # ing for passwords or other sensitive information. Be aware
995
+ # that if anything is passed in "init", it will be visible in the
996
+ # system's process table to casual snoopers. Also, it is very
997
+ # confusing to the user to provide them with a default password
998
+ # they cannot see. For these reasons, using "init" is highly
999
+ # discouraged.
963
1000
 
964
1001
  def passwordbox(text="Please enter some text", height=0, width=0, init="")
965
- tmp = Tempfile.new('tmp')
966
- command = option_string() + "--passwordbox \"" + text.to_s +
967
- "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
1002
+ tmp = Tempfile.new('tmp')
1003
+ command = option_string() + "--passwordbox \"" + text.to_s +
1004
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
968
1005
 
969
- unless init.empty?
970
- command += init.to_s + " "
971
- end
1006
+ unless init.empty?
1007
+ command += init.to_s + " "
1008
+ end
972
1009
 
973
- command += "2> " + tmp.path
974
- log_debug(command)
975
- success = system(command)
976
-
977
- if success
978
- begin
979
- selected_string = tmp.readline
980
- rescue EOFError
981
- selected_string = ""
982
- end
983
- tmp.close!
984
- return selected_string
985
- else
986
- tmp.close!
987
- return success
1010
+ command += "2> " + tmp.path
1011
+ log_debug(command)
1012
+ success = system(command)
1013
+ @exit_code = $?.exitstatus
1014
+
1015
+ if @exit_code != 1
1016
+ begin
1017
+ selected_string = tmp.readline
1018
+ rescue EOFError
1019
+ selected_string = ""
988
1020
  end
989
- end
1021
+ return selected_string
1022
+ else
1023
+ return success
1024
+ end
1025
+ ensure
1026
+ tmp.close!
1027
+ end
990
1028
 
991
1029
  # The textbox method handles three similar dialog functions, textbox,
992
1030
  # tailbox, and tailboxbg. They are activated by setting type to
@@ -1030,38 +1068,39 @@ class MRDialog
1030
1068
  "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
1031
1069
 
1032
1070
  success = system(command)
1071
+ @exit_code = $?.exitstatus
1033
1072
 
1034
1073
  return success
1035
1074
  end
1036
1075
 
1037
- # A dialog is displayed which allows you to select hour, minute
1038
- # and second. If the values for hour, minute or second are miss-
1039
- # ing or negative, the current date's corresponding values are
1040
- # used. You can increment or decrement any of those using the
1041
- # left-, up-, right- and down-arrows. Use tab or backtab to move
1042
- # between windows.
1043
- #
1044
- # On exit, a Time object is returned.
1076
+ # A dialog is displayed which allows you to select hour, minute
1077
+ # and second. If the values for hour, minute or second are miss-
1078
+ # ing or negative, the current date's corresponding values are
1079
+ # used. You can increment or decrement any of those using the
1080
+ # left-, up-, right- and down-arrows. Use tab or backtab to move
1081
+ # between windows.
1082
+ #
1083
+ # On exit, a Time object is returned.
1045
1084
 
1046
1085
  ##- def timebox(file, type="text", height=0, width=0, time=Time.now)
1047
- def timebox(text, height=0, width=0, time=Time.now)
1048
- tmp = Tempfile.new('tmp')
1049
-
1050
- command = option_string() + "--timebox \"" + text.to_s +
1051
- "\" " + height.to_i.to_s + " " + width.to_i.to_s + " " +
1052
- time.hour.to_s + " " + time.min.to_s + " " +
1053
- time.sec.to_s + " 2> " + tmp.path
1054
- log_debug("Command:\n#{command}")
1055
- success = system(command)
1056
- if success
1057
- time = Time.parse(tmp.readline)
1058
- tmp.close!
1059
- return time
1060
- else
1061
- tmp.close!
1062
- return success
1063
- end
1064
-
1086
+ def timebox(text, height=0, width=0, time=Time.now)
1087
+ tmp = Tempfile.new('tmp')
1088
+
1089
+ command = option_string() + "--timebox \"" + text.to_s +
1090
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s + " " +
1091
+ time.hour.to_s + " " + time.min.to_s + " " +
1092
+ time.sec.to_s + " 2> " + tmp.path
1093
+ log_debug("Command:\n#{command}")
1094
+ success = system(command)
1095
+ @exit_code = $?.exitstatus
1096
+ if @exit_code != 1
1097
+ time = Time.parse(tmp.readline)
1098
+ return time
1099
+ else
1100
+ return success
1101
+ end
1102
+ ensure
1103
+ tmp.close!
1065
1104
  end
1066
1105
 
1067
1106
  # An input box is useful when you want to ask questions that
@@ -1077,7 +1116,7 @@ class MRDialog
1077
1116
  tmp = Tempfile.new('tmp')
1078
1117
 
1079
1118
  command = option_string() + "--inputbox \"" + text.to_s +
1080
- "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
1119
+ "\" " + height.to_i.to_s + " " + width.to_i.to_s + " "
1081
1120
 
1082
1121
  unless init.empty?
1083
1122
  command += init.to_s + " "
@@ -1086,32 +1125,33 @@ class MRDialog
1086
1125
  command += "2> " + tmp.path
1087
1126
 
1088
1127
  log_debug(command)
1089
- success = system(command)
1128
+ success = system(command)
1129
+ @exit_code = $?.exitstatus
1090
1130
 
1091
- if success
1131
+ if @exit_code != 1
1092
1132
  begin
1093
- selected_string = tmp.readline
1133
+ selected_string = tmp.readline
1094
1134
  rescue EOFError
1095
1135
  selected_string = ""
1096
1136
  end
1097
- tmp.close!
1098
- return selected_string
1099
- else
1100
- tmp.close!
1101
- return success
1102
- end
1137
+ return selected_string
1138
+ else
1139
+ return success
1140
+ end
1141
+ ensure
1142
+ tmp.close!
1103
1143
  end
1104
1144
 
1105
- # A yes/no dialog box of size height rows by width columns will
1106
- # be displayed. The string specified by text is displayed inside
1107
- # the dialog box. If this string is too long to fit in one line,
1108
- # it will be automatically divided into multiple lines at appro-
1109
- # priate places. The text string can also contain the sub-string
1110
- # "\n" or newline characters '\n' to control line breaking
1111
- # explicitly. This dialog box is useful for asking questions
1112
- # that require the user to answer either yes or no. The dialog
1113
- # box has a Yes button and a No button, in which the user can
1114
- # switch between by pressing the TAB key.
1145
+ # A yes/no dialog box of size height rows by width columns will
1146
+ # be displayed. The string specified by text is displayed inside
1147
+ # the dialog box. If this string is too long to fit in one line,
1148
+ # it will be automatically divided into multiple lines at appro-
1149
+ # priate places. The text string can also contain the sub-string
1150
+ # "\n" or newline characters '\n' to control line breaking
1151
+ # explicitly. This dialog box is useful for asking questions
1152
+ # that require the user to answer either yes or no. The dialog
1153
+ # box has a Yes button and a No button, in which the user can
1154
+ # switch between by pressing the TAB key.
1115
1155
 
1116
1156
  # changing --inputbox to --yesno
1117
1157
  # muquit@muquit.com Apr-01-2014
@@ -1137,6 +1177,7 @@ class MRDialog
1137
1177
 
1138
1178
  log_debug("Command:\n#{command}")
1139
1179
  success = system(command)
1180
+ @exit_code = $?.exitstatus
1140
1181
  return success
1141
1182
  end
1142
1183
 
@@ -1159,10 +1200,14 @@ class MRDialog
1159
1200
  end
1160
1201
  end
1161
1202
  raise "'dialog' executable not found in path" unless exe_loc
1203
+
1204
+ # if an rc file was specified, set DIALOGRC to that file
1205
+ ENV["DIALOGRC"] = @rc_file if @rc_file
1206
+
1162
1207
  ostring = exe_loc + " "
1163
1208
 
1164
1209
  if @aspect
1165
- ostring += "--aspect " + aspect + " "
1210
+ ostring += "--aspect " + @aspect + " "
1166
1211
  end
1167
1212
 
1168
1213
  if @beep
@@ -1189,6 +1234,16 @@ class MRDialog
1189
1234
  end
1190
1235
  end
1191
1236
 
1237
+ unless @notags == nil
1238
+ if @notags == true
1239
+ ostring += "--no-tags "
1240
+ end
1241
+ end
1242
+
1243
+ if @dialog_options
1244
+ ostring += " #{@dialog_options} "
1245
+ end
1246
+
1192
1247
  if @sleep
1193
1248
  ostring += "--sleep " + @sleep.to_s + " "
1194
1249
  end
@@ -1224,6 +1279,34 @@ class MRDialog
1224
1279
  ostring += "--ok-label #{@ok_label} "
1225
1280
  end
1226
1281
 
1282
+ if @cancel_label
1283
+ ostring += "--cancel-label #{@cancel_label} "
1284
+ end
1285
+
1286
+ if @yes_label
1287
+ ostring += "--yes-label #{@yes_label} "
1288
+ end
1289
+
1290
+ if @no_label
1291
+ ostring += "--no-label #{@no_label} "
1292
+ end
1293
+
1294
+ if @extra_button
1295
+ ostring += "--extra-button "
1296
+ end
1297
+
1298
+ if @extra_label
1299
+ ostring += "--extra-label #{@extra_label} "
1300
+ end
1301
+
1302
+ if @help_button
1303
+ ostring += "--help-button "
1304
+ end
1305
+
1306
+ if @help_label
1307
+ ostring += "--help-label #{@help_label} "
1308
+ end
1309
+
1227
1310
  if @separator
1228
1311
  ostring += "--separator \"#{@separator}\" "
1229
1312
  end