Skip to content

Commit 8a27661

Browse files
committed
edit in root
1 parent a478660 commit 8a27661

4 files changed

Lines changed: 103 additions & 49 deletions

File tree

packages/gui/duck.ss

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,32 @@
645645
(list-ref val 3)
646646
)
647647
))
648+
(widget-set-attrs
649+
widget
650+
"%event-get-text-range-hook"
651+
(lambda (ww name val)
652+
(gl-edit-get-text-range (widget-get-attrs ww '%edit)
653+
(list-ref val 0)
654+
(list-ref val 1)
655+
(list-ref val 2)
656+
(list-ref val 3)
657+
)
658+
))
659+
(widget-set-attrs
660+
widget
661+
"%event-get-current-line-text-hook"
662+
(lambda (ww name)
663+
(let* ( (ed (widget-get-attrs ww '%edit))
664+
(current-row (gl-edit-get-selection-row-start ed))
665+
(row-count (gl-edit-get-row-count ed current-row))
666+
)
667+
(gl-edit-get-text-range ed
668+
current-row
669+
0
670+
current-row
671+
row-count
672+
)
673+
)))
648674

649675
(widget-set-attrs
650676
widget
@@ -673,24 +699,23 @@
673699
(widget-set-draw
674700
widget
675701
(lambda (widget parent);;draw
676-
677-
(let ((gx (+ (vector-ref parent %gx) (vector-ref widget %x)))
678-
(gy (+ (vector-ref parent %gy) (vector-ref widget %y)))
679-
(background (widget-get-attrs widget 'background ))
680-
(border (widget-get-attrs widget 'border))
681-
(ww (vector-ref widget %w))
682-
(hh (vector-ref widget %h))
683-
)
684-
(vector-set! widget %gx gx)
685-
(vector-set! widget %gy gy)
702+
(let ((gx (widget-in-parent-gx widget parent))
703+
(gy (widget-in-parent-gy widget parent) )
704+
(background (widget-get-attrs widget 'background ))
705+
(border (widget-get-attrs widget 'border))
706+
(ww (vector-ref widget %w))
707+
(hh (vector-ref widget %h))
708+
)
709+
(vector-set! widget %gx gx)
710+
(vector-set! widget %gy gy)
686711

687-
(if (equal? '() background)
688-
'()
689-
(draw-panel gx gy ww hh '() background))
690-
(if (number? border)
691-
(draw-border gx gy ww hh border))
692-
(graphic-draw-edit ed gx gy)
693-
)))
712+
(if (equal? '() background)
713+
'()
714+
(draw-panel gx gy ww hh '() background))
715+
(if (number? border)
716+
(draw-border gx gy ww hh border))
717+
(graphic-draw-edit ed gx gy)
718+
)))
694719

695720
(widget-set-event
696721
widget

packages/gui/graphic.ss

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@
6161
gl-edit-get-cursor-y
6262
gl-edit-measure-text
6363
gl-edit-get-font
64+
gl-edit-get-text-range
65+
gl-edit-get-selection-row-start
66+
gl-edit-get-selection-row-end
67+
gl-edit-get-selection-col-start
68+
gl-edit-get-selection-col-end
6469
)
6570
(import (scheme) (utils libutil) (cffi cffi) (gles gles2) )
6671

@@ -84,8 +89,13 @@
8489
(def-function gl-edit-set-editable "gl_edit_set_editable" (void* int) void)
8590
(def-function gl-edit-set-show-no "gl_edit_set_show_no" (void* int) void)
8691
(def-function gl-edit-set-lineno-color "gl_edit_set_lineno_color" (void* int) void)
87-
(def-function gl-edit-get-selection "gl_get_selection" (void* ) string)
92+
(def-function gl-edit-get-selection "gl_edit_get_selection" (void* ) string)
8893
(def-function gl-edit-set-selection "gl_edit_set_selection" (void* int int int int) void)
94+
(def-function gl-edit-get-text-range "gl_edit_get_text_range" (void* int int int int) string)
95+
(def-function gl-edit-get-selection-row-start "gl_edit_get_select_row_start" (void*) int)
96+
(def-function gl-edit-get-selection-row-end "gl_edit_get_select_row_end" (void*) int)
97+
(def-function gl-edit-get-selection-col-start "gl_edit_get_select_col_start" (void*) int)
98+
(def-function gl-edit-get-selection-col-end "gl_edit_get_select_col_end" (void*) int)
8999

90100

91101
(def-function gl-edit-get-line-count "gl_edit_get_line_count" (void* ) int)

packages/gui/video.ss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
video-get-fps
1111
video-set-pause
1212
video-get-duration
13+
video-set-soft-conver
1314
video-get-current-duration
1415
)
1516

@@ -23,8 +24,10 @@
2324
(def-function video-set-pause "video_set_pause" (void* int) void)
2425
(def-function video-get-duration "video_get_duration" (void*) double)
2526
(def-function video-get-current-duration "video_get_current_duration" (void*) double)
27+
(def-function video-set-soft-conver "video_set_soft_conver" (void* int) void)
2628

2729

30+
2831

2932

3033
)

packages/gui/widget.ss

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@
5454
widget-child-focus-event
5555
widget-get-global-center-xy
5656
widget-print
57-
is-in-widget-top
58-
is-in-child-widget
57+
widget-in-parent-gx
58+
widget-in-parent-gy
59+
5960
widget-child-rect-event-mouse-button
6061
widget-child-rect-event-mouse-motion
6162
widget-child-rect-key-event
@@ -65,6 +66,8 @@
6566
widget-rect-fun
6667
in-rect
6768
is-in
69+
is-in-widget-top
70+
is-in-child-widget
6871
widget-set-child-attr
6972
widget-set-child-attrs
7073
widget-child-rect-event-scroll
@@ -269,7 +272,8 @@
269272
(case-lambda
270273
[(p)
271274
(set! $widgets (append! $widgets (list p)))
272-
((vector-ref p %layout) p)
275+
(if (procedure? (vector-ref p %layout))
276+
((vector-ref p %layout) p))
273277
p]
274278
[(p w)
275279
(vector-set! w %parent p)
@@ -389,6 +393,17 @@
389393
(+ (widget-get-attr widget %gy) (/ (widget-get-attr widget %h) 2) )
390394
))
391395

396+
(define (widget-in-parent-gx widget parent)
397+
(if (null? parent)
398+
(vector-ref widget %x)
399+
(+ (vector-ref parent %gx) (vector-ref widget %x))))
400+
401+
(define (widget-in-parent-gy widget parent)
402+
(if (null? parent)
403+
(vector-ref widget %y)
404+
(+ (vector-ref parent %gy) (vector-ref widget %y))))
405+
406+
392407
(define (far gx gy a b)
393408
(+ (* (- gx a) (- gx a)) (* (- gy b) (- gy b)))
394409
)
@@ -628,7 +643,7 @@
628643
(let ((h (vector-ref widget %attrs )))
629644
(let ((hook (hashtable-ref h (format "%event-get-~a-hook" name) '())))
630645
(if (procedure? hook)
631-
(hook widget name)
646+
(hook widget name default)
632647
(hashtable-ref h name default))))]
633648
))
634649

@@ -661,23 +676,23 @@
661676
)
662677
(set! nw (vector x y
663678
w h
664-
default-layout ;;layout
665-
(lambda (widget parent);;draw
666-
(let ((x (vector-ref widget %x))
667-
(y (vector-ref widget %y))
668-
(w (vector-ref widget %w))
669-
(h (vector-ref widget %h))
670-
(draw (vector-ref widget %draw)))
671-
;;(draw-widget-rect widget)
672-
(vector-set! widget %gx x)
673-
(vector-set! widget %gy y)
674-
675-
;;(graphic-sissor-begin x y w h)
676-
;;(draw-dialog x y w h text)
677-
;;(draw-text x y (format "status =>~a" (vector-ref widget %status)))
678-
;;(widget-draw-child widget)
679-
;;(graphic-sissor-end)
680-
))
679+
default-layout ;;layout 4
680+
(lambda (widget parent);;draw 5
681+
(let ((x (vector-ref widget %x))
682+
(y (vector-ref widget %y))
683+
(w (vector-ref widget %w))
684+
(h (vector-ref widget %h))
685+
(draw (vector-ref widget %draw)))
686+
;;(draw-widget-rect widget)
687+
(vector-set! widget %gx x)
688+
(vector-set! widget %gy y)
689+
690+
;;(graphic-sissor-begin x y w h)
691+
;;(draw-dialog x y w h text)
692+
;;(draw-text x y (format "status =>~a" (vector-ref widget %status)))
693+
;;(widget-draw-child widget)
694+
;;(graphic-sissor-end)
695+
))
681696
(lambda (widget parent type data);;event
682697
(if (= type %event-mouse-button)
683698
(let ((xx (vector-ref widget %x))
@@ -771,7 +786,7 @@
771786
))
772787
)
773788
(list )
774-
0 ;;status
789+
0 ;;status 8
775790
0.0 ;;top
776791
0.0 ;;bottom
777792
0.0 ;;left
@@ -785,11 +800,11 @@
785800
'() ;;parent
786801
0.0 ;;gx
787802
0.0 ;;gy
788-
text ;;text
803+
text ;;text 20
789804
'() ;;
790805
(make-hashtable equal-hash equal?) ;;attrs
791806
(make-hashtable equal-hash equal?) ;events
792-
#t ;;visible
807+
#t ;;visible 24
793808
'()
794809
'()
795810
'()
@@ -1178,13 +1193,14 @@
11781193
(define (widget-render)
11791194
(let loop ((w $widgets))
11801195
(if (pair? w)
1181-
(begin
1182-
;;(printf "~a ~a\n" (widget-get-attr (car w) %text) (widget-get-attr (car w) %visible))
1183-
(if (widget-get-attr (car w) %visible)
1184-
(let ((draw (vector-ref (car w) %draw)))
1185-
(draw (car w) '() )))
1186-
(loop (cdr w))
1187-
)))
1196+
(begin
1197+
;;(printf "~a ~a\n" (widget-get-attr (car w) %text) (widget-get-attr (car w) %visible))
1198+
(if (widget-get-attr (car w) %visible)
1199+
(let ((draw (vector-ref (car w) %draw)))
1200+
(draw (car w) '() )
1201+
))
1202+
(loop (cdr w)))
1203+
))
11881204
;;(graphic-draw-solid-quad cursor-x cursor-y (+ cursor-x 10.0) (+ cursor-y 10.0) 255.0 0.0 0.0 0.5)
11891205
;;(if (> cursor-arrow 0)
11901206
;; (draw-image cursor-x cursor-y 22.0 24.0 cursor-arrow))

0 commit comments

Comments
 (0)