rbhex-core 1.0.0

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 (108) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/CHANGELOG +2000 -0
  4. data/LICENSE +56 -0
  5. data/README.md +44 -0
  6. data/examples/abasiclist.rb +179 -0
  7. data/examples/alpmenu.rb +50 -0
  8. data/examples/app.sample +19 -0
  9. data/examples/atree.rb +100 -0
  10. data/examples/bline.rb +136 -0
  11. data/examples/common/file.rb +45 -0
  12. data/examples/data/README.markdown +9 -0
  13. data/examples/data/brew.txt +38 -0
  14. data/examples/data/color.2 +37 -0
  15. data/examples/data/gemlist.txt +60 -0
  16. data/examples/data/lotr.txt +12 -0
  17. data/examples/data/ports.txt +136 -0
  18. data/examples/data/table.txt +37 -0
  19. data/examples/data/tasks.csv +88 -0
  20. data/examples/data/tasks.txt +27 -0
  21. data/examples/data/todo.txt +10 -0
  22. data/examples/data/todo.txt.bak +10 -0
  23. data/examples/data/todocsv.csv +28 -0
  24. data/examples/data/unix1.txt +21 -0
  25. data/examples/data/unix2.txt +11 -0
  26. data/examples/dbdemo.rb +502 -0
  27. data/examples/dirtree.rb +94 -0
  28. data/examples/newtabbedwindow.rb +100 -0
  29. data/examples/newtesttabp.rb +92 -0
  30. data/examples/tabular.rb +146 -0
  31. data/examples/tasks.rb +178 -0
  32. data/examples/term2.rb +84 -0
  33. data/examples/testbuttons.rb +296 -0
  34. data/examples/testcombo.rb +102 -0
  35. data/examples/testfields.rb +195 -0
  36. data/examples/testkeypress.rb +72 -0
  37. data/examples/testlistbox.rb +170 -0
  38. data/examples/testmessagebox.rb +140 -0
  39. data/examples/testprogress.rb +116 -0
  40. data/examples/testree.rb +106 -0
  41. data/examples/testwsshortcuts.rb +66 -0
  42. data/examples/testwsshortcuts2.rb +128 -0
  43. data/lib/rbhex.rb +6 -0
  44. data/lib/rbhex/core/docs/index.txt +73 -0
  45. data/lib/rbhex/core/include/action.rb +80 -0
  46. data/lib/rbhex/core/include/actionmanager.rb +49 -0
  47. data/lib/rbhex/core/include/appmethods.rb +214 -0
  48. data/lib/rbhex/core/include/bordertitle.rb +48 -0
  49. data/lib/rbhex/core/include/chunk.rb +203 -0
  50. data/lib/rbhex/core/include/io.rb +553 -0
  51. data/lib/rbhex/core/include/listbindings.rb +74 -0
  52. data/lib/rbhex/core/include/listcellrenderer.rb +140 -0
  53. data/lib/rbhex/core/include/listeditable.rb +317 -0
  54. data/lib/rbhex/core/include/listscrollable.rb +663 -0
  55. data/lib/rbhex/core/include/listselectable.rb +271 -0
  56. data/lib/rbhex/core/include/multibuffer.rb +83 -0
  57. data/lib/rbhex/core/include/orderedhash.rb +77 -0
  58. data/lib/rbhex/core/include/ractionevent.rb +73 -0
  59. data/lib/rbhex/core/include/rchangeevent.rb +27 -0
  60. data/lib/rbhex/core/include/rhistory.rb +95 -0
  61. data/lib/rbhex/core/include/rinputdataevent.rb +47 -0
  62. data/lib/rbhex/core/include/vieditable.rb +172 -0
  63. data/lib/rbhex/core/include/widgetmenu.rb +66 -0
  64. data/lib/rbhex/core/system/colormap.rb +165 -0
  65. data/lib/rbhex/core/system/keyboard.rb +150 -0
  66. data/lib/rbhex/core/system/keydefs.rb +30 -0
  67. data/lib/rbhex/core/system/ncurses.rb +236 -0
  68. data/lib/rbhex/core/system/panel.rb +162 -0
  69. data/lib/rbhex/core/system/window.rb +913 -0
  70. data/lib/rbhex/core/util/ansiparser.rb +119 -0
  71. data/lib/rbhex/core/util/app.rb +1228 -0
  72. data/lib/rbhex/core/util/basestack.rb +410 -0
  73. data/lib/rbhex/core/util/bottomline.rb +1859 -0
  74. data/lib/rbhex/core/util/colorparser.rb +77 -0
  75. data/lib/rbhex/core/util/focusmanager.rb +31 -0
  76. data/lib/rbhex/core/util/padreader.rb +192 -0
  77. data/lib/rbhex/core/util/rcommandwindow.rb +604 -0
  78. data/lib/rbhex/core/util/rdialogs.rb +574 -0
  79. data/lib/rbhex/core/util/viewer.rb +149 -0
  80. data/lib/rbhex/core/util/widgetshortcuts.rb +506 -0
  81. data/lib/rbhex/core/version.rb +5 -0
  82. data/lib/rbhex/core/widgets/applicationheader.rb +103 -0
  83. data/lib/rbhex/core/widgets/box.rb +58 -0
  84. data/lib/rbhex/core/widgets/divider.rb +310 -0
  85. data/lib/rbhex/core/widgets/keylabelprinter.rb +194 -0
  86. data/lib/rbhex/core/widgets/rcombo.rb +253 -0
  87. data/lib/rbhex/core/widgets/rcontainer.rb +415 -0
  88. data/lib/rbhex/core/widgets/rlink.rb +30 -0
  89. data/lib/rbhex/core/widgets/rlist.rb +696 -0
  90. data/lib/rbhex/core/widgets/rmenu.rb +958 -0
  91. data/lib/rbhex/core/widgets/rmenulink.rb +22 -0
  92. data/lib/rbhex/core/widgets/rmessagebox.rb +387 -0
  93. data/lib/rbhex/core/widgets/rprogress.rb +118 -0
  94. data/lib/rbhex/core/widgets/rtabbedpane.rb +634 -0
  95. data/lib/rbhex/core/widgets/rtabbedwindow.rb +70 -0
  96. data/lib/rbhex/core/widgets/rtextarea.rb +960 -0
  97. data/lib/rbhex/core/widgets/rtextview.rb +739 -0
  98. data/lib/rbhex/core/widgets/rtree.rb +768 -0
  99. data/lib/rbhex/core/widgets/rwidget.rb +3277 -0
  100. data/lib/rbhex/core/widgets/scrollbar.rb +143 -0
  101. data/lib/rbhex/core/widgets/statusline.rb +113 -0
  102. data/lib/rbhex/core/widgets/tabular.rb +264 -0
  103. data/lib/rbhex/core/widgets/tabularwidget.rb +1142 -0
  104. data/lib/rbhex/core/widgets/textpad.rb +995 -0
  105. data/lib/rbhex/core/widgets/tree/treecellrenderer.rb +150 -0
  106. data/lib/rbhex/core/widgets/tree/treemodel.rb +428 -0
  107. data/rbhex-core.gemspec +32 -0
  108. metadata +172 -0
