198 lines
5.8 KiB
Plaintext
198 lines
5.8 KiB
Plaintext
; simple frame with editable name on the upper right corner, and icon to left
|
|
; ===========================================================================
|
|
|
|
;;File: simple-ed-win.gwm -- simple frame for xterm
|
|
;;Author: colas@mirsa.inria.fr (Colas NAHABOO) -- Bull Research FRANCE
|
|
;;Revision: 1.6 -- May 22 1990
|
|
;;GWM Version: 1.5
|
|
|
|
(defaults-to
|
|
simple-ed-win.borderwidth 5
|
|
simple-ed-win.font name-font
|
|
simple-ed-win.active darkgrey
|
|
simple-ed-win.inactive grey
|
|
simple-ed-win.label.background white
|
|
simple-ed-win.label.foreground black
|
|
edit-keys.return "Return"
|
|
edit-keys.backspace "BackSpace"
|
|
edit-keys.delete "Delete"
|
|
|
|
simple-ed-win.context (list
|
|
'borderwidth simple-ed-win.borderwidth
|
|
'font simple-ed-win.font
|
|
'active simple-ed-win.active
|
|
'inactive simple-ed-win.inactive
|
|
'background simple-ed-win.label.background
|
|
'foreground simple-ed-win.label.foreground
|
|
)
|
|
)
|
|
|
|
(: iconify-fsm
|
|
(fsm-make
|
|
(state-make
|
|
(on (buttonpress action-button any)
|
|
(with (mouse-pos ())
|
|
(move-window window-icon (current-event-x) (current-event-y))
|
|
(map-window window-icon)
|
|
(setq window window-icon)
|
|
(raise-window)
|
|
(move-window)
|
|
(unmap-window window-window)))
|
|
(on (buttonrelease select-button any)
|
|
(progn (iconify-window)(raise-window)))
|
|
standard-title-behavior
|
|
standard-behavior
|
|
)))
|
|
|
|
(: icon-plug '(with (borderwidth 1 background simple-ed-win.label.background
|
|
foreground simple-ed-win.label.foreground
|
|
borderpixel background fsm iconify-fsm)
|
|
(plug-make icon-pixmap)))
|
|
|
|
(defun update-icon (update-icon.title)
|
|
(if (window-icon?)
|
|
(send-user-event 'get-title (window-icon))))
|
|
|
|
(: edit-fsm
|
|
(fsm-make
|
|
(: sed.edit-fsm.normal
|
|
(state-make
|
|
(on (double-button any any)
|
|
(progn
|
|
(set-focus wob)
|
|
(wob-background simple-ed-win.label.foreground)
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile
|
|
(active-label-make
|
|
(# 'title wob) simple-ed-win.font))))
|
|
sed.edit-fsm.editable)
|
|
(on (button any (together with-alt with-control))
|
|
(progn
|
|
(set-focus wob)
|
|
(wob-background simple-ed-win.label.foreground)
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile
|
|
(active-label-make
|
|
(# 'title wob) simple-ed-win.font))))
|
|
sed.edit-fsm.editable)
|
|
(on (user-event 'name-change)
|
|
(progn
|
|
(## 'title wob (: s window-name))
|
|
(with (background simple-ed-win.label.background
|
|
foreground simple-ed-win.label.foreground)
|
|
(wob-tile (active-label-make s simple-ed-win.font)))
|
|
))
|
|
standard-title-behavior
|
|
standard-behavior
|
|
))
|
|
(: sed.edit-fsm.editable
|
|
(state-make
|
|
(on (keypress (key-make edit-keys.return) any)
|
|
(sed.edit-fsm.de-edit t)
|
|
sed.edit-fsm.normal)
|
|
(on (double-button any any)
|
|
(sed.edit-fsm.de-edit t)
|
|
sed.edit-fsm.normal)
|
|
(on (keypress edit-keys.backspace any)
|
|
(progn
|
|
(## 'title wob
|
|
(if (: s (match "\\(.*\\)."
|
|
(# 'title wob) 1))
|
|
s
|
|
(setq s "")))
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile (active-label-make s simple-ed-win.font)))
|
|
))
|
|
(on (keypress edit-keys.delete any)
|
|
(progn
|
|
(## 'title wob (: s ""))
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile (active-label-make s simple-ed-win.font)))
|
|
))
|
|
(on (keypress any any)
|
|
(progn
|
|
(## 'title wob
|
|
(: s (+ (# 'title wob) (last-key))))
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile (active-label-make s simple-ed-win.font)))
|
|
))
|
|
(on (user-event 'name-change)
|
|
(progn
|
|
(## 'title wob (: s window-name))
|
|
(with (foreground simple-ed-win.label.background)
|
|
(wob-tile (active-label-make s simple-ed-win.font)))
|
|
))
|
|
(on focus-out
|
|
(sed.edit-fsm.de-edit ())
|
|
sed.edit-fsm.normal)
|
|
standard-title-behavior
|
|
standard-behavior
|
|
))
|
|
))
|
|
|
|
(de sed.edit-fsm.de-edit (set-focus?)
|
|
(wob-background simple-ed-win.label.background)
|
|
(wob-tile (label-make (# 'title wob) simple-ed-win.font))
|
|
(set-x-property "WM_NAME" (# 'title wob))
|
|
(set-x-property "WM_ICON_NAME" (# 'title wob))
|
|
(update-icon (# 'title wob))
|
|
(if set-focus?
|
|
(set-focus)))
|
|
|
|
(: titlebar-fsm
|
|
(fsm-make
|
|
(state-make
|
|
(on (user-event 'focus-in) (wob-background simple-ed-win.active))
|
|
(on (user-event 'focus-out) (wob-background simple-ed-win.inactive))
|
|
standard-title-behavior
|
|
standard-behavior)))
|
|
|
|
(: editable-plug '(with (borderwidth 1 background
|
|
simple-ed-win.label.background font simple-ed-win.font
|
|
property (list 'title window-name) fsm edit-fsm)
|
|
(plug-make (label-make window-name))))
|
|
|
|
(: titlebar (: my-title-bar
|
|
(with (borderwidth 1 background simple-ed-win.inactive
|
|
fsm titlebar-fsm
|
|
borderpixel simple-ed-win.label.foreground
|
|
)
|
|
(bar-make icon-plug () editable-plug))))
|
|
|
|
(: sed-window-fsm
|
|
(fsm-make
|
|
(state-make
|
|
(on focus-in
|
|
(progn
|
|
(if autoraise (raise-window))
|
|
(send-user-event 'focus-in)
|
|
(wob-borderpixel simple-ed-win.active)))
|
|
(on focus-out
|
|
(progn (send-user-event 'focus-out)
|
|
(wob-borderpixel simple-ed-win.inactive)))
|
|
(if (and (boundp 'emacs-mouse-loaded) emacs-mouse-loaded)
|
|
(state-make
|
|
(on (button 1 with-control) (emacs-click 1))
|
|
(on (button 2 with-control) (emacs-click 2))
|
|
(on (buttonpress 3 with-control)
|
|
(std-pop-menu emacs-pop))))
|
|
window-behavior
|
|
standard-behavior
|
|
)))
|
|
|
|
|
|
(: simple-ed-win.result '(with (inner-borderwidth 1 fsm sed-window-fsm
|
|
borderwidth simple-ed-win.borderwidth
|
|
borderpixel simple-ed-win.inactive
|
|
grabs (+ window-grabs
|
|
(if (and (boundp 'emacs-mouse-loaded)
|
|
emacs-mouse-loaded)
|
|
(list (button any with-control)))))
|
|
(window-make titlebar () () () ())))
|
|
|
|
(defname 'simple-ed-win.data screen. ())
|
|
(df simple-ed-win () (if simple-ed-win.data simple-ed-win.data
|
|
(: simple-ed-win.data (eval simple-ed-win.result))))
|
|
|
|
|