add menu item to hide/show line numbers

This commit is contained in:
Jon Rafkind 2010-09-29 16:24:48 -06:00
parent 4b120e5d86
commit 8cba0a0627
3 changed files with 63 additions and 35 deletions

View File

@ -118,6 +118,7 @@
(drr:set-default 'drracket:module-language-first-line-special? #t boolean?)
(drr:set-default 'drracket:defns-popup-sort-by-name? #f boolean?)
(drr:set-default 'drracket:show-line-numbers? #f boolean?)
(drr:set-default 'drracket:toolbar-state
'(#f . top)
@ -299,14 +300,15 @@
(preferences:add-general-checkbox-panel)
(let ([make-check-box
(λ (pref-sym string parent)
(λ (pref-sym string parent [extra-functionality #f])
(let ([q (make-object check-box%
string
parent
(λ (checkbox evt)
(preferences:set
pref-sym
(send checkbox get-value))))])
(define value (send checkbox get-value))
(preferences:set pref-sym value)
(when extra-functionality
(extra-functionality value))))])
(preferences:add-callback pref-sym (λ (p v) (send q set-value v)))
(send q set-value (preferences:get pref-sym))))])
(preferences:add-to-general-checkbox-panel
@ -325,7 +327,7 @@
(make-check-box 'drracket:defs/ints-horizontal
(string-constant interactions-beside-definitions)
editor-panel)
(make-check-box 'drracket:module-language-first-line-special?
(string-constant ml-always-show-#lang-line)
editor-panel)))

View File

@ -447,16 +447,12 @@ module browser threading seems wrong.
(set! definitions-text% (make-definitions-text%)))
definitions-text%)))
;; TODO: get this from the configuation file
;; also add a menu entry that sets this property dynamically
(define (show-line-numbers?) #f)
;; links two editor's together so they scroll in tandem
(define (linked-scroller %)
(class %
(super-new)
(field [linked #f])
(init-field line-numbers?)
(init-field [line-numbers? #f])
(inherit insert line-start-position line-end-position)
@ -491,13 +487,17 @@ module browser threading seems wrong.
(inner (void) after-delete start length))
(define/augment (after-insert start length)
(update-numbers)
#;
(when (not line-numbers?)
#;
(printf "Send ~a linked ensure-length ~a\n" linked (send this last-line))
(when linked
(send linked ensure-length (send this last-line))))
(inner (void) after-insert start length))
(define/public (update-numbers)
(when (and (not line-numbers?) linked)
(send linked ensure-length (send this last-line))))
(define/public (ensure-length length)
(define lines (send this last-line))
#;
@ -1452,6 +1452,12 @@ module browser threading seems wrong.
(λ (l) (remq execute-warning-panel l)))
(send execute-warning-canvas set-message #f))])))
(define (show-line-numbers?)
(preferences:get 'drracket:show-line-numbers?))
(define/public (show-line-numbers! show)
(re-initialize-definitions-canvas))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; logging
@ -2593,7 +2599,9 @@ module browser threading seems wrong.
(send resizable-panel begin-container-sequence)
;; this might change the unit-window-size-percentage, so save/restore it
(send resizable-panel change-children (λ (l) (immediate-children resizable-panel new-children)))
(send resizable-panel change-children
(λ (old)
(immediate-children resizable-panel new-children)))
(preferences:set 'drracket:unit-window-size-percentage p)
;; restore preferred interactions/definitions sizes
@ -2770,28 +2778,38 @@ module browser threading seems wrong.
(define (create-definitions-canvas line-numbers?)
(define (with-line-numbers)
(define line-numbers-text (new (linked-scroller (uneditable scheme:text%))
[line-numbers? #t]))
(define shared-pane (new horizontal-pane% [parent resizable-panel]))
(define line-canvas (new editor-canvas%
[parent shared-pane]
[style '(hide-vscroll hide-hscroll)]
[editor line-numbers-text]
[stretchable-width #f]
[min-width 60]))
(send definitions-text link-to! line-numbers-text)
(send line-numbers-text link-to! definitions-text)
(new (drracket:get/extend:get-definitions-canvas)
[parent shared-pane]
[editor definitions-text]))
(define line-numbers-text (new (linked-scroller (uneditable scheme:text%))
[line-numbers? #t]))
(define shared-pane (new horizontal-panel% [parent resizable-panel]))
(define line-canvas (new editor-canvas%
[parent shared-pane]
[style '(hide-vscroll hide-hscroll)]
[editor line-numbers-text]
[stretchable-width #f]
[min-width 60]))
(send definitions-text link-to! line-numbers-text)
(send line-numbers-text link-to! definitions-text)
(new (drracket:get/extend:get-definitions-canvas)
[parent shared-pane]
[editor definitions-text]))
(define (without-line-numbers)
(new (drracket:get/extend:get-definitions-canvas)
[parent resizable-panel]
[editor definitions-text]))
(send definitions-text link-to! #f)
(new (drracket:get/extend:get-definitions-canvas)
[parent resizable-panel]
[editor definitions-text]))
(if line-numbers?
(with-line-numbers)
(without-line-numbers)))
(define/private (re-initialize-definitions-canvas)
(begin-container-sequence)
(set! definitions-canvas (create-definitions-canvas
(show-line-numbers?)))
(set! definitions-canvases (list definitions-canvas))
(update-shown)
(send (send definitions-canvas get-editor) update-numbers)
(end-container-sequence))
(define/private (initialize-definitions-canvas)
(unless definitions-canvas
(set! definitions-canvas (create-definitions-canvas
@ -2831,7 +2849,7 @@ module browser threading seems wrong.
;; creates a new tab and updates the GUI for that new tab
(define/private create-new-tab
(lambda ([filename #f])
(let* ([defs (new (drracket:get/extend:get-definitions-text) [line-numbers? #f])]
(let* ([defs (new (drracket:get/extend:get-definitions-text))]
[tab-count (length tabs)]
[new-tab (new (drracket:get/extend:get-tab)
(defs defs)
@ -3897,6 +3915,14 @@ module browser threading seems wrong.
#f
has-editor-on-demand)
(register-capability-menu-item 'drscheme:special:insert-lambda insert-menu))
(new menu:can-restore-menu-item%
[label (string-constant show-line-numbers)]
[parent (get-show-menu)]
[callback (lambda (x y)
(define value (preferences:get 'drracket:show-line-numbers?))
(preferences:set 'drracket:show-line-numbers? (not value))
(show-line-numbers! (not value)))])
(make-object separator-menu-item% (get-show-menu))
@ -3933,8 +3959,7 @@ module browser threading seems wrong.
;
;
(define definitions-text (new (drracket:get/extend:get-definitions-text)
[line-numbers? #f]))
(define definitions-text (new (drracket:get/extend:get-definitions-text)))
;; tabs : (listof tab)
(define tabs (list (new (drracket:get/extend:get-tab)

View File

@ -446,8 +446,9 @@ please adhere to these guidelines:
(online-coloring-active "Color syntax interactively")
(open-files-in-tabs "Open files in separate tabs (not separate windows)")
(show-interactions-on-execute "Automatically open interactions window when running a program")
(switch-to-module-language-automatically "Automatically switch to the module language when opening a module")
(interactions-beside-definitions "Put the interactions window beside the definitions window") ;; in preferences, below the checkbox one line above this one
(switch-to-module-language-automatically "Automatically switch to the module language when opening a module")
(interactions-beside-definitions "Put the interactions window beside the definitions window") ;; in preferences, below the checkbox one line above this one
(show-line-numbers "Show line numbers next to the definitions window")
(limit-interactions-size "Limit interactions size")
(background-color "Background Color")
(default-text-color "Default text") ;; used for configuring colors, but doesn't need the word "color"