home *** CD-ROM | disk | FTP | other *** search
- ;;; *** lEdit - Lisp Editor ***
- ;;; (c) 1995 Urs Bisang
- ;;; Version 0.1
- ;;;
- ;;; dieses file enthaelt die event loop + startup funktionen
- ;;; + code fuer baricon
- ;;;
-
- ;;; *** lade alle von ledit benoetigten files ***
- (use "support")
- (use "text")
- (use "lispmode")
-
- ;;; *** globale variablen ***
- (define *ledit-version* "0.1 [35]")
-
- ;; im moment gibt es nur einen mode und eine clickproc
- (define *ledit-clicproc* lisp-new-editor-window)
-
- ;; im moment gibt es nur einen mode und eine loadproc
- (define *ledit-loadproc* text-load-dragged-file)
-
- ;; im moment gibt es nur einen mode und eine dataopenproc
- (define *ledit-dataopenproc* text-dataopen-proc)
-
-
- ;;; *** baricon menu ***
-
- (define baricon-menu
- (menu-new "lEdit" ">Info,Quit"))
-
- (define (baricon-menu-handler item handle)
- (cond
- ((menu-item item 1) (show-proginfo))
- ((menu-item item 2) (ledit-quit))
- (else (ierr "unkown baricon menu entry"))))
-
- ;;; ** routinen zur behandlung der baricon menu eintraege **
-
- ;; verlasse ledit
- (define (ledit-quit)
- (if (ledit-query-quit)
- (exit)))
-
- ;; pruefe ob modifizierte text buffer vorhanden sind
- (define (ledit-query-quit)
- (let ((n (text-modified-buffers)))
- (if n
- (let ((msg (if (= n 1)
- "1 file modified"
- (string-concat n " files modified")))
- (field (dbox-popup "quit" msg)))
- (cond
- ((= field 0) #t) ; discard
- ((= field 2) #f) ; cancel
- (else #f))) ; otherwise
- #t)))
-
-
- ;; zeige die proginfo dialog box an
- (define (show-proginfo)
- (let ((d (dbox-new "progInfo")))
- (dbox-setfield d 4 *ledit-version*)
- (dbox-show d)
- (dbox-fillin d)
- (dbox-dispose d)))
-
-
- ;; lade ein file von der command line
- ;; im moment gibt es nur einen mode und einen loader
- (define (ledit-load-cmdline-file filename)
- (lisp-load-file filename))
-
- ;;; *** das eigentliche hauptprogramm ***
-
- ;; initialisiere das wimp toolkit
- (wtk-init "lEdit")
- ;; installiere handler fuer dataopen event
- (wtk-dataopen-handler '(*ledit-dataopenproc*))
- ;; installiere den handler fuer prequit event
- (wtk-prequit-handler '(if (ledit-query-quit) '(exit) #f))
- ;; initialisiere den flex memory manager
- ;; dies wird vom txt modul benoetigt.
- (flex-init)
- ;; setze die environment variable fuer ledit
- (txtopt-set-name "lEdit")
- ;; initialisiere das txt modul
- (txt-init)
-
- ;; installiere icon auf der icon bar
- (baricon "!lEdit"
- clickproc: '(*ledit-clicproc*)
- loadproc: '(*ledit-loadproc*)
- menu: baricon-menu
- menu-handler: baricon-menu-handler
- menu-handle: nil)
-
-
- ;; ueberpruefe die command line ob ein file geladen werden muss
- (if (> (length *cmdline-args*) 0)
- (ledit-load-cmdline-file (symbol->string (car *cmdline-args*))))
-
- ;; starte die main event loop
- (main-event-loop)