dialogbind 0.9.4.1 → 0.9.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.
- checksums.yaml +4 -4
- data/lib/dialogbind.rb +72 -19
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 117589fe831467e5e45659f7338bc5222450aee700e76aeed980682ee6b96695
|
4
|
+
data.tar.gz: 450fa5c663f131d086bd526b331d4a108143c3240c2503860b8f3cf472758027
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23f91664fd2d2742fad0e4b682d6b082d06f3e0bbedbb939c2aa414d60a342f39f9f6d19ff581de3b3468bc778f08c08f3f14032b0552c091dfbdfb4c5bb7d86
|
7
|
+
data.tar.gz: 6492ae4777d9d5814860df7dde030f78bf30e24efdc9be6351f380d8e087d202824bad70e910147f537ea05c9e20de56fa43c25b84bdf3e5c47a58ea65cd02cf
|
data/lib/dialogbind.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
require 'fiddle/import'
|
9
9
|
|
10
10
|
$dialogbind_macos_script_cmd = ''
|
11
|
-
$dialogbind_version = '0.9.
|
11
|
+
$dialogbind_version = '0.9.5'
|
12
12
|
|
13
13
|
# @!visibility private
|
14
14
|
def zenity(arg)
|
@@ -56,13 +56,13 @@ def kdialog(arg, redirect_output=false)
|
|
56
56
|
end
|
57
57
|
|
58
58
|
# @!visibility private
|
59
|
-
def macdialog(text, buttons=['OK'], type='dialog', error=false, dryrun=false)
|
59
|
+
def macdialog(text, buttons=['OK'], type='dialog', error=false, dryrun=false, notificationtitle='')
|
60
60
|
text_fixed = text.gsub("!", "").gsub("'", '').gsub('"', '').gsub('$', '')
|
61
61
|
cmd = "osascript -e 'tell app \"System Events\" to display " + type + ' "' + text_fixed + '"'
|
62
62
|
if type != 'notification' then
|
63
63
|
cmd += ' buttons ' + buttons.to_s.gsub('[', '{').gsub(']', '}')
|
64
64
|
else
|
65
|
-
cmd += ' with title "' +
|
65
|
+
cmd += ' with title "' + notificationtitle.gsub("!", "").gsub("'", '').gsub('"', '').gsub('$', '') + '"'
|
66
66
|
end
|
67
67
|
if error then
|
68
68
|
cmd += ' with icon caution'
|
@@ -107,7 +107,7 @@ end
|
|
107
107
|
# @!visibility private
|
108
108
|
def macselect(items, text)
|
109
109
|
cmd = 'osascript -e \'tell app "System Events" to choose from list ' + items.to_s.gsub('[', '{').gsub(']', '}').gsub("'", '')
|
110
|
-
cmd += ' with prompt "' + text + '"\''
|
110
|
+
cmd += ' with prompt "' + text.to_s + '"\''
|
111
111
|
cmd_output = `#{cmd}`.gsub("\n", "")
|
112
112
|
if cmd_output == 'false' then
|
113
113
|
return nil
|
@@ -195,23 +195,30 @@ if $dialogbind_dialog_backend == 'win32' then
|
|
195
195
|
end
|
196
196
|
|
197
197
|
# @!visibility private
|
198
|
-
def win32_activexopen(
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
generated_vbs =
|
209
|
-
generated_vbs += "
|
198
|
+
def win32_activexopen(title)
|
199
|
+
generated_vbs = 'set ob=CreateObject("Shell.Application")'
|
200
|
+
generated_vbs += "\r\nset fldr=ob.BrowseForFolder(0, \"" + title.gsub("\r\n", "\n").gsub("\n", "").gsub('"', "") + '", &H4000, "C:")'
|
201
|
+
generated_vbs += "\r\nif not fldr is Nothing then"
|
202
|
+
generated_vbs += "\r\nWScript.Echo fldr.Self.Path\r\nend if"
|
203
|
+
return win32_generatevbs(generated_vbs)
|
204
|
+
end
|
205
|
+
|
206
|
+
# @!visibility private
|
207
|
+
def win32_vbbrowseforfolder(title)
|
208
|
+
generated_vbs = 'set ob=CreateObject("Shell.Application")'
|
209
|
+
generated_vbs += "\r\nset fldr=ob.BrowseForFolder(0, \"" + title.gsub("\r\n", "\n").gsub("\n", "").gsub('"', "") + '", 0, "C:")'
|
210
|
+
generated_vbs += "\r\nif not fldr is Nothing then"
|
211
|
+
generated_vbs += "\r\nWScript.Echo fldr.Self.Path\r\nend if"
|
210
212
|
return win32_generatevbs(generated_vbs)
|
211
213
|
end
|
212
214
|
else
|
213
215
|
# @!visibility private
|
214
|
-
def win32_activexopen(
|
216
|
+
def win32_activexopen(title)
|
217
|
+
return ''
|
218
|
+
end
|
219
|
+
|
220
|
+
# @!visibility private
|
221
|
+
def win32_vbbrowseforfolder(title)
|
215
222
|
return ''
|
216
223
|
end
|
217
224
|
|
@@ -420,7 +427,7 @@ def nativesoundplay(sound_path)
|
|
420
427
|
if $dialogbind_dialog_backend == 'win32' then
|
421
428
|
win32_activexplay(sound_path)
|
422
429
|
elsif $dialogbind_dialog_backend == 'macos' then
|
423
|
-
system('afplay "' + unix_cmd_optimized_path + '" > /dev/null 2>&1')
|
430
|
+
system('afplay "' + unix_cmd_optimized_path + '" > /dev/null 2>&1 &')
|
424
431
|
else
|
425
432
|
if system('command -v play > /dev/null 2>&1') then
|
426
433
|
system('play "' + unix_cmd_optimized_path + '" > /dev/null 2>&1')
|
@@ -508,7 +515,7 @@ end
|
|
508
515
|
# Shows system-native file selection dialog. Currently does not work on Windows.
|
509
516
|
#
|
510
517
|
# @param filter [Array] an array of file patterns. Example: [ '*.rb', 'markdown-doc-toprocess*.md' ]
|
511
|
-
# @param title [String] an optional parameter specifying the title of the dialog box.
|
518
|
+
# @param title [String] an optional parameter specifying the title of the dialog box.
|
512
519
|
# @return [String] either an empty string (if the user cancels the dialog) or the native path to the file.
|
513
520
|
def guifileselect(filter=[], title='DialogBind')
|
514
521
|
if $dialogbind_dialog_backend == 'macos' then
|
@@ -521,6 +528,8 @@ def guifileselect(filter=[], title='DialogBind')
|
|
521
528
|
elsif $dialogbind_dialog_backend == 'zenity' then
|
522
529
|
zenity({ 'title' => title, 'file-selection' => nil, '%' => zenityfilter(filter), ' > /tmp/zenity.sock 2>/dev/null' => nil })
|
523
530
|
return File.read('/tmp/zenity.sock').gsub("\n", "")
|
531
|
+
elsif $dialogbind_dialog_backend == 'win32' then
|
532
|
+
return win32_activexopen(title)
|
524
533
|
else
|
525
534
|
raise 'The selected backend does not support file selection dialog boxes.'
|
526
535
|
return ''
|
@@ -528,6 +537,29 @@ def guifileselect(filter=[], title='DialogBind')
|
|
528
537
|
return ''
|
529
538
|
end
|
530
539
|
|
540
|
+
# Shows system-native directory selection dialog.
|
541
|
+
#
|
542
|
+
# @param title [String] an optional parameter specifying the title of the dialog box.
|
543
|
+
# @return [String] either an empty string (if the user cancels the dialog) or the native path to the file.
|
544
|
+
def guidirectoryselect(title='DialogBind')
|
545
|
+
if $dialogbind_dialog_backend == 'macos' then
|
546
|
+
return macopen(title, [], true)
|
547
|
+
elsif $dialogbind_dialog_backend == 'kdialog' then
|
548
|
+
if kdialog({ 'title' => title, 'getexistingdirectory' => [] }, true) == false then
|
549
|
+
return ''
|
550
|
+
end
|
551
|
+
return File.read('/tmp/kdialog.sock').gsub("\n", "")
|
552
|
+
elsif $dialogbind_dialog_backend == 'zenity' then
|
553
|
+
zenity({ 'title' => title, 'file-selection' => nil, 'directory' => nil, ' > /tmp/zenity.sock 2>/dev/null' => nil })
|
554
|
+
return File.read('/tmp/zenity.sock').gsub("\n", "")
|
555
|
+
elsif $dialogbind_dialog_backend == 'win32' then
|
556
|
+
return win32_vbbrowseforfolder(title).gsub("\\", '/')
|
557
|
+
else
|
558
|
+
raise 'The selected backend does not support directory selection dialog boxes.'
|
559
|
+
end
|
560
|
+
return ''
|
561
|
+
end
|
562
|
+
|
531
563
|
# Shows an input box with the specified text.
|
532
564
|
#
|
533
565
|
# @param text [String] the text that should be displayed in an input box
|
@@ -550,3 +582,24 @@ def guigets(text='Type something:', title='DialogBind')
|
|
550
582
|
end
|
551
583
|
return ''
|
552
584
|
end
|
585
|
+
|
586
|
+
# Shows a notification in system tray or a message box, depending on operating system notifications support.
|
587
|
+
#
|
588
|
+
# @param text [String] the text that should be displayed in a notification.
|
589
|
+
# @param title [String] an optional parameter specifying the title of the notification.
|
590
|
+
# @return [Boolean] true on success, false on fail.
|
591
|
+
def guinotify(text, title='DialogBind', sound=DialogBindSystemSounds::Success)
|
592
|
+
if $dialogbind_dialog_backend != 'win32' && $dialogbind_dialog_backend != 'kdialog' then
|
593
|
+
guisound(sound)
|
594
|
+
end
|
595
|
+
if $dialogbind_dialog_backend == 'macos' then
|
596
|
+
return macdialog(text, [], 'notification', false, false, title)
|
597
|
+
elsif $dialogbind_dialog_backend == 'kdialog' then
|
598
|
+
return kdialog({ 'title' => title, 'passivepopup' => [ text, 10 ] })
|
599
|
+
elsif $dialogbind_dialog_backend == 'zenity' then
|
600
|
+
return zenity({ 'title' => title, 'notification' => nil, 'text' => text })
|
601
|
+
else
|
602
|
+
return guiputs(text, title)
|
603
|
+
end
|
604
|
+
return false
|
605
|
+
end
|