diff options
author | IOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at> | 2018-04-30 21:45:07 +0200 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at> | 2018-04-30 21:45:07 +0200 |
commit | be4b008536f3c28b5f025c8618ac3acb1cd065ad (patch) | |
tree | d58751a8750d39e167289b357c96e6da3e5fe67a /gtkex.scm | |
parent | 0f71f6cd817b5747663b516d620059680789fbc1 (diff) |
New upstream version 18.3
Diffstat (limited to 'gtkex.scm')
-rw-r--r-- | gtkex.scm | 103 |
1 files changed, 51 insertions, 52 deletions
@@ -27,54 +27,57 @@ (repl_buf (gtk_text_buffer_new #f)) (prompt_not_editable #f)) - (define (evaluate-expression expr) - (let ((pos (GtkTextIter)) - (result (catch #t - (lambda () - (object->string (eval-string expr (rootlet)))) ; default is (curlet) - (lambda args - (format #f "~A: ~S" (car args) (apply format #f (cadr args))))))) - (gtk_text_buffer_get_end_iter repl_buf pos) - (gtk_text_buffer_insert repl_buf pos "\n" 1) - (gtk_text_buffer_insert repl_buf pos result (length result)))) - - (define (get-current-expression) - (let ((m (gtk_text_buffer_get_insert repl_buf)) - (pos (GtkTextIter)) - (previous (GtkTextIter)) - (next (GtkTextIter)) - (temp (GtkTextIter))) - (gtk_text_buffer_get_iter_at_mark repl_buf pos m) - (if (gtk_text_iter_backward_search pos s7-prompt 0 temp previous #f) - (begin - (if (not (gtk_text_iter_forward_search pos s7-prompt 0 next temp #f)) - (gtk_text_buffer_get_end_iter repl_buf next) - (begin - (gtk_text_iter_backward_search next "\n" 0 pos temp #f) - (gtk_text_iter_backward_search pos "\n" 0 next temp #f))) - (gtk_text_buffer_get_text repl_buf previous next #t)) - ""))) - - (define (repl-key-press w event data) - (let ((key (gtk_event_keyval event))) - (if (equal? key return-key) - (let ((pos (GtkTextIter))) - - (evaluate-expression (get-current-expression)) - - (gtk_text_buffer_get_end_iter repl_buf pos) - (gtk_text_buffer_insert_with_tags repl_buf pos - (string-append (string #\newline) s7-prompt) - (+ 1 (length s7-prompt)) - (list prompt_not_editable)) - (gtk_text_buffer_place_cursor repl_buf pos) - (gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW repl) - (gtk_text_buffer_get_insert repl_buf)) - (g_signal_stop_emission (GPOINTER w) - (g_signal_lookup "key_press_event" - (G_OBJECT_TYPE (G_OBJECT w))) - 0))) - #f)) + (define repl-key-press + (let ((evaluate-expression + (lambda (expr) + (let ((pos (GtkTextIter)) + (result (catch #t + (lambda () + (object->string (eval-string expr (rootlet)))) ; default is (curlet) + (lambda args + (format #f "~A: ~S" (car args) (apply format #f (cadr args))))))) + (gtk_text_buffer_get_end_iter repl_buf pos) + (gtk_text_buffer_insert repl_buf pos "\n" 1) + (gtk_text_buffer_insert repl_buf pos result (length result))))) + + (get-current-expression + (lambda () + (let ((m (gtk_text_buffer_get_insert repl_buf)) + (pos (GtkTextIter)) + (previous (GtkTextIter)) + (next (GtkTextIter)) + (temp (GtkTextIter))) + (gtk_text_buffer_get_iter_at_mark repl_buf pos m) + (if (not (gtk_text_iter_backward_search pos s7-prompt 0 temp previous #f)) + "" + (begin + (if (not (gtk_text_iter_forward_search pos s7-prompt 0 next temp #f)) + (gtk_text_buffer_get_end_iter repl_buf next) + (begin + (gtk_text_iter_backward_search next "\n" 0 pos temp #f) + (gtk_text_iter_backward_search pos "\n" 0 next temp #f))) + (gtk_text_buffer_get_text repl_buf previous next #t))))))) + + (lambda (w event data) + (let ((key (gtk_event_keyval event))) + (if (equal? key return-key) + (let ((pos (GtkTextIter))) + + (evaluate-expression (get-current-expression)) + + (gtk_text_buffer_get_end_iter repl_buf pos) + (gtk_text_buffer_insert_with_tags repl_buf pos + (string-append (string #\newline) s7-prompt) + (+ 1 (length s7-prompt)) + (list prompt_not_editable)) + (gtk_text_buffer_place_cursor repl_buf pos) + (gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW repl) + (gtk_text_buffer_get_insert repl_buf)) + (g_signal_stop_emission (GPOINTER w) + (g_signal_lookup "key_press_event" + (G_OBJECT_TYPE (G_OBJECT w))) + 0))) + #f)))) (gtk_container_add (GTK_CONTAINER scrolled_window) repl) (gtk_text_view_set_buffer (GTK_TEXT_VIEW repl) repl_buf) @@ -83,10 +86,6 @@ (gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW repl) #t) (gtk_text_view_set_left_margin (GTK_TEXT_VIEW repl) 4) - (if (provided? 'gtk4) - (gdk_window_set_event_compression (gtk_widget_get_window repl) #f) - ;(gtk_widget_set_events repl GDK_ALL_EVENTS_MASK) - ) (g_signal_connect (G_OBJECT repl) "key_press_event" repl-key-press) ;; TODO in gtk4 I think repl-key-press receives 2 args |