canis 0.0.4

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 (134) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +45 -0
  3. data/CHANGES +52 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +24 -0
  7. data/Rakefile +2 -0
  8. data/canis.gemspec +25 -0
  9. data/examples/alpmenu.rb +46 -0
  10. data/examples/app.sample +19 -0
  11. data/examples/appemail.rb +191 -0
  12. data/examples/atree.rb +105 -0
  13. data/examples/bline.rb +181 -0
  14. data/examples/common/devel.rb +319 -0
  15. data/examples/common/file.rb +93 -0
  16. data/examples/data/README.markdown +9 -0
  17. data/examples/data/brew.txt +38 -0
  18. data/examples/data/color.2 +37 -0
  19. data/examples/data/gemlist.txt +59 -0
  20. data/examples/data/lotr.txt +12 -0
  21. data/examples/data/ports.txt +136 -0
  22. data/examples/data/table.txt +37 -0
  23. data/examples/data/tasks.csv +88 -0
  24. data/examples/data/tasks.txt +27 -0
  25. data/examples/data/todo.txt +16 -0
  26. data/examples/data/todocsv.csv +28 -0
  27. data/examples/data/unix1.txt +21 -0
  28. data/examples/data/unix2.txt +11 -0
  29. data/examples/dbdemo.rb +506 -0
  30. data/examples/dirtree.rb +177 -0
  31. data/examples/newtabbedwindow.rb +100 -0
  32. data/examples/newtesttabp.rb +92 -0
  33. data/examples/tabular.rb +212 -0
  34. data/examples/tasks.rb +179 -0
  35. data/examples/term2.rb +88 -0
  36. data/examples/testbuttons.rb +307 -0
  37. data/examples/testcombo.rb +102 -0
  38. data/examples/testdb.rb +182 -0
  39. data/examples/testfields.rb +208 -0
  40. data/examples/testflowlayout.rb +43 -0
  41. data/examples/testkeypress.rb +98 -0
  42. data/examples/testlistbox.rb +187 -0
  43. data/examples/testlistbox1.rb +199 -0
  44. data/examples/testmessagebox.rb +144 -0
  45. data/examples/testprogress.rb +116 -0
  46. data/examples/testree.rb +107 -0
  47. data/examples/testsplitlayout.rb +53 -0
  48. data/examples/testsplitlayout1.rb +49 -0
  49. data/examples/teststacklayout.rb +48 -0
  50. data/examples/testwsshortcuts.rb +68 -0
  51. data/examples/testwsshortcuts2.rb +129 -0
  52. data/lib/canis.rb +16 -0
  53. data/lib/canis/core/docs/index.txt +104 -0
  54. data/lib/canis/core/docs/list.txt +16 -0
  55. data/lib/canis/core/docs/style_help.yml +34 -0
  56. data/lib/canis/core/docs/tabbedpane.txt +15 -0
  57. data/lib/canis/core/docs/table.txt +31 -0
  58. data/lib/canis/core/docs/textpad.txt +48 -0
  59. data/lib/canis/core/docs/tree.txt +23 -0
  60. data/lib/canis/core/include/.DS_Store +0 -0
  61. data/lib/canis/core/include/action.rb +83 -0
  62. data/lib/canis/core/include/actionmanager.rb +49 -0
  63. data/lib/canis/core/include/appmethods.rb +179 -0
  64. data/lib/canis/core/include/bordertitle.rb +49 -0
  65. data/lib/canis/core/include/canisparser.rb +100 -0
  66. data/lib/canis/core/include/colorparser.rb +437 -0
  67. data/lib/canis/core/include/defaultfilerenderer.rb +64 -0
  68. data/lib/canis/core/include/io.rb +320 -0
  69. data/lib/canis/core/include/layouts/SplitLayout.rb +161 -0
  70. data/lib/canis/core/include/layouts/abstractlayout.rb +213 -0
  71. data/lib/canis/core/include/layouts/flowlayout.rb +104 -0
  72. data/lib/canis/core/include/layouts/stacklayout.rb +109 -0
  73. data/lib/canis/core/include/listbindings.rb +89 -0
  74. data/lib/canis/core/include/listeditable.rb +319 -0
  75. data/lib/canis/core/include/listoperations.rb +61 -0
  76. data/lib/canis/core/include/listselectionmodel.rb +388 -0
  77. data/lib/canis/core/include/multibuffer.rb +173 -0
  78. data/lib/canis/core/include/ractionevent.rb +73 -0
  79. data/lib/canis/core/include/rchangeevent.rb +27 -0
  80. data/lib/canis/core/include/rhistory.rb +95 -0
  81. data/lib/canis/core/include/rinputdataevent.rb +47 -0
  82. data/lib/canis/core/include/textdocument.rb +111 -0
  83. data/lib/canis/core/include/vieditable.rb +175 -0
  84. data/lib/canis/core/include/widgetmenu.rb +66 -0
  85. data/lib/canis/core/system/colormap.rb +165 -0
  86. data/lib/canis/core/system/keydefs.rb +32 -0
  87. data/lib/canis/core/system/ncurses.rb +237 -0
  88. data/lib/canis/core/system/panel.rb +129 -0
  89. data/lib/canis/core/system/window.rb +1081 -0
  90. data/lib/canis/core/util/ansiparser.rb +119 -0
  91. data/lib/canis/core/util/app.rb +696 -0
  92. data/lib/canis/core/util/basestack.rb +412 -0
  93. data/lib/canis/core/util/defaultcolorparser.rb +84 -0
  94. data/lib/canis/core/util/extras/README +5 -0
  95. data/lib/canis/core/util/extras/bottomline.rb +1815 -0
  96. data/lib/canis/core/util/extras/padreader.rb +192 -0
  97. data/lib/canis/core/util/focusmanager.rb +31 -0
  98. data/lib/canis/core/util/helpmanager.rb +160 -0
  99. data/lib/canis/core/util/oldwidgetshortcuts.rb +304 -0
  100. data/lib/canis/core/util/promptmenu.rb +235 -0
  101. data/lib/canis/core/util/rcommandwindow.rb +933 -0
  102. data/lib/canis/core/util/rdialogs.rb +520 -0
  103. data/lib/canis/core/util/textutils.rb +74 -0
  104. data/lib/canis/core/util/viewer.rb +238 -0
  105. data/lib/canis/core/util/widgetshortcuts.rb +508 -0
  106. data/lib/canis/core/widgets/applicationheader.rb +103 -0
  107. data/lib/canis/core/widgets/box.rb +58 -0
  108. data/lib/canis/core/widgets/divider.rb +310 -0
  109. data/lib/canis/core/widgets/extras/README.md +12 -0
  110. data/lib/canis/core/widgets/extras/rtextarea.rb +960 -0
  111. data/lib/canis/core/widgets/extras/stackflow.rb +474 -0
  112. data/lib/canis/core/widgets/keylabelprinter.rb +194 -0
  113. data/lib/canis/core/widgets/listbox.rb +326 -0
  114. data/lib/canis/core/widgets/listfooter.rb +86 -0
  115. data/lib/canis/core/widgets/rcombo.rb +210 -0
  116. data/lib/canis/core/widgets/rcontainer.rb +415 -0
  117. data/lib/canis/core/widgets/rlink.rb +30 -0
  118. data/lib/canis/core/widgets/rmenu.rb +970 -0
  119. data/lib/canis/core/widgets/rmenulink.rb +30 -0
  120. data/lib/canis/core/widgets/rmessagebox.rb +400 -0
  121. data/lib/canis/core/widgets/rprogress.rb +118 -0
  122. data/lib/canis/core/widgets/rtabbedpane.rb +631 -0
  123. data/lib/canis/core/widgets/rtabbedwindow.rb +70 -0
  124. data/lib/canis/core/widgets/rwidget.rb +3634 -0
  125. data/lib/canis/core/widgets/scrollbar.rb +147 -0
  126. data/lib/canis/core/widgets/statusline.rb +113 -0
  127. data/lib/canis/core/widgets/table.rb +1072 -0
  128. data/lib/canis/core/widgets/tabular.rb +264 -0
  129. data/lib/canis/core/widgets/textpad.rb +1674 -0
  130. data/lib/canis/core/widgets/tree.rb +690 -0
  131. data/lib/canis/core/widgets/tree/treecellrenderer.rb +150 -0
  132. data/lib/canis/core/widgets/tree/treemodel.rb +432 -0
  133. data/lib/canis/version.rb +3 -0
  134. metadata +229 -0
