Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
88
Task/Window-management/Oz/window-management.oz
Normal file
88
Task/Window-management/Oz/window-management.oz
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
declare
|
||||
[QTk] = {Module.link ['x-oz://system/wp/QTk.ozf']}
|
||||
|
||||
%% The messages that can be sent to the windows.
|
||||
WindowActions =
|
||||
[hide show close
|
||||
iconify deiconify
|
||||
maximize restore
|
||||
set(minsize:minsize(width:400 height:400))
|
||||
set(minsize:minsize(width:200 height:200))
|
||||
set(geometry:geometry(x:0 y:0))
|
||||
set(geometry:geometry(x:500 y:500))
|
||||
]
|
||||
|
||||
%% Two windows, still uninitialized.
|
||||
Windows = windows(window1:_
|
||||
window2:_)
|
||||
|
||||
fun {CreateWindow}
|
||||
Message = {NewCell WindowActions.1}
|
||||
ReceiverName = {NewCell {Arity Windows}.1}
|
||||
fun {ButtonText}
|
||||
"Send"#" "#{ValueToString @Message}#" to "#@ReceiverName
|
||||
end
|
||||
Button
|
||||
Desc =
|
||||
td(title:"Window Management"
|
||||
lr(listbox(init:{Arity Windows}
|
||||
glue:nswe
|
||||
tdscrollbar:true
|
||||
actionh:proc {$ W}
|
||||
ReceiverName := {GetSelected W}
|
||||
{Button set(text:{ButtonText})}
|
||||
end
|
||||
)
|
||||
listbox(init:{Map WindowActions ValueToString}
|
||||
glue:nswe
|
||||
tdscrollbar:true
|
||||
actionh:proc {$ A}
|
||||
Message := {GetSelected A}
|
||||
{Button set(text:{ButtonText})}
|
||||
end
|
||||
)
|
||||
glue:nswe
|
||||
)
|
||||
button(text:{ButtonText}
|
||||
glue:we
|
||||
handle:Button
|
||||
action:proc {$}
|
||||
{Windows.@ReceiverName @Message}
|
||||
end
|
||||
)
|
||||
)
|
||||
Window = {Extend {QTk.build Desc}}
|
||||
in
|
||||
{Window show}
|
||||
Window
|
||||
end
|
||||
|
||||
%% Adds two methods to a toplevel instance.
|
||||
%% For maximize and restore we have to interact directly with Tk
|
||||
%% because that functionality is not part of the QTk library.
|
||||
fun {Extend Toplevel}
|
||||
proc {$ A}
|
||||
case A of maximize then
|
||||
{Tk.send wm(state Toplevel zoomed)}
|
||||
[] restore then
|
||||
{Tk.send wm(state Toplevel normal)}
|
||||
else
|
||||
{Toplevel A}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
%% Returns the current entry of a listbox
|
||||
%% as an Oz value.
|
||||
fun {GetSelected LB}
|
||||
Entries = {LB get($)}
|
||||
Index = {LB get(firstselection:$)}
|
||||
in
|
||||
{Compiler.virtualStringToValue {Nth Entries Index}}
|
||||
end
|
||||
|
||||
fun {ValueToString V}
|
||||
{Value.toVirtualString V 100 100}
|
||||
end
|
||||
in
|
||||
{Record.forAll Windows CreateWindow}
|
||||
Loading…
Add table
Add a link
Reference in a new issue