blob: a47d7c6dd31aa50bbad45d846d0404e847dfe8d9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# META NAME Kiosk
# META DESCRIPTION all windows in fullscreen mode
# META DESCRIPTION main window invisible
# META DESCRIPTION no keybindings
# META AUTHOR IOhannes m zmölnig <zmoelnig@iem.at>
package require Tcl 8.5
package require Tk
package require pdwindow 0.1
namespace eval ::kiosk:: {
variable ::kiosk::config
}
## default values
set ::kiosk::config(KioskNewWindow) False
set ::kiosk::config(ShowMenu) False
set ::kiosk::config(FullScreen) False
set ::kiosk::config(HideMain) True
set ::kiosk::config(WindowTitle) "Pd KIOSK"
set ::kiosk::config(HidePopup) True
set ::kiosk::config(ScrollBars) False
proc ::kiosk::readconfig {{fname kiosk.cfg}} {
if {[file exists $fname]} {
set fp [open $fname r]
} else {
return False
}
while {![eof $fp]} {
set data [gets $fp]
set ::kiosk::config([lindex $data 0]) [lindex $data 1]
}
return True
}
# this is just an empty menu
menu .kioskmenu
## KIOSkify a window
proc ::kiosk::makekiosk {mywin} {
## refuse to kioskify the main Pd window
if { $mywin == ".pdwindow" } { return; }
puts "KIOSKing $mywin"
#puts "makekiosk $mywin"
#remove menu
if { $::kiosk::config(ShowMenu) } { } {
$mywin configure -menu .kioskmenu;
}
# make fullscreen
if { $::kiosk::config(FullScreen) } {
wm attributes $mywin -fullscreen 1
}
# set the title of the window
# (makes mostly sense in non-fullscren...)
if { $::kiosk::config(WindowTitle) != "" } {
wm title $mywin $::kiosk::config(WindowTitle)
}
}
######################################
## read the default configuration file "kiosk.cfg"
::kiosk::readconfig
###### do some global KIOSK-settings
## hide the Pd window
if { $::kiosk::config(HideMain) } {
set ::stderr 1
wm state .pdwindow withdraw
}
## don't show popup menu on right-click
if { $::kiosk::config(HidePopup) } {
proc ::pdtk_canvas::pdtk_canvas_popup {mytoplevel xcanvas ycanvas hasproperties hasopen} { }
}
if { $::kiosk::config(ScrollBars) } { } {
proc ::pdtk_canvas::pdtk_canvas_getscroll {tkcanvas} { }
}
# do the KIOSK-setting per existing window (those windows loaded at startup)
foreach kioskwin [array names ::loaded] {
::kiosk::makekiosk $kioskwin
}
# do the KIOSKification for newly created windows as well
if { $::kiosk::config(KioskNewWindow) } {
## not the most elegant way: KIOSKifying each window as it get's focus
bind PatchWindow <FocusIn> {
::kiosk::makekiosk %W;
}
}
|