home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / edit / !lEdit / l / ledit next >
Text File  |  1995-04-19  |  3KB  |  104 lines

  1. ;;;                  ***  lEdit - Lisp Editor  ***
  2. ;;;                       (c) 1995 Urs Bisang
  3. ;;;                           Version 0.1  
  4. ;;;
  5. ;;;   dieses file enthaelt die event loop + startup funktionen
  6. ;;;   + code fuer baricon
  7. ;;;
  8.  
  9. ;;; *** lade alle von ledit benoetigten files ***
  10. (use "support")
  11. (use "text")
  12. (use "lispmode")
  13.  
  14. ;;; *** globale variablen ***
  15. (define *ledit-version* "0.1 [35]")
  16.  
  17. ;; im moment gibt es nur einen mode und eine clickproc
  18. (define *ledit-clicproc* lisp-new-editor-window)
  19.  
  20. ;; im moment gibt es nur einen mode und eine loadproc
  21. (define *ledit-loadproc* text-load-dragged-file)
  22.  
  23. ;; im moment gibt es nur einen mode und eine dataopenproc
  24. (define *ledit-dataopenproc* text-dataopen-proc)
  25.  
  26.  
  27. ;;; ***  baricon menu ***
  28.  
  29. (define baricon-menu 
  30.   (menu-new "lEdit" ">Info,Quit"))
  31.  
  32. (define (baricon-menu-handler item handle)
  33.   (cond 
  34.     ((menu-item item 1) (show-proginfo))
  35.     ((menu-item item 2) (ledit-quit))
  36.     (else (ierr "unkown baricon menu entry"))))
  37.  
  38. ;;; ** routinen zur behandlung der baricon menu eintraege **
  39.  
  40. ;; verlasse ledit
  41. (define (ledit-quit)
  42.   (if (ledit-query-quit)
  43.       (exit)))      
  44.  
  45. ;; pruefe ob modifizierte text buffer vorhanden sind
  46. (define (ledit-query-quit)
  47.   (let ((n (text-modified-buffers)))
  48.     (if n
  49.         (let ((msg (if (= n 1)
  50.                      "1 file modified"
  51.                      (string-concat n " files modified")))
  52.               (field (dbox-popup "quit" msg)))
  53.           (cond 
  54.             ((= field 0) #t)   ; discard
  55.             ((= field 2) #f)   ; cancel
  56.             (else #f)))        ; otherwise
  57.         #t)))     
  58.  
  59.  
  60. ;; zeige die proginfo dialog box an
  61. (define (show-proginfo)
  62.   (let ((d (dbox-new "progInfo")))
  63.     (dbox-setfield d 4 *ledit-version*)
  64.     (dbox-show d)
  65.     (dbox-fillin d)
  66.     (dbox-dispose d)))
  67.  
  68.  
  69. ;; lade ein file von der command line
  70. ;; im moment gibt es nur einen mode und einen loader
  71. (define (ledit-load-cmdline-file filename)
  72.   (lisp-load-file filename))
  73.  
  74. ;;; *** das eigentliche hauptprogramm ***
  75.  
  76. ;; initialisiere das wimp toolkit
  77. (wtk-init "lEdit")
  78. ;; installiere handler fuer dataopen event
  79. (wtk-dataopen-handler '(*ledit-dataopenproc*))
  80. ;; installiere den handler fuer prequit event
  81. (wtk-prequit-handler '(if (ledit-query-quit) '(exit) #f))
  82. ;; initialisiere den flex memory manager
  83. ;; dies wird vom txt modul benoetigt.
  84. (flex-init)
  85. ;; setze die environment variable fuer ledit
  86. (txtopt-set-name "lEdit")
  87. ;; initialisiere das txt modul
  88. (txt-init)
  89.  
  90. ;; installiere icon auf der icon bar
  91. (baricon "!lEdit" 
  92.     clickproc: '(*ledit-clicproc*)
  93.     loadproc: '(*ledit-loadproc*)
  94.     menu: baricon-menu
  95.     menu-handler: baricon-menu-handler
  96.     menu-handle: nil)
  97.  
  98.  
  99. ;; ueberpruefe die command line ob ein file geladen werden muss
  100. (if (> (length *cmdline-args*) 0)
  101.     (ledit-load-cmdline-file (symbol->string (car *cmdline-args*))))
  102.  
  103. ;; starte die main event loop
  104. (main-event-loop)