all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
6
Task/Window-management/0DESCRIPTION
Normal file
6
Task/Window-management/0DESCRIPTION
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Treat windows or at least window identities as [[wp:First-class_object|first class objects]].
|
||||
|
||||
*Store window identities in variables, compare them for equality.
|
||||
*Provide examples of performing some of the following:
|
||||
**hide, show, close, minimize, maximize, move, and resize a window.
|
||||
The window of interest may or may not have been created by your program.
|
||||
2
Task/Window-management/1META.yaml
Normal file
2
Task/Window-management/1META.yaml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
note: GUI
|
||||
21
Task/Window-management/AutoHotkey/window-management.ahk
Normal file
21
Task/Window-management/AutoHotkey/window-management.ahk
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
F1:: ;; when user hits the F1 key, do the following
|
||||
WinGetTitle, window, A ; get identity of active window into a variable
|
||||
WinMove, %window%, , 100, 100, 800, 800 ; move window to coordinates, 100, 100
|
||||
; and change size to 800 x 800 pixels
|
||||
sleep, 2000
|
||||
WinHide, % window ; hide window
|
||||
TrayTip, hidden, window is hidden, 2
|
||||
sleep, 2000
|
||||
WinShow, % window ; show window again
|
||||
loop,
|
||||
{
|
||||
inputbox, name, what was the name of your window?
|
||||
if (name = window) ; compare window variables for equality
|
||||
{
|
||||
msgbox you got it
|
||||
break
|
||||
}
|
||||
; else try again
|
||||
}
|
||||
WinClose, % window
|
||||
return
|
||||
38
Task/Window-management/BBC-BASIC/window-management.bbc
Normal file
38
Task/Window-management/BBC-BASIC/window-management.bbc
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
SWP_NOMOVE = 2
|
||||
SWP_NOZORDER = 4
|
||||
SW_MAXIMIZE = 3
|
||||
SW_MINIMIZE = 6
|
||||
SW_RESTORE = 9
|
||||
SW_HIDE = 0
|
||||
SW_SHOW = 5
|
||||
|
||||
REM Store window handle in a variable:
|
||||
myWindowHandle% = @hwnd%
|
||||
|
||||
PRINT "Hiding the window in two seconds..."
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_HIDE
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_SHOW
|
||||
PRINT "Windows shown again."
|
||||
|
||||
PRINT "Minimizing the window in two seconds..."
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_MINIMIZE
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_RESTORE
|
||||
PRINT "Maximizing the window in two seconds..."
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_MAXIMIZE
|
||||
WAIT 200
|
||||
SYS "ShowWindow", myWindowHandle%, SW_RESTORE
|
||||
PRINT "Now restored to its normal size."
|
||||
|
||||
PRINT "Resizing the window in two seconds..."
|
||||
WAIT 200
|
||||
SYS "SetWindowPos", myWindowHandle%, 0, 0, 0, 400, 200, \
|
||||
\ SWP_NOMOVE OR SWP_NOZORDER
|
||||
|
||||
PRINT "Closing the window in two seconds..."
|
||||
WAIT 200
|
||||
QUIT
|
||||
10
Task/Window-management/HicEst/window-management.hicest
Normal file
10
Task/Window-management/HicEst/window-management.hicest
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
CHARACTER title="Rosetta Window_management"
|
||||
REAL :: w=-333, h=25, x=1, y=0.5 ! pixels < 0, relative window size 0...1, script character size > 1
|
||||
|
||||
WINDOW(WINdowhandle=wh, Width=w, Height=h, X=x, Y=y, TItle=title) ! create, on return size/pos VARIABLES are set to script char
|
||||
WINDOW(WIN=wh, MINimize) ! minimize
|
||||
WINDOW(WIN=wh, SHowNormal) ! restore
|
||||
WINDOW(WIN=wh, X=31, Y=7+4) !<-- move upper left here (col 31, row 7 + ~4 rows for title, menus, toolbar. Script window in upper left screen)
|
||||
WINDOW(WIN=wh, MAXimize) ! maximize (hides the script window)
|
||||
WINDOW(Kill=wh) ! close
|
||||
END
|
||||
53
Task/Window-management/Icon/window-management.icon
Normal file
53
Task/Window-management/Icon/window-management.icon
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
link graphics
|
||||
|
||||
procedure main()
|
||||
|
||||
Delay := 3000
|
||||
|
||||
W1 := open("Window 1","g","resize=on","size=400,400","pos=100,100","bg=black","fg=red") |
|
||||
stop("Unbale to open window 1")
|
||||
W2 := open("Window 2","g","resize=on","size=400,400","pos=450,450","bg=blue","fg=yellow") |
|
||||
stop("Unbale to open window 2")
|
||||
W3 := open("Window 3","g","resize=on","size=400,400","pos=600,150","bg=orange","fg=black") |
|
||||
stop("Unbale to open window 3")
|
||||
WWrite(W3,"Opened three windows")
|
||||
|
||||
WWrite(W3,"Window 1&2 with rectangles")
|
||||
every Wx := W1 | W2 | W3 do
|
||||
if Wx ~=== W3 then
|
||||
FillRectangle(Wx,50,50,100,100)
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 1 rasied")
|
||||
Raise(W1)
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 hidden")
|
||||
WAttrib(W2,"canvas=hidden")
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 maximized")
|
||||
WAttrib(W2,"canvas=maximal")
|
||||
Raise(W3)
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 restored & resized")
|
||||
WAttrib(W2,"canvas=normal")
|
||||
WAttrib(W2,"size=600,600")
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 moveded")
|
||||
WAttrib(W2,"posx=700","posy=300")
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 minimized")
|
||||
WAttrib(W2,"canvas=iconic")
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Window 2 restored")
|
||||
WAttrib(W2,"canvas=normal") # restore as maximal, possible bug
|
||||
|
||||
delay(Delay)
|
||||
WWrite(W3,"Enter Q or q here to quit")
|
||||
WDone(W3)
|
||||
end
|
||||
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}
|
||||
40
Task/Window-management/PicoLisp/window-management.l
Normal file
40
Task/Window-management/PicoLisp/window-management.l
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
$ ersatz/pil +
|
||||
: (setq
|
||||
JFrame "javax.swing.JFrame"
|
||||
MAXIMIZED_BOTH (java (public JFrame 'MAXIMIZED_BOTH))
|
||||
ICONIFIED (java (public JFrame 'ICONIFIED))
|
||||
Win (java JFrame T "Window") )
|
||||
-> $JFrame
|
||||
|
||||
# Compare for equality
|
||||
: (== Win Win)
|
||||
-> T
|
||||
|
||||
# Set window visible
|
||||
(java Win 'setLocation 100 100)
|
||||
(java Win 'setSize 400 300)
|
||||
(java Win 'setVisible T)
|
||||
|
||||
# Hide window
|
||||
(java Win 'hide)
|
||||
|
||||
# Show again
|
||||
(java Win 'setVisible T)
|
||||
|
||||
# Move window
|
||||
(java Win 'setLocation 200 200)
|
||||
|
||||
# Iconify window
|
||||
(java Win 'setExtendedState
|
||||
(| (java (java Win 'getExtendedState)) ICONIFIED) )
|
||||
|
||||
# De-conify window
|
||||
(java Win 'setExtendedState
|
||||
(& (java (java Win 'getExtendedState)) (x| (hex "FFFFFFFF") ICONIFIED)) )
|
||||
|
||||
# Maximize window
|
||||
(java Win 'setExtendedState
|
||||
(| (java (java Win 'getExtendedState)) MAXIMIZED_BOTH) )
|
||||
|
||||
# Close window
|
||||
(java Win 'dispose)
|
||||
60
Task/Window-management/PureBasic/window-management.purebasic
Normal file
60
Task/Window-management/PureBasic/window-management.purebasic
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
;- Create a linked list to store created windows.
|
||||
NewList Windows()
|
||||
Define i, j, dh, dw, flags, err$, x, y
|
||||
|
||||
;- Used sub-procedure to simplify the error handling
|
||||
Procedure HandleError(Result, Text.s,ErrorLine=0,ExitCode=0)
|
||||
If Not Result
|
||||
MessageRequester("Error",Text)
|
||||
End ExitCode
|
||||
EndIf
|
||||
ProcedureReturn Result
|
||||
EndProcedure
|
||||
|
||||
;- Window handling procedures
|
||||
Procedure Minimize(window)
|
||||
SetWindowState(window,#PB_Window_Minimize)
|
||||
EndProcedure
|
||||
|
||||
Procedure Normalize(window)
|
||||
SetWindowState(window,#PB_Window_Normal)
|
||||
EndProcedure
|
||||
|
||||
;- Get enviroment data
|
||||
HandleError(ExamineDesktops(), "Failed to examine you Desktop.")
|
||||
dh=HandleError(DesktopHeight(0),"Could not retrieve DesktopHight")/3
|
||||
dw=HandleError(DesktopWidth(0), "Could not retrieve DesktopWidth")/3
|
||||
|
||||
;- Now, creating 9 windows
|
||||
flags=#PB_Window_SystemMenu
|
||||
err$="Failed to open Window"
|
||||
For i=0 To 8
|
||||
j=HandleError(OpenWindow(#PB_Any,i*10,i*10+30,10,10,Str(i),flags),err$)
|
||||
SmartWindowRefresh(j, 1)
|
||||
AddElement(Windows())
|
||||
Windows()=j
|
||||
Next i
|
||||
Delay(1000)
|
||||
|
||||
;- Call a sub-routine for each Window stored in the list.
|
||||
ForEach Windows()
|
||||
Minimize(Windows())
|
||||
Next
|
||||
Delay(1000)
|
||||
;- and again
|
||||
ForEach Windows()
|
||||
Normalize(Windows())
|
||||
Next
|
||||
Delay(1000)
|
||||
|
||||
;- Spread them evenly
|
||||
ForEach Windows()
|
||||
ResizeWindow(Windows(),x*dw,y*dh,dw-15,dh-35)
|
||||
x+1
|
||||
If x>2
|
||||
x=0: y+1
|
||||
EndIf
|
||||
Next
|
||||
Delay(2000)
|
||||
|
||||
End
|
||||
32
Task/Window-management/Python/window-management.py
Normal file
32
Task/Window-management/Python/window-management.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
from tkinter import *
|
||||
import tkinter.messagebox
|
||||
|
||||
def maximise():
|
||||
"""get screenwidth and screenheight, and resize window to that size.
|
||||
Also move to 0,0"""
|
||||
root.geometry("{}x{}+{}+{}".format(root.winfo_screenwidth(), root.winfo_screenheight(), 0, 0))
|
||||
|
||||
def minimise():
|
||||
"""Iconify window to the taskbar. When reopened, the window is
|
||||
unfortunately restored to its original state, NOT its most recent state."""
|
||||
root.iconify()
|
||||
|
||||
def delete():
|
||||
"""create a modal dialog. If answer is "OK", quit the program"""
|
||||
if tkinter.messagebox.askokcancel("OK/Cancel","Are you sure?"):
|
||||
root.quit()
|
||||
|
||||
root = Tk()
|
||||
|
||||
mx=Button(root,text="maximise",command=maximise)
|
||||
mx.grid()
|
||||
mx.bind(maximise)
|
||||
|
||||
mn=Button(root,text="minimise",command=minimise)
|
||||
mn.grid()
|
||||
mn.bind(minimise)
|
||||
|
||||
#catch exit events, including "X" on title bar.
|
||||
root.protocol("WM_DELETE_WINDOW",delete)
|
||||
|
||||
mainloop()
|
||||
62
Task/Window-management/Tcl/window-management.tcl
Normal file
62
Task/Window-management/Tcl/window-management.tcl
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
package require Tk
|
||||
|
||||
# How to open a window
|
||||
proc openWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
# Already existing; just reset
|
||||
wm deiconify $win
|
||||
wm state $win normal
|
||||
return
|
||||
}
|
||||
catch {destroy $win} ;# Squelch the old one
|
||||
set win [toplevel .t]
|
||||
pack [label $win.label -text "This is the window being manipulated"] \
|
||||
-fill both -expand 1
|
||||
}
|
||||
# How to close a window
|
||||
proc closeWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
destroy $win
|
||||
}
|
||||
}
|
||||
# How to minimize a window
|
||||
proc minimizeWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
wm state $win iconic
|
||||
}
|
||||
}
|
||||
# How to maximize a window
|
||||
proc maximizeWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
wm state $win zoomed
|
||||
catch {wm attribute $win -zoomed 1} ;# Hack for X11
|
||||
}
|
||||
}
|
||||
# How to move a window
|
||||
proc moveWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
scan [wm geometry $win] "%dx%d+%d+%d" width height x y
|
||||
wm geometry $win +[incr x 10]+[incr y 10]
|
||||
}
|
||||
}
|
||||
# How to resize a window
|
||||
proc resizeWin {} {
|
||||
global win
|
||||
if {[info exists win] && [winfo exists $win]} {
|
||||
scan [wm geometry $win] "%dx%d+%d+%d" width height x y
|
||||
wm geometry $win [incr width 10]x[incr height 10]
|
||||
}
|
||||
}
|
||||
|
||||
grid [label .l -text "Window handle:"] [label .l2 -textvariable win]
|
||||
grid [button .b1 -text "Open/Reset" -command openWin] -
|
||||
grid [button .b2 -text "Close" -command closeWin] -
|
||||
grid [button .b3 -text "Minimize" -command minimizeWin] -
|
||||
grid [button .b4 -text "Maximize" -command maximizeWin] -
|
||||
grid [button .b5 -text "Move" -command moveWin] -
|
||||
grid [button .b6 -text "Resize" -command resizeWin] -
|
||||
Loading…
Add table
Add a link
Reference in a new issue