mrdialog 1.0.1

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.
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ begin
8
+ ME = File.basename($0)
9
+ text = <<EOF
10
+ Hi, this is an input dialog box. You can use
11
+ this to ask questions that require the user
12
+ to input a string as the answer. You can
13
+ input strings of length longer than the
14
+ width of the input box, in that case, the
15
+ input field will be automatically scrolled.
16
+ You can use BACKSPACE to correct errors.
17
+ Try entering your name below:
18
+
19
+ EOF
20
+ dialog = MRDialog.new
21
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
22
+ dialog.clear = true
23
+ dialog.title = "INPUT BOX"
24
+
25
+ height = 16
26
+ width = 51
27
+ init = "blah"
28
+ result = dialog.inputbox(text, height, width, init)
29
+
30
+ puts "Result is: #{result}"
31
+
32
+ rescue => e
33
+ puts "#{$!}"
34
+ t = e.backtrace.join("\n\t")
35
+ puts "Error: #{t}"
36
+ end
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ begin
6
+ ME = File.basename($0)
7
+ dialog = MRDialog.new
8
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
9
+ dialog.clear = true
10
+ dialog.title = "MENU BOX"
11
+
12
+ text = <<EOF
13
+ This example is taken from dialog/samples/menubox1
14
+
15
+ Hi, this is a menu box. You can use this to
16
+ present a list of choices for the user to
17
+ choose. If there are more items than can fit
18
+ on the screen, the menu will be scrolled.
19
+ You can use the UP/DOWN arrow keys, the first
20
+ letter of the choice as a hot key, or the
21
+ number keys 1-9 to choose an option.
22
+ Try it now!
23
+
24
+ Choose the OS you like:
25
+
26
+ EOF
27
+ items = []
28
+ menu_data = Struct.new(:tag, :item)
29
+ data = menu_data.new
30
+ data.tag = "Linux"
31
+ data.item = "The Great Unix Clone for 386/486"
32
+ items.push(data.to_a)
33
+
34
+ data = menu_data.new
35
+ data.tag = "NetBSD"
36
+ data.item = "Another free Unix Clone for 386/486"
37
+ items.push(data.to_a)
38
+
39
+ data = menu_data.new
40
+ data.tag = "OS/2"
41
+ data.item = "IBM OS/2"
42
+ items.push(data.to_a)
43
+
44
+ data = menu_data.new
45
+ data.tag = "WIN NT"
46
+ data.item = "Microsoft Windows NT"
47
+ items.push(data.to_a)
48
+
49
+ data = menu_data.new
50
+ data.tag = "PCDOS"
51
+ data.item = "IBM PC DOS"
52
+ items.push(data.to_a)
53
+
54
+ data = menu_data.new
55
+ data.tag = "MSDOS"
56
+ data.item = "Microsoft DOS"
57
+ items.push(data.to_a)
58
+
59
+
60
+ height = 0
61
+ width = 0
62
+ menu_height = 4
63
+
64
+ selected_item = dialog.menu(text, items, height, width, menu_height)
65
+
66
+ puts "Selected item: #{selected_item}"
67
+
68
+ rescue => e
69
+ puts "#{$!}"
70
+ t = e.backtrace.join("\n\t")
71
+ puts "Error: #{t}"
72
+ end
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ begin
8
+ ME = File.basename($0)
9
+ # uid=1000(muquit) gid=1000(muquit)
10
+ # groups=1000(muquit),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),125(sambashare)
11
+ user = ''
12
+ uid = ''
13
+ gid = ''
14
+ home = ENV["HOME"]
15
+
16
+ id = `id`.chomp
17
+ if id =~ /^uid=(\d+)\((.+)\)\sgid=(\d+)\(.*$/
18
+ uid = $1
19
+ user = $2
20
+ gid = $3
21
+ end
22
+
23
+ dialog = MRDialog.new
24
+ dialog.clear = true
25
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
26
+
27
+ text = <<EOF
28
+ Example of mixedform. The Username field is editable, The
29
+ UID, GID and HOME fields are editable and the Password
30
+ field is hidden. Also the insecure option is set for the
31
+ dialog which makes every character for the password to
32
+ echo as an asterisk.
33
+ EOF
34
+ items = []
35
+ form_data = Struct.new(:label, :ly, :lx, :item, :iy, :ix, :flen, :ilen, :attr)
36
+ # for :attr 1=hidden 2=read only
37
+ read_only = 2
38
+ hidden = 1
39
+
40
+ data = form_data.new
41
+ data.label = "Username:"
42
+ data.ly = 1
43
+ data.lx = 1
44
+ data.item = user
45
+ data.iy = 1
46
+ data.ix = 10
47
+ data.flen = user.length + 10
48
+ data.ilen = 0
49
+ data.attr = 0
50
+ items.push(data.to_a)
51
+
52
+ data = form_data.new
53
+ data.label = "UID:"
54
+ data.ly = 2
55
+ data.lx = 1
56
+ data.item = uid.to_s
57
+ data.iy = 2
58
+ data.ix = 10
59
+ data.flen = uid.length + 10
60
+ data.ilen = 0
61
+ data.attr = read_only
62
+ items.push(data.to_a)
63
+
64
+ data = form_data.new
65
+ data.label = "GID:"
66
+ data.ly = 3
67
+ data.lx = 1
68
+ data.item = gid.to_s
69
+ data.iy =3
70
+ data.ix = 10
71
+ data.flen = gid.length + 2
72
+ data.ilen = 0
73
+ data.attr = read_only
74
+ items.push(data.to_a)
75
+
76
+ data = form_data.new
77
+ data.label = "HOME:"
78
+ data.ly = 4
79
+ data.lx = 1
80
+ data.item = home
81
+ data.iy = 4
82
+ data.ix = 10
83
+ data.flen = home.length + 40
84
+ data.ilen = 0
85
+ data.attr = read_only
86
+ items.push(data.to_a)
87
+
88
+ data = form_data.new
89
+ data.label = "Password:"
90
+ data.ly = 5
91
+ data.lx = 1
92
+ data.item = ""
93
+ data.iy = 5
94
+ data.ix = 10
95
+ data.flen = 16
96
+ data.ilen = 0
97
+ data.attr = hidden
98
+ items.push(data.to_a)
99
+
100
+
101
+ dialog.title = "mixedform"
102
+ dialog.insecure = true
103
+ height = 20
104
+ width = 70
105
+ result_hash = dialog.mixedform(text, items, height, width, 0)
106
+ exit_code = dialog.exit_code
107
+ puts "exit code: #{exit_code}"
108
+ if result_hash
109
+ puts "Resulting data:"
110
+ result_hash.each do |key, val|
111
+ puts " #{key} = #{val}"
112
+ end
113
+ end
114
+
115
+
116
+ rescue => e
117
+ puts "#{$!}"
118
+ t = e.backtrace.join("\n\t")
119
+ puts "Error: #{t}"
120
+ end
data/samples/msgbox.rb ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ class TestMsgbox
8
+ ME = File.basename($0)
9
+ def initialize
10
+ end
11
+
12
+ def doit
13
+ dialog = MRDialog.new
14
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
15
+ dialog.clear = true
16
+ dialog.title = "MESSAGE BOX"
17
+
18
+ text = <<EOF
19
+ Hi, this is a simple message box. You can use this to \
20
+ display any message you like. The box will remain until \
21
+ you press the ENTER key.
22
+
23
+ EOF
24
+ result = dialog.msgbox(text, 10, 41)
25
+ puts "result: #{result}"
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ TestMsgbox.new.doit
31
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ # muquit@muquit.com Apr-01-2014
3
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
4
+ require 'pp'
5
+
6
+ begin
7
+ ME = File.basename($0)
8
+ text = <<EOF
9
+ Hi, this is an password dialog box. You can use
10
+ this to ask questions that require the user
11
+ to input a string as the answer. You can
12
+ input strings of length longer than the
13
+ width of the input box, in that case, the
14
+ input field will be automatically scrolled.
15
+ You can use BACKSPACE to correct errors.
16
+ Try entering your name below:
17
+
18
+ EOF
19
+ dialog = MRDialog.new
20
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
21
+ dialog.clear = true
22
+ dialog.title = "Password box"
23
+
24
+ result = dialog.passwordbox(text)
25
+
26
+ puts "Result is: #{result}"
27
+
28
+ rescue => e
29
+ puts "#{$!}"
30
+ t = e.backtrace.join("\n\t")
31
+ puts "Error: #{t}"
32
+ end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ########################################################################
4
+ # Example of password. It takes in the init arg and also set
5
+ # insecure option to dialog
6
+ # muquit@muquit.com Apr-02-2014
7
+ ########################################################################
8
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
9
+ require 'pp'
10
+
11
+ begin
12
+ ME = File.basename($0)
13
+ text = <<EOF
14
+ Hi, this is an password dialog box. You can use
15
+ this to ask questions that require the user
16
+ to input a string as the answer. You can
17
+ input strings of length longer than the
18
+ width of the input box, in that case, the
19
+ input field will be automatically scrolled.
20
+ You can use BACKSPACE to correct errors.
21
+
22
+ Try entering your name below:
23
+
24
+ EOF
25
+ dialog = MRDialog.new
26
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
27
+ dialog.clear = true
28
+ dialog.title = "Password box"
29
+ dialog.insecure = true
30
+
31
+ result = dialog.passwordbox(text, 0, 0, "stupid")
32
+
33
+ puts "Result is: #{result}"
34
+
35
+ rescue => e
36
+ puts "#{$!}"
37
+ t = e.backtrace.join("\n\t")
38
+ puts "Error: #{t}"
39
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ begin
8
+ ME = File.basename($0)
9
+ # uid=1000(muquit) gid=1000(muquit)
10
+ # groups=1000(muquit),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),125(sambashare)
11
+ user = ''
12
+ uid = ''
13
+ gid = ''
14
+ home = ENV["HOME"]
15
+
16
+ id = `id`.chomp
17
+ if id =~ /^uid=(\d+)\((.+)\)\sgid=(\d+)\(.*$/
18
+ uid = $1
19
+ user = $2
20
+ gid = $3
21
+ end
22
+
23
+ dialog = MRDialog.new
24
+ dialog.clear = true
25
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
26
+
27
+ text = <<EOF
28
+ Here is a possible piece of a configuration program.
29
+ EOF
30
+ items = []
31
+ form_data = Struct.new(:label, :ly, :lx, :item, :iy, :ix, :flen, :ilen)
32
+
33
+ data = form_data.new
34
+ data.label = "Username:"
35
+ data.ly = 1
36
+ data.lx = 1
37
+ data.item = user
38
+ data.iy = 1
39
+ data.ix = 10
40
+ data.flen = user.length + 10
41
+ data.ilen = 0
42
+ items.push(data.to_a)
43
+
44
+ data = form_data.new
45
+ data.label = "UID:"
46
+ data.ly = 2
47
+ data.lx = 1
48
+ data.item = uid.to_s
49
+ data.iy = 2
50
+ data.ix = 10
51
+ data.flen = uid.length + 10
52
+ data.ilen = 0
53
+ items.push(data.to_a)
54
+
55
+ data = form_data.new
56
+ data.label = "GID:"
57
+ data.ly = 3
58
+ data.lx = 1
59
+ data.item = gid.to_s
60
+ data.iy =3
61
+ data.ix = 10
62
+ data.flen = gid.length + 2
63
+ data.ilen = 0
64
+ items.push(data.to_a)
65
+
66
+ data = form_data.new
67
+ data.label = "HOME:"
68
+ data.ly = 4
69
+ data.lx = 1
70
+ data.item = home
71
+ data.iy = 4
72
+ data.ix = 10
73
+ data.flen = home.length + 40
74
+ data.ilen = 0
75
+ items.push(data.to_a)
76
+
77
+ dialog.insecure = true
78
+ result_hash = dialog.passwordform(text, items, 20, 50, 0)
79
+ if result_hash
80
+ puts "Resulting data:"
81
+ result_hash.each do |key, val|
82
+ puts " #{key} = #{val}"
83
+ end
84
+ end
85
+
86
+
87
+ rescue => e
88
+ puts "#{$!}"
89
+ t = e.backtrace.join("\n\t")
90
+ puts "Error: #{t}"
91
+ end
data/samples/pause.rb ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-20-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ class PauseBox
8
+ ME = File.basename($0)
9
+ def initialize
10
+ end
11
+
12
+ def doit
13
+ dialog = MRDialog.new
14
+ dialog.shadow = false
15
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
16
+ dialog.clear = true
17
+ dialog.title = "PAUSE BOX"
18
+
19
+ secs = 20
20
+ text = <<EOF
21
+ This is an example of pause box.
22
+
23
+ A pause box displays a meter along the bottom
24
+ of the box. The meter indicates how many seconds
25
+ remain until the end of the pause. The pause exits
26
+ when timeout is reached or the user presses the
27
+ OK button (status OK) or the user presses the
28
+ Cancel button or Esc key.
29
+ EOF
30
+ height = 15
31
+ width = 0
32
+ dialog.pause(text, height, width, secs)
33
+ exit_code = dialog.exit_code
34
+ puts "Exit code: #{exit_code}"
35
+ case exit_code
36
+ when 0
37
+ puts "OK"
38
+ when 1
39
+ puts "Cancel button pressed"
40
+ when 255
41
+ puts "Error or ESC button pressed"
42
+ end
43
+ end
44
+ end
45
+
46
+ if __FILE__ == $0
47
+ PauseBox.new.doit
48
+ end
data/samples/prgbox.rb ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ class TestPrgBox1
8
+ ME = File.basename($0)
9
+ def initialize
10
+ end
11
+
12
+ def doit
13
+ dialog = MRDialog.new
14
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
15
+ dialog.clear = true
16
+ dialog.title = "PRGBOX"
17
+
18
+ path = File.expand_path(File.dirname(__FILE__))
19
+ command = path + "/shortlist"
20
+ height = 20
21
+ width = 70
22
+ dialog.prgbox(command, height, width)
23
+
24
+
25
+ text = "Hi, this is prgbox text"
26
+ command = path + "/shortlist 2"
27
+ dialog.prgbox(command, height, width, text)
28
+
29
+ end
30
+ end
31
+
32
+ if __FILE__ == $0
33
+ TestPrgBox1.new.doit
34
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Example for progressbox widget. It is similar to the
4
+ # one comes with dialog source code.
5
+ # muquit@muquit.com Apr-02-2014
6
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
7
+ begin
8
+ ME = File.basename($0)
9
+ text = "Hi, this is a gauge widget"
10
+
11
+ height = 20
12
+ width = 70
13
+ percent = 0
14
+
15
+ dialog = MRDialog.new
16
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
17
+ dialog.clear = true
18
+ dialog.title = "PROGRAMBOX"
19
+
20
+
21
+ description="Description of progress:"
22
+ dialog.programbox(description,height, width) do |f|
23
+ la = `/bin/ls -l1`.split("\n")
24
+ la.each do |l|
25
+ f.puts l
26
+ sleep 0.05
27
+ end
28
+ end
29
+ rescue => e
30
+ puts "#{$!}"
31
+ t = e.backtrace.join("\n\t")
32
+ puts "Error: #{t}"
33
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Example for progressbox widget. It is similar to the
4
+ # one comes with dialog source code.
5
+ # muquit@muquit.com Apr-02-2014
6
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
7
+ begin
8
+ ME = File.basename($0)
9
+ text = "Hi, this is a gauge widget"
10
+
11
+ height = 20
12
+ width = 70
13
+ percent = 0
14
+
15
+ dialog = MRDialog.new
16
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
17
+ dialog.clear = true
18
+ dialog.title = "PROGRESSBOX"
19
+
20
+
21
+ description="Description of progress:"
22
+ dialog.progressbox(description,height, width) do |f|
23
+ la = `/bin/ls -l1`.split("\n")
24
+ la.each do |l|
25
+ f.puts l
26
+ sleep 1
27
+ end
28
+ end
29
+ rescue => e
30
+ t = e.backtrace.join("\n")
31
+ puts "Error: #{t}"
32
+ end
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ class TestRadiolist
8
+ ME = File.basename($0)
9
+ def initialize
10
+ end
11
+
12
+ def doit
13
+ dialog = MRDialog.new
14
+ dialog.clear = true
15
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
16
+
17
+ text = <<EOF
18
+ This example is taken from dialog/samples/radiolist
19
+ shell script.
20
+
21
+ Hi, this is a radiolist box. You can use this to
22
+ present a list of choices which can be turned on or
23
+ off. If there are more items than can fit on the
24
+ screen, the list will be scrolled. You can use the
25
+ UP/DOWN arrow keys, the first letter of the choice as a
26
+ hot key, or the number keys 1-9 to choose an option.
27
+ Press SPACE to toggle an option on/off.
28
+
29
+ Which of the following are fruits?
30
+
31
+ EOF
32
+ items = []
33
+ radiolist_data = Struct.new(:tag, :item, :select)
34
+
35
+ data = radiolist_data.new
36
+ data.tag = "Apple"
37
+ data.item = "It's an applie"
38
+ data.select = false
39
+ items.push(data.to_a)
40
+
41
+ data = radiolist_data.new
42
+ data.tag = "Dog"
43
+ data.item = "No it's not my dog"
44
+ data.select = true
45
+ items.push(data.to_a)
46
+
47
+ data = radiolist_data.new
48
+ data.tag = "Orange"
49
+ data.item = "Yeah! it is juicy"
50
+ data.select = false
51
+ items.push(data.to_a)
52
+
53
+ selected_item = dialog.radiolist(text, items)
54
+ exit_code = dialog.exit_code
55
+ case exit_code
56
+ when dialog.dialog_ok
57
+ puts "OK Pressed"
58
+ when dialog.dialog_cancel
59
+ puts "Cancel Pressed"
60
+ when dialog.dialog_esc
61
+ puts "Escape Pressed"
62
+ end
63
+
64
+ puts "Selected item: #{selected_item}"
65
+ end
66
+ end
67
+
68
+ if __FILE__ == $0
69
+ TestRadiolist.new.doit
70
+ end
71
+
data/samples/shortlist ADDED
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ # $Id: shortlist,v 1.2 2011/03/02 00:11:50 tom Exp $
3
+ # make a short listing, which writes to both stdout and stderr.
4
+
5
+ if test $# != 0
6
+ then
7
+ count=$1
8
+ else
9
+ count=10
10
+ fi
11
+
12
+ while test $count != 0
13
+ do
14
+ echo "** $count -- `date`"
15
+ w >&2
16
+ sleep 1
17
+ count=`expr $count - 1 2>/dev/null`
18
+ test -z "$count" && count=0
19
+ done
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # muquit@muquit.com Apr-01-2014
4
+ require [File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mrdialog'].join('/')
5
+ require 'pp'
6
+
7
+ begin
8
+ ME = File.basename($0)
9
+ text = <<EOF
10
+ Please set the time...
11
+ EOF
12
+
13
+ h = 0
14
+ w = 0
15
+ t = Time.new
16
+
17
+ dialog = MRDialog.new
18
+ dialog.logger = Logger.new(ENV["HOME"] + "/dialog_" + ME + ".log")
19
+ dialog.clear = true
20
+ dialog.title = "TIEMBOX"
21
+
22
+ # return Time
23
+ time = dialog.timebox(text, h, w, t)
24
+
25
+ puts "time: #{time}"
26
+
27
+ rescue => e
28
+ puts "#{$!}"
29
+ t = e.backtrace.join("\n\t")
30
+ puts "Error: #{t}"
31
+ end