Generic_Window_Manager/data/cutewin.gwm

368 lines
12 KiB
Plaintext

; Frame with name on the right
; Iconify, Maximise, Close and Stayontop buttons on the left
; This is my first attempt at writing a gwm window decoration
; ===========================================================================
;;File: cutewin.gwm
;;Author: Sundar Ranganathan - Techlead Corporation Inc.
;;Credit: Colas Nahaboo - Generously borrowed from Colas' simple-ed-win.gwm
;;GWM Version: 1.8c
(defaults-to
cutewin.borderwidth 3
cutewin.font (font-make "-*-clean-bold-*-*-*-16-*-*-*-*-*-*-*")
cutewin.active darkgrey
cutewin.inactive grey
cutewin.label.background (color-make 'navyblue)
cutewin.label.foreground white
edit-keys.return "Return"
edit-keys.backspace "BackSpace"
edit-keys.delete "Delete"
cutewin.context (list
'borderwidth cutewin.borderwidth
'font cutewin.font
'active cutewin.active
'inactive cutewin.inactive
'background cutewin.label.background
'foreground cutewin.label.foreground
)
)
(: cutewin.maximise-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "maximise_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "maximise.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(progn (resize-window screen-width screen-height) (move-window 0 0))
))))
standard-title-behavior
standard-behavior
)))
(: cutewin.close-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "close_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "close.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(delete-window))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.kill-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "kill_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "kill.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(kill-window))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.iconise-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "iconise_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "iconise.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(progn (iconify-window)(raise-window)))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.inform-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "inform_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "inform.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(print-window-info))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.stayontop-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "stayontop_pressed.xpm")))
(on (buttonpress 2 any)
(wob-pixmap (pixmap-load "stayonbottom_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "stayontop.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(float.toggle 'up))
)))
(on (buttonrelease 2 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "stayontop.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(float.toggle 'down))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.staynormal-fsm
(fsm-make
(state-make
(on (buttonpress 1 any)
(wob-pixmap (pixmap-load "staynormal_pressed.xpm")))
(on (buttonrelease 1 any)
(with (cerx (current-event-relative-x)
cery (current-event-relative-y))
(progn
(wob-pixmap (pixmap-load "staynormal.xpm"))
(if (and (> cerx 0) (> cery 0) (< cerx wob-width) (< cery wob-height))
(float.toggle ()))
)))
standard-title-behavior
standard-behavior
)))
(: cutewin.size-fsm
(fsm-make
(state-make
(on (user-event 'resize)
(wob-tile (label-make (+ "Width: " (itoa window-width) " Height: " (itoa window-height)) cutewin.font )))
standard-title-behavior
standard-behavior
)))
(: cutewin.position-fsm
(fsm-make
(state-make
(on (user-event 'windowmove)
(wob-tile (label-make (+ "X: " (itoa window-x) " Y: " (itoa window-y)) cutewin.font )))
standard-title-behavior
standard-behavior
)))
(: cutewin.titleplug-fsm
(fsm-make
(state-make
(on (user-event 'name-change)
(with (foreground cutewin.label.foreground)
(wob-tile (active-label-make window-name cutewin.font))))
)))
(: cutewin.close-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.close-fsm)
(plug-make (pixmap-load "close.xpm"))))
(: cutewin.kill-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.kill-fsm)
(plug-make (pixmap-load "kill.xpm"))))
(: cutewin.maximise-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.maximise-fsm)
(plug-make (pixmap-load "maximise.xpm"))))
(: cutewin.iconise-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.iconise-fsm)
(plug-make (pixmap-load "iconise.xpm"))))
(: cutewin.inform-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.inform-fsm)
(plug-make (pixmap-load "inform.xpm"))))
(: cutewin.stayontop-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.stayontop-fsm)
(plug-make (pixmap-load "stayontop.xpm"))))
(: cutewin.staynormal-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
cursor
(with (background (color-make 'DeepPink)
foreground (color-make 'yellow))
(cursor-make XC_hand2)
)
borderpixel background fsm cutewin.staynormal-fsm)
(plug-make (pixmap-load "staynormal.xpm"))))
(: cutewin.title-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
font cutewin.font
borderpixel background fsm cutewin.titleplug-fsm)
(plug-make '(label-make window-name cutewin.font))))
(: cutewin.size-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
font cutewin.font
borderpixel background fsm cutewin.size-fsm)
(plug-make '(label-make (+ "Width: " (itoa window-width) " Height: " (itoa window-height)) cutewin.font ))))
(: cutewin.position-plug
'(with (borderwidth 0 background cutewin.label.background
foreground cutewin.label.foreground
font cutewin.font
borderpixel background fsm cutewin.position-fsm)
(plug-make '(label-make (+ "X: " (itoa window-x) " Y: " (itoa window-y)) cutewin.font ))))
(defun update-icon (update-icon.title)
(if (window-icon?)
(send-user-event 'get-title (window-icon))))
(: cutewin.titlebar-fsm
(fsm-make
(state-make
(on (user-event 'focus-in) (wob-background cutewin.active))
(on (user-event 'focus-out) (wob-background cutewin.inactive))
standard-title-behavior
standard-behavior)))
(: cutewin.titlebar
(with (borderwidth 1 background cutewin.inactive
fsm cutewin.titlebar-fsm
plug-separator 1
borderpixel cutewin.label.foreground
)
(bar-make () cutewin.title-plug ())))
(: cutewin.rightbar
(with (borderwidth 1 background cutewin.inactive
fsm cutewin.titlebar-fsm
plug-separator 1
borderpixel cutewin.label.foreground
)
(bar-make cutewin.inform-plug cutewin.iconise-plug cutewin.maximise-plug
cutewin.stayontop-plug cutewin.staynormal-plug cutewin.close-plug
() cutewin.kill-plug)))
(: cutewin.bottombar
(with (borderwidth 1 background cutewin.inactive
fsm cutewin.titlebar-fsm
plug-separator 1
borderpixel cutewin.label.foreground
)
(bar-make cutewin.size-plug () cutewin.position-plug)))
(: cutewin.result '(with (inner-borderwidth 1 fsm cutewin.window-fsm
borderwidth cutewin.borderwidth
borderpixel cutewin.inactive)
; grabs (+ window-grabs
; (if (and (boundp 'emacs-mouse-loaded)
; emacs-mouse-loaded)
; (list (button any with-control)))))
(window-make cutewin.titlebar () cutewin.rightbar
cutewin.bottombar ())))
(defname 'cutewin.data screen. ())
(df cutewin () (if cutewin.data cutewin.data
(: cutewin.data (eval cutewin.result))))
(: cutewin.window-fsm
(fsm-make
(state-make
(on focus-in
(progn
(if autoraise (raise-window))
(send-user-event 'focus-in)
(wob-borderpixel cutewin.active)))
(on focus-out
(progn (send-user-event 'focus-out)
(wob-borderpixel cutewin.inactive)))
window-behavior
standard-behavior
)))
(if (not (boundp 'cutewin-move-window-orig))
(progn
(: cutewin-move-window-orig move-window)
(defun move-window args
(eval (+ (list 'cutewin-move-window-orig) args))
(send-user-event 'windowmove))
))
(if (not (boundp 'cutewin-resize-window-orig))
(progn
(: cutewin-resize-window-orig resize-window)
(defun resize-window args
(eval (+ (list 'cutewin-resize-window-orig) args))
(send-user-event 'resize))
))