Window management: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Fixed lang tags.)
No edit summary
Line 96: Line 96:
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have windows. -->
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have windows. -->
{{omit from|M4}}
{{omit from|M4}}
{{omit from|PHP}} <!-- PHP cannot create windows by itself -->

Revision as of 18:36, 6 December 2009

Task
Window management
You are encouraged to solve this task according to the task description, using any language you may know.

Treat windows or at least window identities as 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.

AutoHotkey

<lang AutoHotkey>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</lang>

Tcl

Library: Tk

<lang tcl>package require Tk

  1. 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

}

  1. How to close a window

proc closeWin {} {

   global win
   if {[info exists win] && [winfo exists $win]} {
       destroy $win
   }

}

  1. How to minimize a window

proc minimizeWin {} {

   global win
   if {[info exists win] && [winfo exists $win]} {
       wm state $win iconic
   }

}

  1. 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
   }

}

  1. 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]
   }

}

  1. 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] -</lang>