@@ -0,0 +1,48 @@
1
+ # #!/usr/bin/env ruby -w
2
+ # ----------------------------------------------------------------------------- #
3
+ # File: teststacklayout.rb
4
+ # Description:
5
+ # Author: j kepler http://github.com/mare-imbrium/canis/
6
+ # Date: 2014-05-08 - 23:34
7
+ # License: MIT
8
+ # Last update: 2014-05-28 22:09
9
+ # ----------------------------------------------------------------------------- #
10
+
11
+ if __FILE__ == $PROGRAM_NAME
12
+ require 'canis/core/util/app'
13
+ require 'canis/core/widgets/listbox'
14
+ require 'canis/core/include/layouts/stacklayout'
15
+ App.new do
16
+
17
+
18
+ @form.bind_key(FFI::NCurses::KEY_F3,'view log') {
19
+ require 'canis/core/util/viewer'
20
+ Canis::Viewer.view("canis14.log", :close_key => KEY_ENTER, :title => "<Enter> to close")
21
+ }
22
+ # if i add form here, it will repaint them first, and have no dimensions
23
+ lb = Listbox.new @form, :list => ["borodin","berlioz","bernstein","balakirev", "elgar"] , :name => "mylist"
24
+ lb1 = Listbox.new @form, :list => ["bach","beethoven","mozart","gorecki", "chopin","wagner","grieg","holst"] , :name => "mylist1"
25
+
26
+ lb2 = Listbox.new @form, :list => `gem list --local`.split("\n") , :name => "mylist2"
27
+ =begin
28
+
29
+ alist = %w[ ruby perl python java jruby macruby rubinius rails rack sinatra pylons django cakephp grails]
30
+ str = "Hello, people of Earth.\nI am HAL, a textbox.\nUse arrow keys, j/k/h/l/gg/G/C-a/C-e/C-n/C-p\n"
31
+ str << alist.join("\n")
32
+ tv = TextPad.new @form, :name => "text", :text => str.split("\n")
33
+ =end
34
+
35
+ w = Ncurses.COLS-1
36
+ h = Ncurses.LINES-3
37
+ #layout = StackLayout.new :height => -1, :top_margin => 1, :bottom_margin => 1, :left_margin => 1
38
+ layout = StackLayout.new :height_pc => 1.0, :top_margin => 1, :bottom_margin => 1, :left_margin => 1
39
+ layout.form = @form
40
+ @form.layout_manager = layout
41
+ layout.weightage lb, 7
42
+ #layout.weightage lb1, 9
43
+ #$status_message.value =" Flow: #{@r.components[0].orientation} | Stack #{@r.components[1].orientation}. Use Ctrl-Space to change "
44
+
45
+
46
+ st = status_line :row => -1
47
+ end # app
48
+ end # if
@@ -0,0 +1,68 @@
1
+ # this is a test program, tests out tabbed panes. type F1 to exit
2
+ #
3
+ require 'canis'
4
+ require 'canis/core/util/widgetshortcuts'
5
+
6
+ include Canis
7
+
8
+ class SetupMessagebox
9
+ include Canis::WidgetShortcuts
10
+ def initialize config={}, &block
11
+ @window = Canis::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", :default_button => true 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
+ Canis::start_ncurses # this is initializing colors via ColorMap.setup
51
+ path = File.join(ENV["LOGDIR"] || "./" ,"canis14.log")
52
+ file = File.open(path, File::WRONLY|File::TRUNC|File::CREAT)
53
+ $log = Logger.new(path)
54
+ $log.level = Logger::DEBUG
55
+ catch(:close) do
56
+ tp = SetupMessagebox.new()
57
+ buttonindex = tp.run
58
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
59
+ end
60
+ rescue => ex
61
+ ensure
62
+ Canis::stop_ncurses
63
+ p ex if ex
64
+ p(ex.backtrace.join("\n")) if ex
65
+ $log.debug( ex) if ex
66
+ $log.debug(ex.backtrace.join("\n")) if ex
67
+ end
68
+ end
@@ -0,0 +1,129 @@
1
+ # this is a test program, tests out widget shortcuts. type C-q to exit
2
+ #
3
+ require 'canis'
4
+ require 'canis/core/util/widgetshortcuts'
5
+
6
+ include Canis
7
+ include Canis::Utils
8
+
9
+ class SetupMessagebox
10
+ include Canis::WidgetShortcuts
11
+ def initialize config={}, &block
12
+ @window = Canis::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 Mavericks", :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
+ t.text(text, :content_type => :tmux)
93
+ t1 = textview :title => 'ansi formatted document'
94
+ text = File.open("data/color.2","r").readlines
95
+ #text = `ri -f bs String`.split("\n")
96
+ #t1.formatted_text(text, :ansi)
97
+ t1.text(text, :content_type => :ansi)
98
+
99
+ flow do
100
+ #box do
101
+ button :text => " Ok " do alert "Pressed okay" end
102
+ button :text => "Cancel" do throw :close if(confirm "Do you wish to Quit?") ; end
103
+ button :text => "Apply "
104
+ #end
105
+ end
106
+
107
+ end
108
+
109
+ end
110
+ end
111
+ if $0 == __FILE__
112
+ # Initialize curses
113
+ begin
114
+ # XXX update with new color and kb
115
+ Canis::start_ncurses # this is initializing colors via ColorMap.setup
116
+ $log = Logger.new((File.join(ENV["LOGDIR"] || "./" ,"canis14.log")))
117
+ $log.level = Logger::DEBUG
118
+ tp = SetupMessagebox.new()
119
+ buttonindex = tp.run
120
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
121
+ rescue => ex
122
+ ensure
123
+ Canis::stop_ncurses
124
+ p ex if ex
125
+ p(ex.backtrace.join("\n")) if ex
126
+ $log.debug( ex) if ex
127
+ $log.debug(ex.backtrace.join("\n")) if ex
128
+ end
129
+ end
data/lib/canis.rb ADDED
@@ -0,0 +1,16 @@
1
+ require "canis/version"
2
+ require 'ffi-ncurses'
3
+ require 'canis/core/system/ncurses'
4
+ require 'canis/core/system/window'
5
+ require 'canis/core/widgets/rwidget'
6
+ # added textpad here since it is now the basis of so many others 2014-04-09 - 12:57
7
+ require 'canis/core/widgets/textpad'
8
+ require 'canis/core/util/rdialogs'
9
+
10
+ module Canis
11
+ # key used to select a row in multiline widgets (earlier was SPACE but conflicted with paging)
12
+ $row_selector = 'v'.ord
13
+ # key used to range-select rows in multiline widgets (earlier was CTRL_SPACE )
14
+ $range_selector = 'V'.ord
15
+ # Your code goes here...
16
+ end
@@ -0,0 +1,104 @@
1
+ # G E N E R A L H E L P
2
+ =======================
3
+ <q> to quit this window. <Space> to scroll.
4
+ <TAB> goes to next link in help file. Press <ENTER> to open link.
5
+
6
+ _____________________________________________________________________
7
+ ## 1. General Help
8
+
9
+ F10 - exit application. Also, <C-q>
10
+ F1 - Help
11
+
12
+ In some applications, the following may have been provided:
13
+
14
+ ? - Should display all the key bindings available
15
+ for that widget. Alternatively, <M-?>
16
+
17
+ Alt-x - additional commands
18
+ : - additional commands
19
+ :! - system command
20
+ <C-x>c - system command
21
+
22
+
23
+ _____________________________________________________________________
24
+ ## 2. Form
25
+
26
+ <Tab> and <backtab> navigate between widgets.
27
+
28
+ _____________________________________________________________________
29
+ ## 3. Multiline widgets
30
+
31
+ In most widgets such as [[list]], [[textpad]], [[table]], and [[tree]] the
32
+ following vim-bindings are applicable.
33
+
34
+ j,k,l,h, gg, G, C-d, C-b, C-e, C-y, w, b, /
35
+
36
+ <space> scrolls
37
+ <Ctrl-Space> scroll up (aka C-@)
38
+
39
+ In multiline widgets such as _list_ and _tree_ to move to first item
40
+ starting with a character, press "f" followed by that character.
41
+
42
+
43
+ _____________________________________________________________________
44
+ ## 4. Editable Widgets
45
+
46
+ In _field_ and editable _textarea_, some emacs/Pine keys such as C-e,
47
+ C-a, C-k (delete till end) are available.
48
+
49
+ <C-a> - start of line
50
+ <C-e> - end of line
51
+ <C-k> - delete till end of line
52
+ <M-i> - toggle overwrite mode
53
+
54
+ _____________________________________________________________________
55
+ ## 5. Buttons
56
+
57
+ _Button_ can be fired using <space>. The default button, if
58
+ declared, is shown with as > Ok < as against other buttons, shown as [
59
+ Cancel ]. This can be fired by hitting <ENTER> anywhere on the form
60
+ (unless the current widget traps <ENTER>).
61
+
62
+ Pressing <ENTER> will trigger the default button, even if you are on
63
+ another button.
64
+
65
+ Hotkeys are available using Alt-<key> and will be displayed with an
66
+ underline if the TERM displays underlines.
67
+
68
+ _____________________________________________________________________
69
+ ## 6. Others
70
+
71
+ ### 6.1 Selection in lists
72
+
73
+ Please note that in earlier versions, <SPACE> was used for selection.
74
+ However, since this conflicts with the scrolling behavior in most
75
+ multiline widgtes, <SPACE> and <C-SPACE> are now exclusively used for
76
+ scrolling down and up. The characters "v" and "V" are used for
77
+ selection. This may be altered by setting "`$row_selector`".
78
+
79
+ v - toggle selection
80
+ V - range select
81
+ a - select all
82
+ u - unselect all (should be changed, as conflicts with
83
+ vim undo)
84
+ * - invert selection
85
+
86
+ - - `ask_unselect`
87
+ + - `ask_select`
88
+
89
+ ### 6.2 Terminal (TERM) settings
90
+
91
+ Some terminals (such as xterm) show underlines , however the 256color ones
92
+ do not.
93
+
94
+ Some terminals mess the screen output such as `xterm-256color`. At least
95
+ while working under `tmux` in `iTerm` (with solarized), this terminal was
96
+ messing the output.
97
+ Things are fine with `screen-256color`.
98
+
99
+ ### 6.3 Other components
100
+
101
+ - [[tabbedpane]]
102
+ _____________________________________________________________________
103
+ q to quit, gg to goto top. <TAB> goes to next link in help file
104
+ Press <ENTER> to open link.
@@ -0,0 +1,16 @@
1
+ # Help for Lists
2
+
3
+ Lists support selection, either single or multiple.
4
+
5
+ Single selecion is done using "v" which is the visual mark key in vim.
6
+ In multiple selection, the "v" may be used to select multiple rows.
7
+ The "V" character may be used for range selection.
8
+
9
+ Lists also provide for inversion of selection (*), select all (a) and clear selection (u).
10
+ These bindings may have been modified by your individual application.
11
+
12
+ *Ask_select* and *Ask_Unselect* may be mapped for certain applications
13
+ allowing a user to give a pattern to select or unselect.
14
+
15
+ Lists support all other motion commands of [[Textpad]].
16
+
@@ -0,0 +1,34 @@
1
+ ---
2
+ link:
3
+ :color: :yellow
4
+ :bgcolor: :black
5
+ :attr: :underline
6
+ bold:
7
+ :attr: :bold
8
+ em:
9
+ :color: :blue
10
+ :attr: :bold
11
+ strong:
12
+ :color: :yellow
13
+ :attr: :bold
14
+ code:
15
+ :color: :cyan
16
+ :bgcolor: 236
17
+ h1:
18
+ :attr: :reverse
19
+ h2:
20
+ :color: :green
21
+ :attr: :bold
22
+ h3:
23
+ :color: :yellow
24
+ key:
25
+ :color: :red
26
+ :attr: :bold
27
+ ul:
28
+ :color: :blue
29
+ :bgcolor: :black
30
+ :attr: :underline
31
+ wb:
32
+ :color: :white
33
+ :_bgcolor: :black
34
+ :attr: :bold
@@ -0,0 +1,15 @@
1
+ # Help for TabbedPanes
2
+
3
+ TabbedPanes allow multiple forms to occupy one area on the screen.
4
+ Following are some keys useful on a tabbedpane:
5
+ <
6
+
7
+ <TAB> - navigate between tabs or components
8
+ <DOWN> - navigate to the components of a tab
9
+ <UP> - navigate between components on a tab
10
+ or back to the the tabs
11
+ <SPACE> - activate the tab under cursor
12
+ Earlier, <ENTER> would have worked, but now
13
+ <ENTER> only fires the default button an a page.
14
+ >
15
+ (This page needs to be completed)
@@ -0,0 +1,31 @@
1
+ # Help for Tables
2
+
3
+ Tables are multirow components that support columnar information.
4
+
5
+ Columns may be resized, or hidden. Keys for this will have to be defined
6
+ by the application, if appropriate.
7
+
8
+ Data may be sorted on column by pressing <ENTER> on the header, if the
9
+ default table sorter has been enabled, or a custom sorter defined.
10
+
11
+ Tables support all or most motion commands of [[Textpad]].
12
+
13
+ Tables may be configured to support selection capabilities of [[List]]
14
+ if required.
15
+
16
+ Some operations on tables are as follows:
17
+ <
18
+ w - move to next column
19
+ b - move to previous column
20
+ <M--> - <Alt-minus> to reduce column width
21
+ <M-+> - <Alt-plus> to increase column width
22
+ <=> - press <equal> to size width of column to width of data in current column
23
+
24
+ >
25
+
26
+ Some basic row addition and editing facilities are also provided, which
27
+ must be bound to a key, if the application allows editing. It is
28
+ expected that an application will customize the basic row editing
29
+ feature for its needs. See |tabular.rb|.
30
+
31
+ (This page needs to be completed)