@@ -0,0 +1,116 @@
1
+ # ----------------------------------------------------------------------------- #
2
+ # File: testprogress.rb
3
+ # Description: a test program for progress bar widget
4
+ # creates two progress bars, one old style and one new
5
+ # Keeps running till 'q' pressed.
6
+ # Author: rkumar http://github.com/rkumar/rbhex-core/
7
+ # Date: 2014-03-27 - 23:31
8
+ # License: Same as Ruby's License (http://www.ruby-lang.org/LICENSE.txt)
9
+ # Last update: 2014-03-27 23:44
10
+ # ----------------------------------------------------------------------------- #
11
+ # testprogress.rb Copyright (C) 2012-2014 rahul kumar
12
+ require 'logger'
13
+ require 'rbhex'
14
+ require 'rbhex/core/widgets/rprogress'
15
+ if $0 == __FILE__
16
+
17
+ #include RubyCurses
18
+
19
+ begin
20
+ # Initialize curses
21
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
22
+ path = File.join(ENV["LOGDIR"] || "./" ,"rbc13.log")
23
+ file = File.open(path, File::WRONLY|File::TRUNC|File::CREAT)
24
+ $log = Logger.new(path)
25
+ $log.level = Logger::DEBUG
26
+
27
+ @window = VER::Window.root_window
28
+
29
+ catch(:close) do
30
+ @form = Form.new @window
31
+ title = (" "*30) + "Demo of Progress Bar (q quits, s - slow down) " + Rbhex::Core::VERSION
32
+ Label.new @form, {:text => title, :row => 1, :col => 0, :color => :green, :bgcolor => :black}
33
+ Label.new @form, {:text => "Press q to quit, s/f make slow or fast", :row => 10, :col => 10}
34
+ Label.new @form, {:text => "Old style and modern style progress bars", :row => 12, :col => 10}
35
+ r = 14; fc = 12;
36
+
37
+ pbar1 = Progress.new @form, {:width => 20, :row => r, :col => fc,
38
+ :name => "pbar1", :style => :old}
39
+ #:bgcolor => :white, :color => 'red', :name => "pbar1", :style => :old}
40
+ pbar = Progress.new @form, {:width => 20, :row => r+2, :col => fc,
41
+ :bgcolor => :white, :color => :red, :name => "pbar"}
42
+
43
+ pbar.visible false
44
+ pb = @form.by_name["pbar"]
45
+ pb.visible true
46
+ len = 1
47
+ ct = (100) * 1.00
48
+ pb.fraction(len/ct)
49
+ pbar1.fraction(len/ct)
50
+ i = ((len/ct)*100).to_i
51
+ i = 100 if i > 100
52
+ pb.text = "completed:#{i}"
53
+
54
+
55
+ @form.repaint
56
+ @window.wrefresh
57
+ Ncurses::Panel.update_panels
58
+
59
+ # the main loop
60
+
61
+ # this is so there's no wait for a key, i want demo to proceed without key press, but
62
+ # respond if there is one
63
+ Ncurses::nodelay(@window.get_window, bf = true)
64
+
65
+ # sleep seconds between refresh of progress
66
+ slp = 0.1
67
+ ##while((ch = @window.getchar()) != FFI::NCurses::KEY_F10 )
68
+ #break if ch == ?\C-q.getbyte(0)
69
+ while((ch = @window.getch()) != 27)
70
+ break if ch == "q".ord
71
+ ## slow down
72
+ if ch == "s".ord
73
+ slp *= 2
74
+ elsif ch == "f".ord
75
+ ## make faster
76
+ slp /= 2.0
77
+ end
78
+ begin
79
+
80
+ sleep(slp)
81
+ len += 1
82
+ if len > 100
83
+ len = 1
84
+ sleep(1.0)
85
+ end
86
+ ct = (100) * 1.00
87
+ pb.fraction(len/ct)
88
+ pbar1.fraction(len/ct)
89
+ i = ((len/ct)*100).to_i
90
+ i = 100 if i > 100
91
+ pb.text = "completed:#{i}"
92
+
93
+ #@form.handle_key(ch)
94
+ @form.repaint
95
+ @window.wrefresh
96
+ Ncurses::Panel.update_panels
97
+ #end
98
+
99
+ rescue => err
100
+ break
101
+ end
102
+
103
+ @window.wrefresh
104
+ end # while loop
105
+ end # catch
106
+ rescue => ex
107
+ ensure
108
+ $log.debug " -==== EXCEPTION =====-"
109
+ $log.debug( ex) if ex
110
+ $log.debug(ex.backtrace.join("\n")) if ex
111
+ @window.destroy if !@window.nil?
112
+ VER::stop_ncurses
113
+ puts ex if ex
114
+ puts(ex.backtrace.join("\n")) if ex
115
+ end
116
+ end
@@ -0,0 +1,106 @@
1
+ require 'rbhex'
2
+ require 'rbhex/core/widgets/rtree'
3
+
4
+ if $0 == __FILE__
5
+ $choice = ARGV[0].to_i || 1
6
+ class Tester
7
+ def initialize
8
+ acolor = $reversecolor
9
+ end
10
+ def run
11
+ @window = VER::Window.root_window
12
+ @form = Form.new @window
13
+
14
+ h = 20; w = 75; t = 3; l = 4
15
+ #$choice = 1
16
+ case $choice
17
+ when 1
18
+ root = TreeNode.new "ROOT"
19
+ subroot = TreeNode.new "subroot"
20
+ leaf1 = TreeNode.new "leaf 1"
21
+ leaf2 = TreeNode.new "leaf 2"
22
+
23
+ model = DefaultTreeModel.new root
24
+ #model.insert_node_into(subroot, root, 0)
25
+ #model.insert_node_into(leaf1, subroot, 0)
26
+ #model.insert_node_into(leaf2, subroot, 1)
27
+ root << subroot
28
+ subroot << leaf1 << leaf2
29
+ leaf1 << "leaf11"
30
+ leaf1 << "leaf12"
31
+
32
+ root.add "blocky", true do
33
+ add "block2"
34
+ add "block3" do
35
+ add "block31"
36
+ end
37
+ end
38
+ Tree.new @form, :data => model, :row =>2, :col=>2, :height => 20, :width => 30
39
+
40
+ when 2
41
+
42
+ # use an array to populate
43
+ # we need to do root_visible = false so you get just a list
44
+ model = %W[ ruby lua jruby smalltalk haskell scheme perl lisp ]
45
+ Tree.new @form, :data => model, :row =>2, :col=>2, :height => 20, :width => 30
46
+
47
+ when 3
48
+
49
+ # use an Has to populate
50
+ #model = { :ruby => %W[ "jruby", "mri", "yarv", "rubinius", "macruby" ], :python => %W[ cpython jython laden-swallow ] }
51
+ model = { :ruby => [ "jruby", {:mri => %W[ 1.8.6 1.8.7]}, {:yarv => %W[1.9.1 1.9.2]}, "rubinius", "macruby" ], :python => %W[ cpython jython pypy ] }
52
+
53
+ Tree.new @form, :data => model, :row =>2, :col=>2, :height => 20, :width => 30
54
+ #when 4
55
+ else
56
+ Tree.new @form, :row =>2, :col=>2, :height => 20, :width => 30 do
57
+ root "root" do
58
+ branch "vim" do
59
+ leaf "vimrc"
60
+ end
61
+ branch "ack" do
62
+ leaf "ackrc"
63
+ end
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ #
70
+ help = "C-q to quit. <ENTER> to expand nodes. j/k to navigate. Pass command-line argument 1,2,3,4 #{$0} "
71
+ RubyCurses::Label.new @form, {:text => help, :row => 1, :col => 2, :color => :cyan}
72
+ @form.repaint
73
+ @window.wrefresh
74
+ Ncurses::Panel.update_panels
75
+ while((ch = @window.getchar()) != ?\C-q.getbyte(0))
76
+ ret = @form.handle_key(ch)
77
+ @window.wrefresh
78
+ if ret == :UNHANDLED
79
+ str = keycode_tos ch
80
+ $log.debug " UNHANDLED #{str} by Vim #{ret} "
81
+ end
82
+ end
83
+
84
+ @window.destroy
85
+
86
+ end
87
+ end
88
+ include RubyCurses
89
+ include RubyCurses::Utils
90
+ # Initialize curses
91
+ begin
92
+ # XXX update with new color and kb
93
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
94
+ $log = Logger.new("rbc13.log")
95
+ $log.level = Logger::DEBUG
96
+ n = Tester.new
97
+ n.run
98
+ rescue => ex
99
+ ensure
100
+ VER::stop_ncurses
101
+ p ex if ex
102
+ puts(ex.backtrace.join("\n")) if ex
103
+ $log.debug( ex) if ex
104
+ $log.debug(ex.backtrace.join("\n")) if ex
105
+ end
106
+ end
@@ -0,0 +1,66 @@
1
+ # this is a test program, tests out tabbed panes. type F1 to exit
2
+ #
3
+ require 'rbhex'
4
+ require 'rbhex/core/util/widgetshortcuts'
5
+
6
+ include RubyCurses
7
+
8
+ class SetupMessagebox
9
+ include RubyCurses::WidgetShortcuts
10
+ def initialize config={}, &block
11
+ @window = VER::Window.root_window
12
+ @form = Form.new @window
13
+ end
14
+ def run
15
+ _create_form
16
+ @form.repaint
17
+ @window.wrefresh
18
+ while ((ch = @window.getchar()) != 999)
19
+ break if ch == ?\C-q.getbyte(0)
20
+ @form.handle_key ch
21
+ @window.wrefresh
22
+ end
23
+ end
24
+ def _create_form
25
+ widget_shortcuts_init
26
+ stack :margin_top => 2, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
27
+ label :text => " Details ", :color => :blue, :attr => :reverse, :width => :expand, :justify => :center
28
+ blank
29
+ field :text => "john", :attr => :reverse, :label => "%15s" % ["Name: "]
30
+ field :label => "%15s" % ["Address: "], :width => 15, :attr => :reverse
31
+ check :text => "Using version control", :value => true, :onvalue => "yes", :offvalue => "no"
32
+ check :text => "Upgraded to Lion", :value => false, :onvalue => "yes", :offvalue => "no"
33
+ blank
34
+ radio :text => "Linux", :value => "LIN", :group => :os
35
+ radio :text => "OSX", :value => "OSX", :group => :os
36
+ radio :text => "Window", :value => "Win", :group => :os
37
+ flow :margin_top => 2, :margin_left => 4, :item_width => 15 do
38
+ button :text => "Ok" do throw :close; end
39
+ button :text => "Cancel"
40
+ button :text => "Apply"
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+ if $0 == __FILE__
47
+ # Initialize curses
48
+ begin
49
+ # XXX update with new color and kb
50
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
51
+ $log = Logger.new((File.join(ENV["LOGDIR"] || "./" ,"rbc13.log")))
52
+ $log.level = Logger::DEBUG
53
+ catch(:close) do
54
+ tp = SetupMessagebox.new()
55
+ buttonindex = tp.run
56
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
57
+ end
58
+ rescue => ex
59
+ ensure
60
+ VER::stop_ncurses
61
+ p ex if ex
62
+ p(ex.backtrace.join("\n")) if ex
63
+ $log.debug( ex) if ex
64
+ $log.debug(ex.backtrace.join("\n")) if ex
65
+ end
66
+ end
@@ -0,0 +1,128 @@
1
+ # this is a test program, tests out widget shortcuts. type C-q to exit
2
+ #
3
+ require 'rbhex'
4
+ require 'rbhex/core/util/widgetshortcuts'
5
+
6
+ include RubyCurses
7
+ include RubyCurses::Utils
8
+
9
+ class SetupMessagebox
10
+ include RubyCurses::WidgetShortcuts
11
+ def initialize config={}, &block
12
+ @window = VER::Window.root_window
13
+ @form = Form.new @window
14
+ end
15
+ def run
16
+ _create_form
17
+ @form.repaint
18
+ @window.wrefresh
19
+ catch(:close) do
20
+ while ((ch = @window.getchar()) != 999)
21
+ break if ch == ?\C-q.getbyte(0)
22
+ @form.handle_key ch
23
+ @window.wrefresh
24
+ end
25
+ end # catch
26
+ end
27
+ def _create_form
28
+ widget_shortcuts_init
29
+ stack :margin_top => 1, :width => :expand do
30
+ label :text => " Details ", :color => :cyan, :attr => :reverse, :width => :expand, :justify => :center
31
+ flow :margin_top => 1, :margin_left => 4, :item_width => 50 do
32
+ stack :margin_top => 0, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
33
+ box do
34
+ field :text => "steve", :attr => :reverse, :label => "%15s" % ["Name: "]
35
+ field :label => "%15s" % ["Address: "], :width => 15, :attr => :reverse
36
+ blank
37
+ check :text => "Using version control", :value => true, :onvalue => "yes", :offvalue => "no" do |eve|
38
+ unless eve.item.value
39
+ alert "NO VC! We need to talk"
40
+ end
41
+ end
42
+ check :text => "Upgraded to Lion", :value => false, :onvalue => "yes", :offvalue => "no" do |eve|
43
+ unless eve.item.value
44
+ alert "You goin back to Snow Leopard?"
45
+ end
46
+ end
47
+ end # box
48
+ end
49
+ stack :margin_top => 0, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
50
+ box :title => "OS Maintenance", :margin_left => 2 do
51
+ radio :text => "Linux", :value => "LIN", :group => :os
52
+ radio :text => "OSX", :value => "OSX", :group => :os
53
+ radio :text => "Window", :value => "Win", :group => :os
54
+ blank
55
+ flow :item_width => 15 do
56
+ button :text => "Install" do
57
+ # you can avoid this by giving the radio buttons your own Variable (see test2.rb)
58
+ choice = @variables[:os].value
59
+ case choice
60
+ when ""
61
+ alert "Select an OS"
62
+ when "OSX", "LIN"
63
+ alert "Good choice"
64
+ else
65
+ alert "Pfft !"
66
+ end
67
+ end
68
+ button :text => "Uninstall"
69
+ button :text => "Delete"
70
+ end
71
+ end # box
72
+ end
73
+ end # flow
74
+ #button :text => "Execute"
75
+ text = [" #[reverse]Unix Philosophy #[end] ",
76
+ "#[fg=green, underline]Eric Raymond#[end] in his book, #[fg=green, underline]The Art of Unix Programming#[end] summarized the Unix philosophy.",
77
+ " ",
78
+ "Rule of #[fg=yellow]Modularity#[end]: Write simple parts connected by clean interfaces.",
79
+ "Rule of #[fg=blue]Clarity#[end]: #[bold]Clarity#[end] is better than cleverness.",
80
+ "Rule of #[fg=red]Separation#[end]: Separate #[bold]policy#[end] from mechanism; separate interfaces from engines.",
81
+ "Rule of #[fg=green]Simplicity#[end]: Design for #[bold]simplicity;#[end] add complexity only where you must.",
82
+ "Rule of #[fg=magenta]Parsimony#[end]: Write a big program only when it is clear by demonstration that nothing else will do.",
83
+ "Rule of #[fg=cyan]Representation#[end]: Fold knowledge into #[bold]data#[end] so program logic can be stupid and robust"]
84
+ text << "For more check: #[underline]http://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond#[end]"
85
+ formatted = []
86
+ #text.each { |line| formatted << @window.convert_to_chunk(line) }
87
+
88
+ #textview :text => formatted
89
+ #textview do |t| t.formatted_text(text, :tmux) end
90
+ t = textview :title => 'tmux format'
91
+ t.formatted_text(text, :tmux)
92
+ t1 = textview :title => 'ansi formatted document'
93
+ file = File.expand_path("../data/color.2", __FILE__)
94
+ text = File.open(file,"r").readlines
95
+ #text = `ri -f bs String`.split("\n")
96
+ t1.formatted_text(text, :ansi)
97
+
98
+ flow do
99
+ #box do
100
+ button :text => " Ok " do alert "Pressed okay" end
101
+ button :text => "Cancel" do confirm "Do you wish to Quit?" ; throw :close; end
102
+ button :text => "Apply "
103
+ #end
104
+ end
105
+
106
+ end
107
+
108
+ end
109
+ end
110
+ if $0 == __FILE__
111
+ # Initialize curses
112
+ begin
113
+ # XXX update with new color and kb
114
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
115
+ $log = Logger.new((File.join(ENV["LOGDIR"] || "./" ,"rbc13.log")))
116
+ $log.level = Logger::DEBUG
117
+ tp = SetupMessagebox.new()
118
+ buttonindex = tp.run
119
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
120
+ rescue => ex
121
+ ensure
122
+ VER::stop_ncurses
123
+ p ex if ex
124
+ p(ex.backtrace.join("\n")) if ex
125
+ $log.debug( ex) if ex
126
+ $log.debug(ex.backtrace.join("\n")) if ex
127
+ end
128
+ end
data/lib/rbhex.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'ffi-ncurses'
2
+ require 'rbhex/core/system/ncurses'
3
+ require 'rbhex/core/system/window'
4
+ require 'rbhex/core/widgets/rwidget'
5
+ require 'rbhex/core/util/rdialogs'
6
+ require 'rbhex/core/version'
@@ -0,0 +1,73 @@
1
+ G E N E R A L H E L P
2
+ <q> to quit this window. <Space> to scroll.
3
+
4
+ ==============================================================================
5
+ 1. General Help
6
+
7
+ F10 - exit application. Also, <C-q>
8
+ F1 - Help
9
+
10
+ In some applications, the following may have been provided:
11
+
12
+ Alt-x - additional commands
13
+ : - additional commands
14
+ :! - system command
15
+ <C-x>c - system command
16
+
17
+ ==============================================================================
18
+ 2. Form
19
+
20
+ <Tab> and <backtab> navigate between widgets.
21
+
22
+ ==============================================================================
23
+ 3. Multiline widgets
24
+
25
+ In most widgets such as _list_, _textview_, _table_, and _tree_ the
26
+ following vim-bindings are applicable.
27
+
28
+ j,k,l,h, gg, G, C-d, C-b
29
+
30
+ <space> scrolls in _textview_.
31
+
32
+ Some multiline widgets such as _list_ and _tree_ may move to first item
33
+ starting with j or k or <char> on pressing char. To get vim-bindings use
34
+ <Alt-v>. Now to go to first row with <char>, type f<char>. This behavior
35
+ is modified using the flag one_key_selection.
36
+
37
+
38
+ ==============================================================================
39
+ 4. Editable Widgets
40
+
41
+ In _field_ and editable _textarea_, some emacs/Pine keys such as C-e,
42
+ C-a, C-k (delete till end) are available.
43
+
44
+ <C-a> - start of line
45
+ <C-e> - end of line
46
+ <C-k> - delete till end of line
47
+ <M-i> - toggle overwrite mode
48
+
49
+ ==============================================================================
50
+ 5. Buttons
51
+
52
+ _Button_ can be fired using <space> or <ENTER>. The default button, if
53
+ declared, is shown with as > Ok < as against other buttons, shown as [
54
+ Cancel ]. This can be fired by hitting <ENTER> anywhere on the form
55
+ (unless the current widget traps <ENTER>).
56
+
57
+ Hotkeys are available using Alt-<key>.
58
+
59
+ ==============================================================================
60
+ 6. Selection in lists
61
+
62
+ <space> - toggle selection
63
+ <C-Space> - range select
64
+ <a> - select all
65
+ <u> - unselect all (should be changed, as conflicts with
66
+ vim undo)
67
+ <*> - invert selection
68
+
69
+ <-> - ask unselect
70
+ <+> - ask select
71
+
72
+ -----------------------------------------------------------------------------
73
+ q to quit, gg to goto top.