rbcurse-core 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/VERSION +1 -1
- data/examples/dbdemo.rb +8 -2
- data/examples/testlistbox.rb +4 -1
- data/lib/rbcurse/core/include/bordertitle.rb +7 -2
- data/lib/rbcurse/core/include/chunk.rb +1 -1
- data/lib/rbcurse/core/include/listbindings.rb +70 -0
- data/lib/rbcurse/core/include/listscrollable.rb +20 -15
- data/lib/rbcurse/core/include/listselectable.rb +1 -1
- data/lib/rbcurse/core/system/window.rb +4 -2
- data/lib/rbcurse/core/widgets/applicationheader.rb +2 -1
- data/lib/rbcurse/core/widgets/rlist.rb +36 -80
- data/lib/rbcurse/core/widgets/rmenu.rb +21 -2
- data/lib/rbcurse/core/widgets/rtextarea.rb +45 -65
- data/lib/rbcurse/core/widgets/rtextview.rb +16 -59
- data/lib/rbcurse/core/widgets/rtree.rb +26 -45
- data/lib/rbcurse/core/widgets/tabularwidget.rb +17 -90
- data/rbcurse-core.gemspec +3 -2
- metadata +5 -4
@@ -33,6 +33,7 @@ require 'rbcurse'
|
|
33
33
|
require 'rbcurse/core/include/listscrollable'
|
34
34
|
require 'rbcurse/core/widgets/tabular'
|
35
35
|
require 'rbcurse/core/include/listselectable'
|
36
|
+
require 'rbcurse/core/include/bordertitle'
|
36
37
|
|
37
38
|
#include RubyCurses
|
38
39
|
module RubyCurses
|
@@ -49,8 +50,8 @@ module RubyCurses
|
|
49
50
|
|
50
51
|
include ListScrollable
|
51
52
|
include NewListSelectable
|
52
|
-
dsl_accessor :title # set this on top
|
53
|
-
dsl_accessor :title_attrib # bold, reverse, normal
|
53
|
+
#dsl_accessor :title # set this on top
|
54
|
+
#dsl_accessor :title_attrib # bold, reverse, normal
|
54
55
|
dsl_accessor :footer_attrib # bold, reverse, normal
|
55
56
|
dsl_accessor :list # the array of arrays of data to be sent by user XXX RISKY bypasses set_content
|
56
57
|
dsl_accessor :maxlen # max len to be displayed
|
@@ -58,9 +59,9 @@ module RubyCurses
|
|
58
59
|
##attr_reader :winrow # the row in the viewport/window
|
59
60
|
# painting the footer does slow down cursor painting slightly if one is moving cursor fast
|
60
61
|
dsl_accessor :print_footer
|
61
|
-
dsl_accessor :suppress_borders
|
62
|
+
#dsl_accessor :suppress_borders
|
62
63
|
attr_accessor :current_index
|
63
|
-
dsl_accessor :border_attrib, :border_color # color pair for border
|
64
|
+
#dsl_accessor :border_attrib, :border_color # color pair for border
|
64
65
|
dsl_accessor :header_attrib, :header_fgcolor, :header_bgcolor # 2010-10-15 13:21
|
65
66
|
|
66
67
|
# boolean, whether lines should be cleaned (if containing tabs/newlines etc)
|
@@ -125,6 +126,7 @@ module RubyCurses
|
|
125
126
|
install_keys # << almost jnuk now, clean off TODO
|
126
127
|
init_vars
|
127
128
|
map_keys
|
129
|
+
bordertitle_init
|
128
130
|
end
|
129
131
|
def init_vars #:nodoc:
|
130
132
|
@curpos = @pcol = @toprow = @current_index = 0
|
@@ -135,8 +137,6 @@ module RubyCurses
|
|
135
137
|
@internal_width = 2
|
136
138
|
@internal_width = 0 if @suppress_borders
|
137
139
|
# added 2010-02-11 15:11 RFED16 so we don't need a form.
|
138
|
-
@win_left = 0
|
139
|
-
@win_top = 0
|
140
140
|
@current_column = 0
|
141
141
|
# currently i scroll right only if current line is longer than display width, i should use
|
142
142
|
# longest line on screen.
|
@@ -145,19 +145,12 @@ module RubyCurses
|
|
145
145
|
|
146
146
|
end
|
147
147
|
def map_keys
|
148
|
-
|
149
|
-
|
150
|
-
bind_key([?',?'], 'goto last'){ goto_last_position } # vim , goto last row position (not column)
|
151
|
-
bind_key(?/, :ask_search) # XXX TESTME
|
152
|
-
bind_key(?n, :find_more) # XXX TESTME
|
153
|
-
bind_key([?\C-x, ?>], :scroll_right)
|
154
|
-
bind_key([?\C-x, ?<], :scroll_left)
|
155
|
-
#bind_key(?r) { getstr("Enter a word: ") }
|
156
|
-
bind_key(?m, :disp_menu) # enhance this or cut it out - how can app leverage this. TODO
|
148
|
+
require 'rbcurse/core/include/listbindings'
|
149
|
+
bindings()
|
157
150
|
bind_key(?w, :next_column)
|
158
151
|
bind_key(?b, :previous_column)
|
159
|
-
bind_key(
|
160
|
-
list_bindings
|
152
|
+
bind_key(?>, :expand_column) # just trying out
|
153
|
+
list_bindings # selection bindings
|
161
154
|
end
|
162
155
|
|
163
156
|
#
|
@@ -367,7 +360,7 @@ module RubyCurses
|
|
367
360
|
end
|
368
361
|
## print a border
|
369
362
|
## Note that print_border clears the area too, so should be used sparingly.
|
370
|
-
def
|
363
|
+
def OLDprint_borders #:nodoc:
|
371
364
|
raise "#{self.class} needs width" unless @width
|
372
365
|
raise "#{self.class} needs height" unless @height
|
373
366
|
|
@@ -378,7 +371,7 @@ module RubyCurses
|
|
378
371
|
@graphic.print_border @row, @col, @height-1, @width, bordercolor, borderatt
|
379
372
|
print_title
|
380
373
|
end
|
381
|
-
def
|
374
|
+
def OLDprint_title #:nodoc:
|
382
375
|
raise "#{self.class} needs width" unless @width
|
383
376
|
$log.debug " print_title #{@row}, #{@col}, #{@width} "
|
384
377
|
@graphic.printstring( @row, @col+(@width-@title.length)/2, @title, $datacolor, @title_attrib) unless @title.nil?
|
@@ -440,30 +433,6 @@ module RubyCurses
|
|
440
433
|
return ret unless ret == :UNHANDLED
|
441
434
|
end
|
442
435
|
case ch
|
443
|
-
when ?\C-d.getbyte(0) #, 32
|
444
|
-
scroll_forward
|
445
|
-
when ?\C-b.getbyte(0)
|
446
|
-
scroll_backward
|
447
|
-
when ?\C-[.getbyte(0), ?t.getbyte(0)
|
448
|
-
goto_start #start of buffer # cursor_start
|
449
|
-
when ?\C-].getbyte(0), ?G.getbyte(0)
|
450
|
-
goto_end # end / bottom cursor_end
|
451
|
-
when KEY_UP, ?k.getbyte(0)
|
452
|
-
#select_prev_row
|
453
|
-
ret = up
|
454
|
-
get_window.ungetch(KEY_BTAB) if ret == :NO_PREVIOUS_ROW
|
455
|
-
check_curpos
|
456
|
-
|
457
|
-
when KEY_DOWN, ?j.getbyte(0)
|
458
|
-
ret = down
|
459
|
-
#get_window.ungetch(KEY_TAB) if ret == :NO_NEXT_ROW
|
460
|
-
check_curpos
|
461
|
-
when KEY_LEFT, ?h.getbyte(0)
|
462
|
-
cursor_backward
|
463
|
-
when KEY_RIGHT, ?l.getbyte(0)
|
464
|
-
cursor_forward
|
465
|
-
when KEY_BACKSPACE, KEY_BSPACE, KEY_DELETE
|
466
|
-
cursor_backward
|
467
436
|
when ?\C-a.getbyte(0) #, ?0.getbyte(0)
|
468
437
|
# take care of data that exceeds maxlen by scrolling and placing cursor at start
|
469
438
|
@repaint_required = true if @pcol > 0 # tried other things but did not work
|
@@ -476,11 +445,7 @@ module RubyCurses
|
|
476
445
|
blen = @buffer.rstrip.length
|
477
446
|
set_form_col blen
|
478
447
|
# search related
|
479
|
-
when
|
480
|
-
ask_search
|
481
|
-
when @KEY_FIND_MORE # FIXME
|
482
|
-
find_more
|
483
|
-
when 10, 13, KEY_ENTER
|
448
|
+
when KEY_ENTER, FFI::NCurses::KEY_ENTER
|
484
449
|
#fire_handler :PRESS, self
|
485
450
|
fire_action_event
|
486
451
|
when ?0.getbyte(0)..?9.getbyte(0)
|
@@ -498,14 +463,6 @@ module RubyCurses
|
|
498
463
|
# storing digits entered so we can multiply motion actions
|
499
464
|
$multiplier *= 10 ; $multiplier += (ch-48)
|
500
465
|
return 0
|
501
|
-
#when ?\C-u.getbyte(0)
|
502
|
-
## multiplier. Series is 4 16 64
|
503
|
-
#@multiplier = (@multiplier == 0 ? 4 : @multiplier *= 4)
|
504
|
-
#return 0
|
505
|
-
when ?\M-l.getbyte(0) # just added 2010-03-05 not perfect
|
506
|
-
scroll_right # scroll data horizontally
|
507
|
-
when ?\M-h.getbyte(0)
|
508
|
-
scroll_left
|
509
466
|
when ?\C-c.getbyte(0)
|
510
467
|
$multiplier = 0
|
511
468
|
return 0
|
@@ -516,15 +473,16 @@ module RubyCurses
|
|
516
473
|
rescue => err
|
517
474
|
$error_message.value = err.to_s
|
518
475
|
# @form.window.print_error_message # changed 2011 dts
|
519
|
-
textdialog ["Error in TabularWidget: #{err} ", *err.backtrace], :title => "Exception"
|
520
476
|
$log.error " Tabularwidget ERROR #{err} "
|
521
477
|
$log.debug(err.backtrace.join("\n"))
|
478
|
+
textdialog ["Error in TabularWidget: #{err} ", *err.backtrace], :title => "Exception"
|
522
479
|
# XXX caller app has no idea error occurred so can't do anything !
|
523
480
|
end
|
524
481
|
return :UNHANDLED if ret == :UNHANDLED
|
525
482
|
end
|
526
483
|
$multiplier = 0 # you must reset if you've handled a key. if unhandled, don't reset since parent could use
|
527
484
|
set_form_row
|
485
|
+
$status_message.value = "F10 quit, F1 Help, : menu, toprow #{@toprow} current #{@current_index} " if $log.debug?
|
528
486
|
return 0 # added 2010-01-12 22:17 else down arrow was going into next field
|
529
487
|
end
|
530
488
|
#
|
@@ -658,8 +616,6 @@ module RubyCurses
|
|
658
616
|
my_win = @target_window
|
659
617
|
end
|
660
618
|
@graphic = my_win unless @graphic
|
661
|
-
@win_left = my_win.left
|
662
|
-
@win_top = my_win.top
|
663
619
|
tm = get_content
|
664
620
|
rc = tm.length
|
665
621
|
_estimate_column_widths if rc > 0 # will set preferred_width 2011-10-4
|
@@ -671,7 +627,6 @@ module RubyCurses
|
|
671
627
|
|
672
628
|
print_borders if (@suppress_borders == false && @repaint_all) # do this once only, unless everything changes
|
673
629
|
_maxlen = @maxlen || @width-@internal_width
|
674
|
-
$log.debug " #{@name} Tabularwidget repaint width is #{@width}, height is #{@height} , maxlen #{maxlen}/ #{@maxlen}, #{@graphic.name} roff #{@row_offset} coff #{@col_offset}"
|
675
630
|
tr = @toprow
|
676
631
|
acolor = get_color $datacolor
|
677
632
|
h = scrollatrow()
|
@@ -679,6 +634,7 @@ module RubyCurses
|
|
679
634
|
print_header
|
680
635
|
r += @_header_adjustment # for column header
|
681
636
|
@longest_line = @width #maxlen
|
637
|
+
$log.debug " #{@name} Tabularwidget repaint width is #{@width}, height is #{@height} , maxlen #{maxlen}/ #{@maxlen}, #{@graphic.name} roff #{@row_offset} coff #{@col_offset}, r #{r} top #{toprow} ci #{current_index} "
|
682
638
|
0.upto(h - @_header_adjustment) do |hh|
|
683
639
|
crow = tr+hh
|
684
640
|
if crow < rc
|
@@ -901,39 +857,10 @@ module RubyCurses
|
|
901
857
|
#$log.debug " FMT : #{@fmstr} "
|
902
858
|
#alert "format: #{@fmstr} "
|
903
859
|
end
|
904
|
-
## this is just a test of prompting user for a string
|
905
|
-
#+ as an alternative to the dialog.
|
906
|
-
def getstr prompt, maxlen=10 #:nodoc:
|
907
|
-
tabc = Proc.new {|str| Dir.glob(str +"*") }
|
908
|
-
config={}; config[:tab_completion] = tabc
|
909
|
-
config[:default] = "default"
|
910
|
-
$log.debug " inside getstr before call "
|
911
|
-
ret, str = rbgetstr(@form.window, @row+@height-1, @col+1, prompt, maxlen, config)
|
912
|
-
$log.debug " rbgetstr returned #{ret} , #{str} "
|
913
|
-
return "" if ret != 0
|
914
|
-
return str
|
915
|
-
end
|
916
|
-
# this is just a test of the simple "most" menu
|
917
|
-
def disp_menu #:nodoc:
|
918
|
-
$error_message_row ||= 23 # FIXME
|
919
|
-
$error_message_col ||= 1 # FIXME
|
920
|
-
menu = PromptMenu.new self
|
921
|
-
menu.add( menu.create_mitem( 's', "Goto start ", "Going to start", Proc.new { goto_start} ))
|
922
|
-
menu.add(menu.create_mitem( 'r', "scroll right", "I have scrolled ", :scroll_right ))
|
923
|
-
menu.add(menu.create_mitem( 'l', "scroll left", "I have scrolled ", :scroll_left ))
|
924
|
-
item = menu.create_mitem( 'm', "submenu", "submenu options" )
|
925
|
-
menu1 = PromptMenu.new( self, "Submenu Options")
|
926
|
-
menu1.add(menu1.create_mitem( 's', "CASE sensitive", "Ignoring Case in search" ))
|
927
|
-
menu1.add(menu1.create_mitem( 't', "goto last position", "moved to previous position", Proc.new { goto_last_position} ))
|
928
|
-
item.action = menu1
|
929
|
-
menu.add(item)
|
930
|
-
# how do i know what's available. the application or window should know where to place
|
931
|
-
#menu.display @form.window, 23, 1, $datacolor #, menu
|
932
|
-
menu.display @form.window, $error_message_row, $error_message_col, $datacolor #, menu
|
933
|
-
end
|
934
860
|
##
|
935
861
|
# dynamically load a module and execute init method.
|
936
862
|
# Hopefully, we can get behavior like this such as vieditable or multibuffers
|
863
|
+
# TODO CUT THIS OUT AND FIX IT, there are simpler ways like extend()
|
937
864
|
def load_module requirename, includename
|
938
865
|
require "rbcurse/#{requirename}"
|
939
866
|
extend Object.const_get("#{includename}")
|
data/rbcurse-core.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rbcurse-core"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rahul Kumar"]
|
12
|
-
s.date = "2011-12-
|
12
|
+
s.date = "2011-12-13"
|
13
13
|
s.description = "Ruby curses/ncurses widgets for easy application development on text terminals (ruby 1.9, 1.8)"
|
14
14
|
s.email = "sentinel1879@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -58,6 +58,7 @@ Gem::Specification.new do |s|
|
|
58
58
|
"lib/rbcurse/core/include/bordertitle.rb",
|
59
59
|
"lib/rbcurse/core/include/chunk.rb",
|
60
60
|
"lib/rbcurse/core/include/io.rb",
|
61
|
+
"lib/rbcurse/core/include/listbindings.rb",
|
61
62
|
"lib/rbcurse/core/include/listcellrenderer.rb",
|
62
63
|
"lib/rbcurse/core/include/listeditable.rb",
|
63
64
|
"lib/rbcurse/core/include/listscrollable.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbcurse-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi-ncurses
|
16
|
-
requirement: &
|
16
|
+
requirement: &70266141084420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.4.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70266141084420
|
25
25
|
description: Ruby curses/ncurses widgets for easy application development on text
|
26
26
|
terminals (ruby 1.9, 1.8)
|
27
27
|
email: sentinel1879@gmail.com
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/rbcurse/core/include/bordertitle.rb
|
73
73
|
- lib/rbcurse/core/include/chunk.rb
|
74
74
|
- lib/rbcurse/core/include/io.rb
|
75
|
+
- lib/rbcurse/core/include/listbindings.rb
|
75
76
|
- lib/rbcurse/core/include/listcellrenderer.rb
|
76
77
|
- lib/rbcurse/core/include/listeditable.rb
|
77
78
|
- lib/rbcurse/core/include/listscrollable.rb
|