FORBID
  1. alias fordialog {
  2. set %geninp.1 $1
  3. set %geninp.2 $2
  4. set %geninp.3 $3
  5. set %geninp.4 $4
  6. set %geninp.5 $5
  7. var %t = fordialog. $+ $trnum
  8. mrcdlg -m %t
  9. }
  10. dialog fordialog.* {
  11. title ""
  12. option dbu
  13. size -1 -1 173 94
  14. text "", 1, 6 5 257 8, read multi
  15. combo 2, 5 60 163 170, drop edit result
  16. edit "NOTE: No specific, show the first 100 available entries.", 4, 4 51 165 8, disable
  17. link "Help?", 5, 7 79 20 8
  18. button "&OK", 6, 77 77 44 13, ok default
  19. button "&Cancel", 7, 124 77 44 13, cancel
  20. }
  21. on *:dialog:fordialog.*:*:*:{
  22. if ($devent == init) {
  23. mdx SetBorderStyle $dname 4
  24. dialog -t $dname %geninp.2
  25. did -a $dname 1 %geninp.1
  26. didtok $dname 2 44 %forb.syntax
  27. }
  28. elseif ($devent == sclick) {
  29. if ($did == 6) {
  30. set %forblist forbid
  31. if (!$did(2).text) { %geninp.4 }
  32. elseif ($regex($did(2).text, /^[a-zA-Z\s]+$/)) { set %cfblist $calc($did(2).sel +1) $did(2) | %geninp.4 $did(2) }
  33. else { set %cfblist %linenum | %geninp.4 $did(2) }
  34. }
  35. elseif ($did == 7) { unset %forb.syntax %linenum }
  36. elseif ($did == 5) { var %r = $specialwin | window -kea %r | os help Forbid }
  37. }
  38. elseif ($devent == edit) {
  39. var %read $did(2,0)
  40. if (%read != $null) && ($regex(%read, /[a-zA-Z]/)) {
  41. var %t $did(2).lines, %i 1
  42. while (%i <= %t) {
  43. var %line $did(2, %i)
  44. if (%line $+ * iswm %read) { set %linenum $calc(%i +1) %read | return }
  45. inc %i
  46. }
  47. }
  48. }
  49. elseif ($devent == close) { unset %linenum %geninp.* }
  50. }
Pasted 2026-08-31 14:10:44

Short link: