mrdialog 1.0.6 → 1.0.7
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 +4 -4
- data/ChangeLog.md +32 -1
- data/Gemfile +4 -4
- data/LICENSE.txt +1 -1
- data/Makefile +29 -0
- data/Notes.txt +24 -0
- data/README.md +169 -88
- data/VERSION +1 -1
- data/docs/ChangeLog.md +132 -0
- data/docs/README.md +294 -0
- data/lib/mrdialog/mrdialog.rb +119 -148
- data/samples/checklist.rb +17 -6
- data/samples/form3.rb +72 -23
- data/samples/textbox.rb +65 -0
- metadata +18 -16
- data/mrdialog.gemspec +0 -124
- data/pkg/md5.txt +0 -1
- data/pkg/mrdialog-1.0.5.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dc47a088312c9388ffd5a9e244e8671cf1cbe64bdd426654d96a8ba8acce2802
|
|
4
|
+
data.tar.gz: 69bcc7ab22b75d3fd95235f7306765040501ef889d8fbcedc1a6f2da2f2b47a3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9f79425d6e6aba5eca88f8e3e9d53309b969562b4f25a4460f0fa667bd88256d85d9bd5b47abd58f7bd316bed068c0abbd7cbe01e43d6e2f52e2f9399676f554
|
|
7
|
+
data.tar.gz: b9c548304b94be40b060f9677e4f1687ec4741b8d48b58b74cb843dd846f33131679bfe31fd18c308b2eefa3f5a92f363f5dc224ce485856c573975f3588b1e9
|
data/ChangeLog.md
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
## Table Of Contents
|
|
2
|
+
- [1.0.7](#107)
|
|
3
|
+
- [1.0.6](#106)
|
|
4
|
+
- [1.0.5](#105)
|
|
5
|
+
- [1.0.4](#104)
|
|
6
|
+
- [1.0.3](#103)
|
|
7
|
+
- [1.0.2](#102)
|
|
8
|
+
- [1.0.1](#101)
|
|
9
|
+
- [bug fixes](#bug-fixes)
|
|
10
|
+
- [0.5.0](#050)
|
|
11
|
+
|
|
12
|
+
## 1.0.7
|
|
13
|
+
* If any text had single quote in it e.g. "don't", "It's", the dialog
|
|
14
|
+
command was failing with syntax error. In previsous version, the dialog
|
|
15
|
+
command was wrapped with single quotes but now shell escape the values.
|
|
16
|
+
Note: this is a parsing bug fix, not a security issue. Thanks to Carl for
|
|
17
|
+
finding this bug.
|
|
18
|
+
|
|
19
|
+
(Oct-18-2025)
|
|
20
|
+
|
|
21
|
+
* If no item was selected in a checklist, an EOF exception was thrown. Now
|
|
22
|
+
return false in that case.
|
|
23
|
+
|
|
24
|
+
* Update checklist example to get selected item in an array. Before the items
|
|
25
|
+
were in an array with 1 element.
|
|
26
|
+
|
|
27
|
+
(Jan-23-2024)
|
|
28
|
+
|
|
29
|
+
## 1.0.6
|
|
30
|
+
* Ruby 3.2.0 removed File.exists? method. Change to File.exist?
|
|
31
|
+
|
|
1
32
|
## 1.0.5
|
|
2
33
|
* Wrap values inside single quotes indead of double quotes. If saved values
|
|
3
34
|
are reloaded in a form, special shell characters could get expanded and
|
|
@@ -98,7 +129,7 @@ Note: The examples use Struct class, making the examples clean and
|
|
|
98
129
|
easy to understand.
|
|
99
130
|
|
|
100
131
|
|
|
101
|
-
|
|
132
|
+
## bug fixes
|
|
102
133
|
|
|
103
134
|
* raise exception if 'dialog' program is not found.
|
|
104
135
|
* title in the option string was not quoted
|
data/Gemfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
source "
|
|
1
|
+
source "https://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
|
3
3
|
# Example:
|
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
|
@@ -7,9 +7,9 @@ source "http://rubygems.org"
|
|
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
|
8
8
|
group :development do
|
|
9
9
|
gem "shoulda", ">= 0"
|
|
10
|
-
gem "rdoc", "~>
|
|
11
|
-
gem "bundler", "
|
|
12
|
-
gem "juwelier", "
|
|
10
|
+
gem "rdoc", "~> 6.1.2.1"
|
|
11
|
+
gem "bundler", "~> 2.1.0"
|
|
12
|
+
gem "juwelier", ">= 2.4.9"
|
|
13
13
|
gem "simplecov", ">= 0"
|
|
14
14
|
gem "test-unit"
|
|
15
15
|
end
|
data/LICENSE.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Copyright (c) Aleks Clarks, http://rdialog.rubyforge.org/
|
|
2
|
-
Copyright (c) 2016-
|
|
2
|
+
Copyright (c) 2016-2025, Muhammad Muquit, https://www.muquit.com/
|
|
3
3
|
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
a copy of this software and associated documentation files (the
|
data/Makefile
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Created Oct-18-2025
|
|
2
|
+
VERSION := $(shell cat VERSION)
|
|
3
|
+
|
|
4
|
+
all: build doc
|
|
5
|
+
|
|
6
|
+
build:
|
|
7
|
+
rm -rf pkg/*
|
|
8
|
+
rake clean
|
|
9
|
+
rake gemspec
|
|
10
|
+
rake build
|
|
11
|
+
cd pkg && sha256sum mrdialog-$(VERSION).gem > sha256sum.txt
|
|
12
|
+
/bin/ls -lt ./pkg
|
|
13
|
+
|
|
14
|
+
# https://github.com/muquit/markdown-toc-go
|
|
15
|
+
doc:
|
|
16
|
+
markdown-toc-go -i docs/README.md -o README.md -f
|
|
17
|
+
markdown-toc-go -i docs/ChangeLog.md -o ChangeLog.md -f -no-credit
|
|
18
|
+
|
|
19
|
+
release: build
|
|
20
|
+
gem push pkg/mrdialog-$(VERSION).gem
|
|
21
|
+
|
|
22
|
+
install: build
|
|
23
|
+
gem install --local pkg/mrdialog-$(VERSION).gem
|
|
24
|
+
|
|
25
|
+
test-install: build
|
|
26
|
+
gem install --local pkg/mrdialog-$(VERSION).gem
|
|
27
|
+
ruby -e "require 'mrdialog'; puts 'mrdialog $(VERSION) installed successfully!'"
|
|
28
|
+
|
|
29
|
+
.PHONY: all build doc release install test-install
|
data/Notes.txt
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Notes for myself
|
|
2
|
+
|
|
3
|
+
* Update VERSION if needed
|
|
4
|
+
|
|
5
|
+
* If anything changed, build the gem by running
|
|
6
|
+
rake clean
|
|
7
|
+
rake gemspec
|
|
8
|
+
rake build
|
|
9
|
+
cd pkg
|
|
10
|
+
|
|
11
|
+
* To look at the content of the local gem, run
|
|
12
|
+
gem unpack file.gem
|
|
13
|
+
* remove old version
|
|
14
|
+
* git add <new version>
|
|
15
|
+
* update md5.txt
|
|
16
|
+
* commit
|
|
17
|
+
* push
|
|
18
|
+
|
|
19
|
+
* To publish to rubygems.org
|
|
20
|
+
gem push mrdialog-1.0.6.gem
|
|
21
|
+
Pushing gem to https://rubygems.org...
|
|
22
|
+
You have enabled multi-factor authentication. Please enter OTP code.
|
|
23
|
+
Code: XXXXXX
|
|
24
|
+
Successfully registered gem: mrdialog (1.0.7)
|
data/README.md
CHANGED
|
@@ -1,13 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
## Table Of Contents
|
|
2
|
+
- [Introduction](#introduction)
|
|
3
|
+
- [Latest Version (1.0.7 - Oct-19-2025)](#latest-version-107-oct-19-2025)
|
|
4
|
+
- [To install](#to-install)
|
|
5
|
+
- [To uninstall](#to-uninstall)
|
|
6
|
+
- [Screenshots](#screenshots)
|
|
7
|
+
- [Requirements](#requirements)
|
|
8
|
+
- [Run the sample apps](#run-the-sample-apps)
|
|
9
|
+
- [How to use the API](#how-to-use-the-api)
|
|
10
|
+
- [Properties](#properties)
|
|
11
|
+
- [Widgets](#widgets)
|
|
12
|
+
- [buildlist](#buildlist)
|
|
13
|
+
- [calendar](#calendar)
|
|
14
|
+
- [checklist](#checklist)
|
|
15
|
+
- [editbox](#editbox)
|
|
16
|
+
- [form](#form)
|
|
17
|
+
- [fselect](#fselect)
|
|
18
|
+
- [gauge](#gauge)
|
|
19
|
+
- [infobox](#infobox)
|
|
20
|
+
- [textbox](#textbox)
|
|
21
|
+
- [inputbox](#inputbox)
|
|
22
|
+
- [menu](#menu)
|
|
23
|
+
- [msgbox](#msgbox)
|
|
24
|
+
- [passwordbox](#passwordbox)
|
|
25
|
+
- [passwordform](#passwordform)
|
|
26
|
+
- [pause](#pause)
|
|
27
|
+
- [prgbox](#prgbox)
|
|
28
|
+
- [progressbox](#progressbox)
|
|
29
|
+
- [programbox](#programbox)
|
|
30
|
+
- [radiolist](#radiolist)
|
|
31
|
+
- [timebox](#timebox)
|
|
32
|
+
- [treeview](#treeview)
|
|
33
|
+
- [yesno](#yesno)
|
|
34
|
+
- [Dependencies](#dependencies)
|
|
35
|
+
- [For Developers](#for-developers)
|
|
36
|
+
- [License](#license)
|
|
37
|
+
|
|
38
|
+
## Introduction
|
|
39
|
+
|
|
40
|
+
`mrdialog` is a pure
|
|
4
41
|
[ruby](https://www.ruby-lang.org/) library for the ncurses
|
|
5
42
|
[dialog](http://invisible-island.net/dialog/dialog.html) program.
|
|
6
43
|
[dialog](http://invisible-island.net/dialog/dialog.html) is
|
|
7
44
|
a command line tool that can present questions, messages, forms using
|
|
8
|
-
dialog boxes from a shell script. If you compiled linux kernel and typed
|
|
9
|
-
menuconfig
|
|
10
|
-
managers, you have used 'dialog' like programs.
|
|
45
|
+
dialog boxes from a shell script on terminal. If you compiled linux kernel and typed
|
|
46
|
+
`make menuconfig`, configured Linux from command line with various
|
|
47
|
+
configuration managers, you have used 'dialog' like programs. Please
|
|
48
|
+
have a lookt at the [screenshots](screenshots/) on the dialogs look
|
|
49
|
+
like.
|
|
11
50
|
|
|
12
51
|
However, it is painful to program dialog from shell scripts due to lack of
|
|
13
52
|
data structure. You constantly have to watch if the correct number of
|
|
@@ -17,7 +56,7 @@ a lot of fun to program dialog from an object oriented scripting language like
|
|
|
17
56
|
the sample ruby scripts of mrdialog in the [samples](samples/) directory, I think you will agree. Look at [samples/extra_button/](samples/extra_button/) directory for samples on using an extra button on various input dialogs.
|
|
18
57
|
|
|
19
58
|
MRDialog is based on the rdialog ruby gem http://rdialog.rubyforge.org/ by
|
|
20
|
-
Aleks Clark.
|
|
59
|
+
Aleks Clark (Does not seem to exist anymore).
|
|
21
60
|
|
|
22
61
|
I did the following:
|
|
23
62
|
|
|
@@ -27,57 +66,73 @@ I did the following:
|
|
|
27
66
|
|
|
28
67
|
If you have bug reports, questions, requests or suggestions, please enter it in the [Issues](https://github.com/muquit/mrdialog/issues) with an appropriate label.
|
|
29
68
|
|
|
30
|
-
|
|
69
|
+
## Latest Version (1.0.7 - Oct-19-2025)
|
|
31
70
|
|
|
32
|
-
The latest version is 1.0.
|
|
33
|
-
Please look at the [ChangeLog.md](ChangeLog.md) file for details. Please look at he [screenshots](screenshots/) to see how the widgets look like.
|
|
71
|
+
The latest version is 1.0.7
|
|
34
72
|
|
|
35
|
-
|
|
73
|
+
**Important fix in 1.0.7**: Fixed a parsing bug where dialog commands
|
|
74
|
+
would fail if any text contained apostrophes (single quotes). All special
|
|
75
|
+
characters in user input are now properly handled.
|
|
36
76
|
|
|
37
|
-
Please look at the [
|
|
77
|
+
Please look at the [ChangeLog.md](ChangeLog.md) file for details. Please look at the [screenshots](screenshots/) to see how the widgets look like.
|
|
38
78
|
|
|
39
|
-
|
|
79
|
+
## To install
|
|
40
80
|
|
|
41
|
-
|
|
81
|
+
```bash
|
|
82
|
+
gem install mrdialog
|
|
83
|
+
or
|
|
84
|
+
sudo gem install mrdialog
|
|
85
|
+
```
|
|
42
86
|
|
|
43
|
-
|
|
87
|
+
## To uninstall
|
|
44
88
|
|
|
45
|
-
|
|
89
|
+
```bash
|
|
90
|
+
gem uninstall mrdialog
|
|
91
|
+
or
|
|
92
|
+
sudo gem uninstall mrdialog
|
|
93
|
+
```
|
|
46
94
|
|
|
47
|
-
### To install
|
|
48
95
|
|
|
49
|
-
|
|
50
|
-
or
|
|
51
|
-
`$ sudo gem install mrdialog`
|
|
96
|
+
## Screenshots
|
|
52
97
|
|
|
53
|
-
|
|
98
|
+
Please look at the [screenshots](screenshots/) directory. There are individual screenshots for each of the widgets. Also the animated GIF file [all.gif](screenshots/all.gif) contains screenshot of all the widgets.
|
|
54
99
|
|
|
55
|
-
|
|
100
|
+
## Requirements
|
|
56
101
|
|
|
57
|
-
|
|
102
|
+
The [dialog](http://invisible-island.net/dialog/dialog.html) program must be installed. Note: the dialog program that is available in ubuntu is little old. Check the dialog version by typing `dialog --version`
|
|
103
|
+
|
|
104
|
+
I tested with `Version: 1.3-20250116`
|
|
105
|
+
|
|
106
|
+
dialog HOME: http://invisible-island.net/dialog/dialog.html.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
## Run the sample apps
|
|
58
110
|
|
|
59
111
|
Find out where the mrdialog gem is installed. Example:
|
|
112
|
+
```bash
|
|
113
|
+
gem which mrdialog
|
|
114
|
+
/Users/muquit/.rvm/gems/ruby-3.2.2/gems/mrdialog-1.0.7/lib/mrdialog.rb
|
|
115
|
+
```
|
|
60
116
|
|
|
61
|
-
$ gem which mrdialog
|
|
62
|
-
/Users/muquit/.rvm/gems/ruby-3.0.0/gems/mrdialog-1.0.4/lib/mrdialog.rb
|
|
63
117
|
|
|
64
118
|
`cd` to the `samples` directory and run the apps.
|
|
65
119
|
Example:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
120
|
+
```bash
|
|
121
|
+
cd /Users/muquit/.rvm/gems/ruby-3.2.2/gems/mrdialog-1.0.7/samples
|
|
122
|
+
./msgbox.rb
|
|
123
|
+
```
|
|
69
124
|
|
|
70
125
|
Look at samples/extra_button/ on how to use an extra button on various input
|
|
71
126
|
dialogs.
|
|
72
127
|
|
|
73
|
-
|
|
128
|
+
## How to use the API
|
|
74
129
|
|
|
75
130
|
For now, please look at the apps in [samples](samples/) directory to see how the API works.
|
|
76
131
|
|
|
77
132
|
require 'mrdialog'
|
|
78
133
|
dialog = MRDialog.new
|
|
79
134
|
|
|
80
|
-
|
|
135
|
+
## Properties
|
|
81
136
|
|
|
82
137
|
The various properties of the dialog (shadow, title etc.) can be set by calling the appropriate setters. The supported properties are shown below:
|
|
83
138
|
|
|
@@ -99,7 +154,7 @@ The various properties of the dialog (shadow, title etc.) can be set by calling
|
|
|
99
154
|
| extra_label | `dialog.extra_label = "More"` | Use the specified label on the "Extra" button. | "Extra" |
|
|
100
155
|
| dialog_options | `dialog.dialog_options="any valid dialog option"` e.g. `dialog.dialog_options="--no-tags"` for checklist | Pass any valid dialog option. `man dialog` and look at the **OPTIONS** section. It is the caller's responsibility to specify correct options, no validation will be done | N/A |
|
|
101
156
|
|
|
102
|
-
|
|
157
|
+
## Widgets
|
|
103
158
|
|
|
104
159
|
The following dialog widgets are supported:
|
|
105
160
|
|
|
@@ -111,6 +166,7 @@ The following dialog widgets are supported:
|
|
|
111
166
|
- fselect
|
|
112
167
|
- gauge
|
|
113
168
|
- infobox
|
|
169
|
+
- textbox
|
|
114
170
|
- inputbox
|
|
115
171
|
- menu
|
|
116
172
|
- msgbox
|
|
@@ -125,129 +181,154 @@ The following dialog widgets are supported:
|
|
|
125
181
|
- treeview
|
|
126
182
|
- yesno
|
|
127
183
|
|
|
128
|
-
|
|
184
|
+
### buildlist
|
|
129
185
|
|
|
130
186
|
A buildlist dialog displays two lists, side-by-side. The list on the left shows unselected items. The list on the right shows selected items. As items are selected or unselected, they move between the lists. The SPACE bar is used to
|
|
131
187
|
select or unselect an item.
|
|
132
188
|
|
|
133
|
-
Use a carriage return or the "OK" button to accept the current value in the selected-window and exit. The results are written using the order displayed in the selected-window. The caller is responsible to create the items properly.
|
|
189
|
+
Use a carriage return or the "OK" button to accept the current value in the selected-window and exit. The results are written using the order displayed in the selected-window. The caller is responsible to create the items properly.
|
|
134
190
|
|
|
135
191
|
returns an array of selected tags
|
|
192
|
+
```bash
|
|
193
|
+
result_array = dialog.buildlist(text="Text Goes Here", items, height=0, width=0, listheight=0)
|
|
194
|
+
```
|
|
195
|
+
- Please look at [buildlist.rb](samples/buildlist.rb) for an example.
|
|
136
196
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
#### calendar
|
|
197
|
+
### calendar
|
|
140
198
|
|
|
141
|
-
Please look at [calendar.rb](samples/calendar.rb) for an example.
|
|
199
|
+
- Please look at [calendar.rb](samples/calendar.rb) for an example.
|
|
142
200
|
|
|
143
|
-
|
|
201
|
+
### checklist
|
|
144
202
|
|
|
145
|
-
Please look at [checklist.rb](samples/checklist.rb) for an example.
|
|
203
|
+
- Please look at [checklist.rb](samples/checklist.rb) for an example.
|
|
146
204
|
|
|
147
|
-
|
|
205
|
+
### editbox
|
|
148
206
|
|
|
149
|
-
Please look at [editbox.rb](samples/editbox.rb) for an example.
|
|
207
|
+
- Please look at [editbox.rb](samples/editbox.rb) for an example.
|
|
150
208
|
|
|
151
|
-
|
|
209
|
+
### form
|
|
152
210
|
|
|
153
|
-
Please look at
|
|
211
|
+
- Please look at
|
|
154
212
|
[form1.rb](samples/form1.rb), [form2.rb](samples/form2.rb), [form3.rb](samples/form3.rb)
|
|
155
213
|
for examples.
|
|
156
214
|
|
|
157
|
-
|
|
215
|
+
### fselect
|
|
158
216
|
|
|
159
|
-
Please look at [fselect.rb](samples/fselect.rb) for an example.
|
|
217
|
+
- Please look at [fselect.rb](samples/fselect.rb) for an example.
|
|
160
218
|
|
|
161
|
-
|
|
219
|
+
### gauge
|
|
162
220
|
|
|
163
|
-
Please look at [gauge.rb](samples/gauge.rb) for an example.
|
|
221
|
+
- Please look at [gauge.rb](samples/gauge.rb) for an example.
|
|
164
222
|
|
|
165
|
-
|
|
223
|
+
### infobox
|
|
166
224
|
|
|
167
|
-
Please look at [infobox.rb](samples/infobox.rb) for an example.
|
|
225
|
+
- Please look at [infobox.rb](samples/infobox.rb) for an example.
|
|
168
226
|
|
|
169
|
-
|
|
227
|
+
### textbox
|
|
228
|
+
- Please look at [textbox.rb](samples/textbox.rb) for an example.
|
|
170
229
|
|
|
171
|
-
|
|
230
|
+
### inputbox
|
|
172
231
|
|
|
173
|
-
|
|
232
|
+
- Please look at [inputbox.rb](samples/inputbox.rb) for an example.
|
|
174
233
|
|
|
175
|
-
|
|
234
|
+
### menu
|
|
176
235
|
|
|
177
|
-
|
|
236
|
+
- Please look at [menubox.rb](samples/menubox.rb) for an example.
|
|
178
237
|
|
|
179
|
-
|
|
238
|
+
### msgbox
|
|
180
239
|
|
|
181
|
-
|
|
240
|
+
- Please look at [msgbox.rb](samples/msgbox.rb) for an example.
|
|
182
241
|
|
|
183
|
-
|
|
242
|
+
### passwordbox
|
|
243
|
+
|
|
244
|
+
- Please look at [password.rb](samples/password.rb), [password2.rb](samples/password2.rb)
|
|
184
245
|
for examples.
|
|
185
246
|
|
|
186
|
-
|
|
247
|
+
### passwordform
|
|
187
248
|
|
|
188
|
-
Please look at [passwordform.rb](samples/passwordform.rb) for an example.
|
|
249
|
+
- Please look at [passwordform.rb](samples/passwordform.rb) for an example.
|
|
189
250
|
|
|
190
|
-
|
|
251
|
+
### pause
|
|
191
252
|
|
|
192
|
-
Please look at [pause.rb](samples/pause.rb) for an example.
|
|
253
|
+
- Please look at [pause.rb](samples/pause.rb) for an example.
|
|
193
254
|
|
|
194
|
-
|
|
255
|
+
### prgbox
|
|
195
256
|
|
|
196
|
-
Please look at [prgbox.rb](samples/prgbox.rb) for an example.
|
|
257
|
+
- Please look at [prgbox.rb](samples/prgbox.rb) for an example.
|
|
197
258
|
|
|
198
|
-
|
|
259
|
+
### progressbox
|
|
199
260
|
|
|
200
|
-
Please look at [progressbox.rb](samples/progressbox.rb) for an example.
|
|
261
|
+
- Please look at [progressbox.rb](samples/progressbox.rb) for an example.
|
|
201
262
|
|
|
202
|
-
|
|
263
|
+
### programbox
|
|
203
264
|
|
|
204
|
-
Please look at [programbox.rb](samples/programbox.rb) for an example.
|
|
265
|
+
- Please look at [programbox.rb](samples/programbox.rb) for an example.
|
|
205
266
|
|
|
206
|
-
|
|
267
|
+
### radiolist
|
|
207
268
|
|
|
208
|
-
Please look at [radiolist.rb](samples/radiolist.rb) for an example.
|
|
269
|
+
- Please look at [radiolist.rb](samples/radiolist.rb) for an example.
|
|
209
270
|
|
|
210
|
-
|
|
271
|
+
### timebox
|
|
211
272
|
|
|
212
|
-
Please look at [timebox.rb](samples/timebox.rb) for an example.
|
|
273
|
+
- Please look at [timebox.rb](samples/timebox.rb) for an example.
|
|
213
274
|
|
|
214
|
-
|
|
275
|
+
### treeview
|
|
215
276
|
|
|
216
|
-
Please look at [treeview.rb](samples/treeview.rb) for an example.
|
|
277
|
+
- Please look at [treeview.rb](samples/treeview.rb) for an example.
|
|
217
278
|
|
|
218
|
-
|
|
279
|
+
### yesno
|
|
219
280
|
|
|
220
|
-
Please look at [yesno.rb](samples/yesno.rb) for an example.
|
|
281
|
+
- Please look at [yesno.rb](samples/yesno.rb) for an example.
|
|
221
282
|
|
|
222
|
-
|
|
283
|
+
## Dependencies
|
|
223
284
|
|
|
224
285
|
Mrdialog does not have dependencies on any other gems. The gems in Gemfile are
|
|
225
286
|
for development for building the gem.
|
|
226
287
|
|
|
227
288
|
|
|
228
|
-
|
|
289
|
+
## For Developers
|
|
229
290
|
|
|
230
|
-
Note: Pre-built mrdialog-1.0.
|
|
291
|
+
Note: Pre-built `mrdialog-1.0.7.gem` is in the pkg directory
|
|
231
292
|
|
|
232
293
|
If you need to build the gem yourself:
|
|
233
294
|
|
|
234
295
|
Install bundler first:
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
296
|
+
```bash
|
|
297
|
+
gem install bundler
|
|
298
|
+
bundle install
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
- To build:
|
|
302
|
+
```bash
|
|
303
|
+
rake clean
|
|
304
|
+
rake gemspec
|
|
305
|
+
rake build
|
|
306
|
+
```
|
|
240
307
|
|
|
241
308
|
Will create the gem inside the pkg directory
|
|
242
309
|
|
|
243
|
-
- To install the built gem:
|
|
310
|
+
- To install the built gem:
|
|
311
|
+
```bash
|
|
312
|
+
sudo gem install --local pkg/mrdialog-1.0.7.gem
|
|
313
|
+
```
|
|
244
314
|
|
|
245
|
-
- To install using rake:
|
|
315
|
+
- To install using rake:
|
|
316
|
+
```bash
|
|
317
|
+
sudo rake install
|
|
318
|
+
```
|
|
246
319
|
|
|
247
|
-
- To install the gem to a specific directory:
|
|
320
|
+
- To install the gem to a specific directory:
|
|
321
|
+
```bash
|
|
322
|
+
GEM_HOME=/tmp gem install --local pkg/mrdialog-1.0.7.gem`
|
|
323
|
+
```
|
|
248
324
|
|
|
249
|
-
The gem will be installed in
|
|
325
|
+
The gem will be installed in `/tmp/gems` directory
|
|
250
326
|
|
|
251
|
-
|
|
327
|
+
Please see the [Makefile](Makefile) for build and release commands
|
|
328
|
+
|
|
329
|
+
## License
|
|
252
330
|
|
|
253
331
|
License is MIT. Please look at the [LICENSE.txt](LICENSE.txt) file for details.
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
<sub>TOC is created by https://github.com/muquit/markdown-toc-go on Oct-19-2025</sub>
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.7
|
data/docs/ChangeLog.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
## 1.0.7
|
|
2
|
+
* If any text had single quote in it e.g. "don't", "It's", the dialog
|
|
3
|
+
command was failing with syntax error. In previsous version, the dialog
|
|
4
|
+
command was wrapped with single quotes but now shell escape the values.
|
|
5
|
+
Note: this is a parsing bug fix, not a security issue. Thanks to Carl for
|
|
6
|
+
finding this bug.
|
|
7
|
+
|
|
8
|
+
(Oct-18-2025)
|
|
9
|
+
|
|
10
|
+
* If no item was selected in a checklist, an EOF exception was thrown. Now
|
|
11
|
+
return false in that case.
|
|
12
|
+
|
|
13
|
+
* Update checklist example to get selected item in an array. Before the items
|
|
14
|
+
were in an array with 1 element.
|
|
15
|
+
|
|
16
|
+
(Jan-23-2024)
|
|
17
|
+
|
|
18
|
+
## 1.0.6
|
|
19
|
+
* Ruby 3.2.0 removed File.exists? method. Change to File.exist?
|
|
20
|
+
|
|
21
|
+
## 1.0.5
|
|
22
|
+
* Wrap values inside single quotes indead of double quotes. If saved values
|
|
23
|
+
are reloaded in a form, special shell characters could get expanded and
|
|
24
|
+
corrupt data. Please update to v1.0.5.
|
|
25
|
+
(Mar-15-2023)
|
|
26
|
+
|
|
27
|
+
## 1.0.4
|
|
28
|
+
* Previously only the OK/Yes button read input from forms, menus and lists.
|
|
29
|
+
If an extra button is used, it was treated the same as the Cancel/No
|
|
30
|
+
button, and no output from the form/menu/list was returned to the caller.
|
|
31
|
+
|
|
32
|
+
This PR changes the various user input dialogs to treat the Extra button
|
|
33
|
+
the same way as the OK/Yes button, and to return the dialog's input to the
|
|
34
|
+
caller.
|
|
35
|
+
|
|
36
|
+
Thanks to https://github.com/OtherJohnGray for pull request.
|
|
37
|
+
|
|
38
|
+
(Jun-22-2022)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## 1.0.3
|
|
42
|
+
* Added accessor `rc_file`. It specifies the DIALOGRC file to use. Default is $HOME/.dialogrc
|
|
43
|
+
* Added accessor `cancel_label`. It specifies the label to use for the 'Cancel' button.
|
|
44
|
+
* Added accessor `yes_label`. It specifies the label to use for the 'Yes' button.
|
|
45
|
+
* Added accessor `no_label`. It specifies the label to use for the 'No' button.
|
|
46
|
+
* Added accessor `help_button`. It specifies that a help button should be added to the dialog.
|
|
47
|
+
* Added accessor `help_label`. It specifies the label to use for the 'Help' button.
|
|
48
|
+
* Added accessor `extra_button`. It specifies that an extra button should be added to the dialog.
|
|
49
|
+
* Added accessor `extra_label`. It specifies the label to use for the 'Extra' button.
|
|
50
|
+
* Fully implemented @exit_code. The @exit_code variable wasn't being set on all dialog styles.
|
|
51
|
+
|
|
52
|
+
## 1.0.2
|
|
53
|
+
|
|
54
|
+
* Added accessor `notags`. It can be used with checklist for example. The default value is false.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
dialog = MRDialog.new()
|
|
58
|
+
dialog.notags = true
|
|
59
|
+
```
|
|
60
|
+
* Added accessor `dialog_options`. It can be used to pass any valid dialog option. `man dialog` and look at the **OPTIONS** section. It is the caller's responsibily to specify correct options, no validation will be done. Example:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
dialog = MRDialog.new()
|
|
64
|
+
dialog.dialog_options = "--no-tags"
|
|
65
|
+
```
|
|
66
|
+
This ia exactly same as `dialog.notags = true`
|
|
67
|
+
|
|
68
|
+
(Apr-16-2016 )
|
|
69
|
+
|
|
70
|
+
## 1.0.1
|
|
71
|
+
|
|
72
|
+
* Juwelier support for making the gem.
|
|
73
|
+
|
|
74
|
+
Implemented methods for:
|
|
75
|
+
|
|
76
|
+
* 'buildlist' (--buildlist)
|
|
77
|
+
* 'editbox' (--editbox)
|
|
78
|
+
* 'form' (--form)
|
|
79
|
+
* 'gauge' (--gauge). Thanks to Mike Morgan.
|
|
80
|
+
* 'mixedform' (--mixedform)
|
|
81
|
+
* 'passwordform' (--mixedform)
|
|
82
|
+
* 'pause' (--pasue)
|
|
83
|
+
* 'prgbox' (--prgbox)
|
|
84
|
+
* 'progressbox' (--progressbox)
|
|
85
|
+
* 'progambox' (--programbox)
|
|
86
|
+
* 'treeview' (--treeview)
|
|
87
|
+
|
|
88
|
+
* Added accessors:
|
|
89
|
+
"logger", "clear", "ok_label <label>", "insecure", "ascii_lines"
|
|
90
|
+
* Added methods to check dialog's exit code
|
|
91
|
+
dialog_ok, dialog_cancel, dialog_help, dialog_extra,
|
|
92
|
+
dialog_item_help, dialog_esc
|
|
93
|
+
|
|
94
|
+
Implemented examples for:
|
|
95
|
+
|
|
96
|
+
* buildlist
|
|
97
|
+
* calendar
|
|
98
|
+
* checklist
|
|
99
|
+
* editbox
|
|
100
|
+
* form
|
|
101
|
+
* fselect
|
|
102
|
+
* gauge
|
|
103
|
+
* infobox
|
|
104
|
+
* inputbox
|
|
105
|
+
* menu
|
|
106
|
+
* msgbox
|
|
107
|
+
* passwordbox
|
|
108
|
+
* pause
|
|
109
|
+
* prgbox
|
|
110
|
+
* progressbox
|
|
111
|
+
* programbox
|
|
112
|
+
* radiolist
|
|
113
|
+
* timebox
|
|
114
|
+
* treeview
|
|
115
|
+
* yesno
|
|
116
|
+
|
|
117
|
+
Note: The examples use Struct class, making the examples clean and
|
|
118
|
+
easy to understand.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
## bug fixes
|
|
122
|
+
|
|
123
|
+
* raise exception if 'dialog' program is not found.
|
|
124
|
+
* title in the option string was not quoted
|
|
125
|
+
* timebox syntax is different now.
|
|
126
|
+
etc..
|
|
127
|
+
|
|
128
|
+
-- muquit@muquit.com , Apr-05-2014, first cut
|
|
129
|
+
|
|
130
|
+
## 0.5.0
|
|
131
|
+
|
|
132
|
+
* original base code
|