PCE version 4C man_modulenamespaceid_tablemodified current_idOIxN class/frameN referenceC hash_tablerefersizeOIxNbothIdsNM.frame.S.hideCman_method_card identifiermodule last_modifiednamesummary descriptionsee_alsoinherit diagnosticsdefaultsbugsOIxNM.frame.S.hideRICdateOIx*§feNhidenCstringOIxURequests the window manager to put this frame below all other windows on the display.CchainsizeOIxIENM.frame.S.hiddenXnnnnsNM.frame.S.unlinkOIxNM.frame.S.unlinkRIOIx*§{¸NunlinknOI xsRemoves frame and all member windows. Possible transient windows related to this window are send a ->free message.OI xIENM.frame.S.transient_forXnnnnsNM.frame.S.bellOI xNM.frame.S.bellRIOI x*§K,NbellnOI x>Rings the bell on the display on which the frame is displayed.OIxIeN$class/display$R.display.volumeEN$class/display$M.display.S.bellXnnnnsNM.frame.S.input_windowOIxNM.frame.S.input_windowRIOIx0µ­—N input_windownOIx¹All keyboard input arriving on this frame will be redirected to the indicated window. This is appropriate if there is only one window with keyboard-sensitive controls inside the frame.nnnnnsNM.frame.S.busy_cursorOIxNM.frame.S.busy_cursorRIOIx3ŠÝ3N busy_cursornOIxmDefine a temporary cursor for all (sub)windows of this frame. The default cursor is the X11 `watch' cursor. If `block_input' is @on, all mouse and keyboard events are blocked while this cursor is active. ->busy_cursor: @nil restores the original cursor and makes all windows sensitive again. Implemented using the -busy_window. See also `display ->busy_cursor'.nnnnnsNV.frame.wm_protocols_attachedCman_variable_card identifiermodule last_modifiednamesummary descriptionsee_alsoinheritdefaultsOIxNV.frame.wm_protocols_attachedRIOIx*§|wNwm_protocols_attachednOIxA@on if the protocols have been registered with the X-counterpart.OIxIENV.frame.wm_protocolsXnnsNM.frame.S.exposedOIxNM.frame.S.exposedRIOIx0µ¬hNexposednOIxÒInvoked when the window received a `CirculateNotify' event from X, informing the frame that it has been exposed. Sends ->expose to all frames registered as `transient' frames for this frame. May be redefined.OIxIeNM.frame.S.hiddeneNV.frame.transientsENM.frame.S.transient_forXnnnnsNM.frame.G.confirmOIxNM.frame.G.confirmRIOIx2[°NNconfirmnOIxOpens the frame if this has not been done and block until `frame ->return' is invoked. This method is used when the applications wants to wait for input from the user, notably prompters for arguments such as filenames, names, etc. `Point' is the position to open the frame. If `Bool' equals @on all input will be directed to this frame. When @off (default), other windows may still receive input too. `frame <-confirm' is closely connected to `frame ->return: any'. Without the latter, the frame will block infinitely. The frame normally contains one or more buttons that invoke ->return. If the frame is ->free'd while the confirmer is running, this method will return failure. Example: ask_name(Name) :- new(D, dialog('Name Prompter')), send(D, append, new(N, text_item(name, ''))), send(D, append, button(ok, message(D, return, N?selection))), send(D, append, button(cancel, message(D, return, @nil))), send(D, default_button, ok), get(D, confirm, Answer), send(D, destroy), Answer \== @nil, Name = Answer.OI xIeNM.frame.S.returneNV.frame.has_returnedeN $examples$15eNM.frame.G.confirm_centeredEN $class/window$M.window.G.confirmXnnnnsNV.frame.can_deleteOI!xNV.frame.can_deleteRIOI"x*¦> N can_deletenOI#x¼When @off, the frame cannot be deleted by a WM_DELETE_WINDOW request (a request from the X window manager to delete this window, normally issued from a menu at the decoration of the frame.OI$xIeNM.frame.S.wm_deleteeNV.frame.confirm_doneENM.frame.S.wm_protocolXnOI%x4@on (window may be deleted from the window-manager).sNM.frame.S.showOI&xNM.frame.S.showRIOI'x)üOuNshownnOI(xIeN V.frame.showeNM.frame.S.openENM.frame.S.mappedXnnnnsNV.frame.can_resizeOI)xNV.frame.can_resizeRIOI*xcreate'ed informs the frame that the user is not allowed to resize it. BUG: Currently this flag is ignored in the X11 version.nnnsNV.frame.displayOI,xNV.frame.displayRIOI-x*¦A4NdisplaynOI.x^Display on which the frame resides. Changing after the frame has been created is not allowed.nnOI/x@displaysNV.frame.borderOI0xNV.frame.borderRIOI1x*¦=NbordernOI2xyWidth of the surrounding border. This value is updated if the border changes by trapping the X `ConfigureNotify' events.OI3xIeNM.frame.S.borderEN V.frame.areaXnnsNM.frame.S.reportOI4xNM.frame.S.reportRIOI5x0µ¹cNreportnOI6x±A frame is a collection of windows. Many frames have one window (usually a dialog object) that is used to give commands or print feedback messages. This method is a redefinition of `visual ->report'. It performs the following actions: 1) Invoke <-report_to. If this succeeds and returns a value not equal to `frame <-display', invoke ->report on this value. 2) Invoke ->report on each of the <-members windows until it succeeds. Windows by default delegate the ->report message to their frame. This method provides for detecting and breaking loops. 3) If the frame is a transient frame, invoke ->report on <-transient_for. 4) Invoke ->report of super-class (class visual).nnnnnsNM.frame.S.open_centeredOI7xNM.frame.S.open_centeredRIOI8x,}E±N open_centerednOI9x}Similar to `frame ->open', but centers the frame around point. If `center' is omitted the frame is centered on the X-screen.OI:xIeNM.frame.S.openEN&$class/window$M.window.S.open_centeredXnnnnsNM.frame.G.closedOI;xNM.frame.G.closedRIOIxIeNM.frame.S.closedENM.frame.S.icon_labelXnnnnsNM.frame.S.eventOI?xNM.frame.S.eventRIOI@x1FäqNeventnOIAxÌThis method is called to handle methods arriving on the background or decorations of the frame. The default implementation handles two cases: * If the event is a keyboard related event, and a subwindow has the ->input_focus, forward the keyboard event to this window. * If the pointer is on the border between two subwindows, indicate the possibility to resize these. Perform the resizing when the user drags the border with any of the mouse-buttons.nnnnnsN V.frame.kindOIBxN V.frame.kindRIOICx,?9NkindnOIDxCurrent setting of ->kind.OIExIeNM.frame.S.kindeNM.frame.S.show_labelENM.frame.S.transient_forXnnsNM.frame.S.areaOIFxNM.frame.S.areaRIOIGxset: area?x, area?y, area?w, area?h', defining the area of the frame on the display, excluding decorations such as the title-bar and borders. See also <-bounding_box and <->geometry.nnnnnsNM.frame.S.delete_wm_protocolOIIxNM.frame.S.delete_wm_protocolRIOIJx,?,KNdelete_wm_protocolnOIKx@Delete an X window manager protocol attached with ->wm_protocol.OILxIeNM.frame.S.wm_protocolENV.frame.wm_protocolsXnnnnsNV.frame.confirm_doneOIMxNV.frame.confirm_doneRIOINx*¦@žN confirm_donenOIOx7When @on, a prompter is displayed when an attempt is made to delete the window from the window manager. When the user deletes the window through the window manager this invokes `frame ->wm_delete', which behaviour depends on the <->can_delete and <->confirm_done variables. Applicable to toplevel frames only.OIPxIeNR.frame.confirm_doneeNM.frame.S.wm_deleteeNM.frame.S.wm_protocoleNV.frame.can_deleteENV.frame.done_messageXnOIQx@on (ask for conformation)sNM.frame.S.exposeOIRxNM.frame.S.exposeRIOISxGÃô‚NexposenOITx˜Raise a frame to the top of the window stack on the display. `Frame ->expose' first invokes `Frame ->closed: @off' to open the frame when it is closed.OIUxIeNM.frame.G.postscriptENM.frame.S.closedXnnnnsNR.frame.confirm_doneCman_resource_card identifiermodule last_modifiednamesummary descriptionsee_alsoinheritdefaultsOIVxNR.frame.confirm_doneRIOIWx*§Y6N confirm_donennOIXxIENV.frame.confirm_doneXnnsNM.frame.S.initialiseOIYxNM.frame.S.initialiseRIOIZx,?/LN initialisenOI[x‡Create a frame object from its <-label, <-kind and <-display. Note that frames are often created as a side-effect of creating windows.OI\xIENM.frame.S.kindXnnOI]x6 label `untitled' kind `toplevel' display @displaynsNM.frame.S.flushOI^xNM.frame.S.flushRIOI_x*§b`NflushnOI`x3Invokes `display->flush' on the associated display.OIaxIEN $class/display$M.display.S.flushXnnnnsNM.frame.G.tileOIbxNM.frame.G.tileRIOIcx*§{)NtilenOIdxãEach window of the frame has an associated tile object that negotiates its size and position with the other windows and the frame. These tile objects are organised on a hierarchy. This method finds the root of this hierarchy.OIexIeN$class/tile$M.tile.G.rootEN$class/tile$C.tileXnnnnsNM.frame.G.imageOIfxNM.frame.G.imageRIOIgx2=cmNimagenOIhx?Image with the pixels of the frame. See also `display<-image'.nnnnnsNM.frame.S.input_focusOIixNM.frame.S.input_focusRIOIjx.’¸3N input_focusnnOIkxIEN"$class/window$V.window.input_focusXOIlxIENV.frame.input_focusXnnnsNV.frame.icon_imageOImxNV.frame.icon_imageRIOInx*§gNN icon_imagenOIox‹Image object used for the iconic representation of the frame. Whether and how the icon is displayed is determined by the X window manager.OIpxIeNR.frame.icon_imageeNM.frame.S.closedENM.frame.S.iconXnnsN M.frame.S.yOIqxN M.frame.S.yRIOIrx*§{ïNynOIsx&Invoke `frame ->set' with specified Y.OItxIEN M.frame.S.setXnnnnsNM.frame.S.transient_forOIuxNM.frame.S.transient_forRIOIvx,}E³N transient_fornOIwxÍIndicate PCE that this frame is only a support frame for the argument. This declaration has the following effects: # Inform window-manager The window manager is informed using the XSetTransientForHint about this relation. Though defined, most window-managers seem to ignore this declaration. # Destruction, mapped, exposed, hidden When the main window is destroyed/mapped, exposed or hidden, the same action will be executed on it's transient windows.OIxxIeNM.frame.S.unlinkeNV.frame.transient_foreN V.frame.kindeNM.frame.S.kindeNM.frame.S.hiddeneNM.frame.S.exposedeNV.frame.transientsENM.frame.S.mappedXnnnOIyxoAt least when running with twm, PCE fails to get the X-notifications telling the frame has been exposed/hidden.sN M.frame.S.xOIzxN M.frame.S.xRIOI{x*§{ëNxnOI|x&Invoke `frame ->set' with specified X.OI}xIEN M.frame.S.setXnnnnsNM.frame.S.labelOI~xNM.frame.S.labelRIOIx,?+NNlabelnOI€xìSet the label of the frame. The first argument is the label of the frame itself, while the second argument is the label of the icon (see also ->icon_label). Whether and how these labels are displayed is defined by the X-window manager.nnnOIx1The icon name defaults to the frame's label name.OI‚xqThe icon-name can only be set after the frame is created. It's value is ignored if the frame is not yet created.sNM.frame.S.icon_labelOIƒxNM.frame.S.icon_labelRIOI„x,?&^N icon_labelnnOI…xIeNM.frame.G.icon_labeleNV.frame.icon_labeleNM.frame.S.iconENM.frame.G.closedXnnnnsNM.frame.S.show_labelOI†xNM.frame.S.show_labelRIOI‡x(ñ¾N show_labelnOIˆxéAlternative for `Frame ->kind'. `Frame ->show_label: @on' is equivalent to `Frame ->kind: toplevel' and `Frame ->show_label: @off' is equivalent to `Frame ->kind: transient'. Compatibility only. New code should use `Frame ->kind'.OI‰xIeN V.frame.kindENM.frame.S.kindXnnnnsNM.frame.S.widthOIŠxNM.frame.S.widthRIOI‹x*§{äNwidthnOIŒx*Invoke `frame ->set' with specified width.OIxIEN M.frame.S.setXnnnnsNM.frame.S._postscriptOIŽxNM.frame.S._postscriptRIOIx*§4oN _postscriptnOIx\Used by `frame <-postscript'. This method should not be invoked directly by the programmer.OI‘xIENM.frame.G.postscriptXnnnnsNM.frame.S.update_tile_adjustersOI’xNM.frame.S.update_tile_adjustersRIOI“x<„ËNupdate_tile_adjustersnOI”xÐRecursively descents the <-tile hierarchy and create a tile_adjuster object for each tile that has `tile <-can_resize: @on', as well ->free each `tile <-adjuster' of non-resizeable tiles. Called by ->create.nnnnnsNM.frame.G.memberOI•xNM.frame.G.memberRIOI–x,ÝZÝNmembernOI—x\Find (first) window with specified name. Automatically searches for the undecorated window.OI˜xIENM.frame.G.get_catch_allXnnnnsNV.frame.transientsOI™xNV.frame.transientsRIOIšx)üR?N transientsnOI›xÐChain with transient frames. This chain is updated by the methods ->transient_for and ->unlink. It is used by mapped, exposed and hidden to inform the transient windows of a state-change in the main window.OIœxIeNV.frame.transient_foreNM.frame.S.exposedENM.frame.S.transient_forXnnsNM.frame.S.sizeOIxNM.frame.S.sizeRIOIžx*§uINsizenOIŸx6Invokes `frame ->set' with specified width and height.OI xIEN M.frame.S.setXnnnnsNM.frame.S.cursorOI¡xNM.frame.S.cursorRIOI¢x1FåBNcursornOI£xDefine the cursor for the frame-background. Used by ->event to provide feedback for subwindow resizing. See also ->busy_cursor.nnnnnsNV.frame.wm_protocolsOI¤xNV.frame.wm_protocolsRIOI¥x*§|WN wm_protocolsnOI¦xxSheet mapping names of WM_PROTOCOL requests listened to on code objects executed if such a protocol request is received.OI§xIeNV.frame.wm_protocols_attachedeNM.frame.S.wm_protocolENM.frame.S.delete_wm_protocolXnnsN V.frame.areaOI¨xN V.frame.areaRIOI©x<Í{†NareanOIªxArea representing the `client' area of the frame object: the frame without title-bar and borders. This variable always reflects the current status of the window, regardless on what modified the frame geometry. See also ->set, <-bounding_box and ->geometryOI«xIeN M.frame.S.seteNV.frame.borderENM.frame.G.sizeXnnsNM.frame.S.mappedOI¬xNM.frame.S.mappedRIOI­x,?4sNmappednOI®xŽThis method is called whenever the frame receives a MapNotify or UnMapNotify event from X. These events are generated by the X-server when the frame has been mapped on the display or removed from it. Frames can be mapped by the user (using window-manager functionality) or by the method ->show, which is also called by ->open. When the frame has transient windows, these are sent a ->show: bool.OI¯xIeN V.frame.showeNM.frame.S.transient_forENM.frame.S.showXnnnnsNR.frame.geometryOI°xNR.frame.geometryRIOI±x*§d÷NgeometrynOI²x³When specified, it determines the default size and location to open the frame. When @nil, the size is determined by the contained window and the position by the X window manager.OI³xIENM.frame.S.geometryXnnsN V.frame.nameOI´xN V.frame.nameRIOIµx<ágZNnamenOI¶x½Name of the frame. This name may be used by `application<-member' to find frames belonging to an application object. The initial name is the <-class_name of the frame. See also <->label.nnnsNM.frame.S.applicationOI·xNM.frame.S.applicationRIOI¸x3- N applicationnOI¹xýChanges the application object this frame belongs too. Combining multiple frame objects in an application allows for finding frames as well as defining modal relations between frames. See `frame->modal'. The application to which a frame belongs may be changed at any time. Using the @nil argument, to frame is detached from any application. This method invokes `application ->delete' to the application currently holding the frame (if any) and `application ->append' to the application receiving the frame.nnnnnsNM.frame.S.wm_deleteOIºxNM.frame.S.wm_deleteRIOI»x,?-N wm_deletenOI¼xvInvoked by the default ->done_message. When the user requests to delete the window from the window manager. Performs the following steps: 1) If <-can_delete equals @off, return failure 2) If <-confirm_done == @on, issue `display ->confirm: `Delete window ``%s''', frame<-name Fails if action is canceled by the user 3) invokes `frame ->destroy' to the frameOI½xIeNM.frame.S.done_messageeNV.frame.can_deleteENV.frame.confirm_doneXnnnnsNV.frame.return_valueOI¾xNV.frame.return_valueRIOI¿x*§s N return_valuennOIÀxIENM.frame.S.returnXnnsNM.frame.G.containsOIÁxNM.frame.G.containsRIOIÂx*§YåNcontainsnOIÃxAChain with all member windows. Equivalent to `frame <-members'.OIÄxIEN!$class/visual$M.visual.G.containsXnnnnsNV.frame.membersOIÅxNV.frame.membersRIOIÆx,ÝZ©NmembersnOIÇxëChain of windows that are member of this frame. The variable -members holds a chain consisting of plain windows and windows decorated by a window_decorator object. The method <-members returns a chain holding the undecorated windows.nnnsNM.frame.G.confirm_centeredOIÈxNM.frame.G.confirm_centeredRIOIÉx*¤ì7Nconfirm_centerednOIÊx­Similar the `frame <-confirm', but makes `point' the center of the frame rather than the top-left corner. When `point' equals @default, the frame is centered on the screen.OIËxIeN)$class/window$M.window.G.confirm_centeredENM.frame.G.confirmXnnnnsNM.frame.G.monitorOIÌxNM.frame.G.monitorRIOIÍxD5hêNmonitornOIÎx_Monitor object that displays the largest area of the frame object. See also `display<-monitor'.nnnnnsNM.frame.G.bounding_boxOIÏxNM.frame.G.bounding_boxRIOIÐxarea and <->geometry.OIÒxIENM.frame.G.postscriptXnnnnsNV.frame.input_focusOIÓxNV.frame.input_focusRIOIÔx.’¸ZN input_focusnOIÕxÎWhen @on, the frame is in focus for the keyboard. This method is invoked from the window interface whenever the keyboard switches to/from this frame. When changed to @on, the method will invoke `window->input_focus' on <-keyboard_focus or the window that currently has the pointer (mouse). When changed to @off, the window that has `window <-input_focus: @on' (if any) will be sent `window ->input_focus: @off'. See also ->keyboard_focus and ->input_window.nnnsNM.frame.S.save_messageOIÖxNM.frame.S.save_messageRIOI×x*§`N save_messagenOIØxfTrap window manager request to save the data associated with this window. See `frame ->wm_protocols'.OIÙxIENM.frame.S.wm_protocolXnnnnsNM.frame.S.moveOIÚxNM.frame.S.moveRIOIÛx,?:ùNmovennOIÜxIENM.frame.S.positionXOIÝxIENM.frame.S.positionXnnnsNM.frame.S.positionOIÞxNM.frame.S.positionRIOIßx0µŸINpositionnOIàx‰Position the top-left corner of the frame relative to the screen. Equivalent to `frame ->set' with the X- and Y-coordinates of the point.OIáxIeN M.frame.S.setENM.frame.S.moveXnnnnsNM.frame.S.wm_protocolOIâxNM.frame.S.wm_protocolRIOIãx6¬‡ÚN wm_protocolnOIäxBRegister an X window manager protocol with specified name. The consequence of this is highly dependent on the X-implementation and notably the X window manager used. An intuitive way to describe it is the following: "Tell the window manager (or any other X-application) that this frame is prepared to handle `WM_PROTOCOLS' client events. If such an event is received, execute `code'." When the frame receives a `ClientMessage' event of `message_type' WM_PROTOCOLS, it searches the sheet `frame <-wm_protocols' with the protocol name specified in the X-event. When found it will execute `code' with the following arguments: @Receiver The frame @arg1 The first window of the frame. The X11 documentation describes the following standard messages: WM_SAVE_YOURSELF Save contents of window WM_DELETE_WINDOW Delete this windowOIåxIeNV.frame.wm_protocolseNM.frame.S.save_messageeNM.frame.S.done_messageeNM.frame.S.delete_wm_protocoleNV.frame.confirm_doneENV.frame.can_deleteXnnnnsNM.frame.S.closedOIæxNM.frame.S.closedRIOIçx)…4ýNclosednOIèxÒThe X-window system identifies three different states: normal, zoomed and iconic. This method may be used to change the state to `normal' (using `Frame ->closed: @on') or iconic (using `Frame ->closed: @off').OIéxIeNV.frame.icon_imageeNM.frame.G.closedENM.frame.S.exposeXnnnOIêxConsidering the three states recognised by the window system (and may other window systems), a boolean method is not appropriate.sNM.frame.S.done_messageOIëxNM.frame.S.done_messageRIOIìx2&Êwm_protocols'.OIîxIeNM.frame.S.wm_deleteENM.frame.S.wm_protocolXnnOIïxmessage(@receiver, wm_delete).nsNV.frame.geometryOIðxNV.frame.geometryRIOIñxinitialise if the class of the frame has frame.geometry defined or by `frame ->geometry'. It is used by `frame->create' to realise the requested geometry. Class frame itself does not define frame.geometry, which implies the default position of the frame is determined by its contents and the default position by the X window manager. On Windows, the default position is choosen randomly. The geometry class-variable is often attached to subclasses of frame that represent applications. In this case the user may define the geometry of the application in ~/.xpce/Defaults. If the frame has <-can_resize: @off, the width and height are not part of the specification returned by <-geometry. For the definition of an X geometry specification see ->geometry. See also library(persistent_frame), providing a subclass of class frame that remembers the geometry and subwindow layout.OIóxIeNM.frame.S.createENM.frame.S.geometryXnOIôx@default (i.e. undefined).sNM.frame.S.openOIõxNM.frame.S.openRIOIöx4š;]NopennOI÷xNOpen frame at specified position. It performs the following steps: 1) If the frame is not created, invoke `frame ->create' 2) If point is specified, invoke `frame ->set' with the specified X- and Y-coordinate. 3) Invoke `frame ->status: window', If the `grab' argument is @on, the frame will grab the mouse-pointer (see `window->grab_pointer'). If the `normalise' argument is true the frame will be repositioned such that as much as possible is on the screen. To open a frame immediately in full-screen mode, create the window and then invoke: send(Frame, status, full_screen)OIøxIeNM.frame.S.open_centeredeNM.frame.S.showeN M.frame.S.seteNM.frame.S.createEN$class/window$M.window.S.openXnnnnsNV.frame.colour_mapOIùxNV.frame.colour_mapRIOIúx:ös N colour_mapnOIûxšColour_map object used for the frame itself and all child windows. The values: # @nil Use the displays default colour_map. For Win32 systems, this implies only the 20 `static' colours are available. # @default Use the colour_map from `display <-colour_map'. This is the system default. # A colour_map object Use this specific colour_map object. Colourmap support is not a very strong point of XPCE. It is generally adviced to use 16-bit (high) or better colourmodes. On Windows systems with 256 colours and slow update (for example due PCAnywhere, ICA or other remote-access protocols), it can be desirable to disable colourmap usage to avoid flickering when switching windows. You can do this globally using the following line to your XPCE preferences file: frame.colour_map: @nil You can access the preference file through the "File/Edit Preferences/XPCE User Defaults" menu of the XPCE manual tool.nnnsNM.frame.S.deleteOIüxNM.frame.S.deleteRIOIýx>ž„—NdeletenOIþxWDelete window from the frame. See also ->append, `window->left', `window->above', etc.nnnnnsNM.frame.S.waitOIÿxNM.frame.S.waitRIOIx3¦…õNwaitnOIxbDispatch events until the frame object has been mapped on the display, and the system has received a repaint request on all of the windows in the frame. This call should be used to force a window to become visible on the screen during an ongoing computation. See also ->flush and ->synchronise. The implementation is very similar to `frame <-confirm'.nnnnnsNM.frame.S.heightOIxNM.frame.S.heightRIOIx*§f(NheightnOIxBEquivalent to `frame ->set: @default, @default, @default, Height'.OIxIEN M.frame.S.setXnnnnsN V.frame.labelOIxN V.frame.labelRIOIx*§göNlabelnnOIxIeNM.frame.G.icon_labelENV.frame.icon_labelXnnsNM.frame.G.postscriptOI xNM.frame.G.postscriptRIOI x*§6N postscriptnOI xûCreate a PostScript description of the area of the display where this frame is displayed. The frame should be opened on the display and not obscured by any other frame (see `frame ->expose'). The arguments are described with `graphical <-postscript'OI xIeNM.frame.G.bounding_boxeN)$class/graphical$M.graphical.G.postscripteN%$class/display$M.display.G.postscripteNM.frame.S.exposeENM.frame.S._postscriptXnnnnsNV.frame.transient_forOI xNV.frame.transient_forRIOIx*§{}N transient_fornOIxfFrame for which this window is a transient. May only be filled if this frame has <->kind `transient'.OIxIeNV.frame.transientsENM.frame.S.transient_forXnnsNV.frame.statusOIxNV.frame.statusRIOIx3¦…~NstatusnOIx_Current status of a frame. Meaning: # unmapped The frame has no counterpart in the Window Environment (i.e. it just exists as an XPCE object). # hidden The Window Environment counterpart is not visible; neither as an icon, nor as an open window. This status is normally used to preserve a window for later reusage. # iconic The Window Environment counterpart is visible as an icon. # window (same as open) The Window Environment counterpart is fully visible. A window is normally brought in this state using ->open. # full_screen The frame is shown in maximized mode, occupying the whole screen. To open a window initially in this state, create the window and then use the ->status method, instead of ->open. See also ->open, <-confirm and ->wait. The methods ->show and ->closed are mapped to this method for compatibility reasons.nnnsNM.frame.G.frameOIxNM.frame.G.frameRIOIx0µŸŠNframenOIx™Equivalent to <-self. Implemented to find the frame from both the frame, its member windows and all graphicals displayed therein with the same selector.OIxIeN$$class/graphical$M.graphical.G.frameEN$class/window$V.window.frameXnnnnsNM.frame.S.modalOIxNM.frame.S.modalRIOIx:±ò¤NmodalnnnOIxIeN V.frame.modalXnnnsNM.frame.S.geometryOIxNM.frame.S.geometryRIOIxD5<4NgeometrynOIxøParses the named X-geometry specification and adapts the frame accordingly if it has already been opened. An X-geometry specification is of the form x[+-][+-][@] Where any of these 5 parts may be omitted. Negative `X' or `Y' values take the other right/bottom edge of the frame relative to the right/bottom edge of the screen. Example: 400x200+0-0 Tells the frame to be 400x200 pixels and be located exactly in the bottom-left corner. The geometry size-specification applies to the client-area, while the position applies to the frame including title and borders. The addition @, where monitor is the number of the monitors in `display<-monitors'. is used of the system has multiple monitors. In this case the position is taken relative to the indicated monitor. The syntax for the minitor extension has been taken from the FVWM window manager. It is also possible to specify the monitor explicitely. In that case the @ is ignored. See also <->area.OIxIeN M.frame.S.seteNR.frame.geometryENV.frame.geometryXnnnnsNM.frame.S.synchroniseOIxNM.frame.S.synchroniseRIOI x*§u†N synchronisenOI!xŽInvokes `display ->synchronise' on its associated display, updating the display immediately and handling all pending events from the X-server.OI"xIEN&$class/display$M.display.S.synchroniseXnnnnsNC.frameCman_class_card identifiermodule last_modifiednamesummary descriptionsee_alsoinherituser_interfacebugsO I#xNC.frameRIOI$x0µ§GNframenOI%xUA `frame' is a collection of `windows'. Class frame is responsible for communication to the X window manager and the layout of the associated frames. Two types of windows are supported: windows that are visible to the window manager and windows that are not. The first is the default. The second is normally used for confirmer (or popup) windows; windows that require immediate attention by the user and are removed from the display before the application continues. The windows in a frame are `tiled'. This implies together they cover the entire area of the frame and they are not allowed to overlap. Management of the tile relation is done by a `tile' object associated with the frame. Any window needs a frame before it can be opened. For simple applications the user does not need to know about frames as frames are automatically created by windows when necessary. Windows delegate all messages they don't understand to their associated frames. Applications build using *user-defined* classes may wish to create sub-classes of class frame. This manual tool is an example. The various tools are subclass of man_frame, which in turn is a subclass of frame. Class man_frame implements the generic communication with the overall manual tool. The set of windows in a frame and their spatial relationships may be changed after the frame has been opened.OI&xIeN#$class/window$M.window.S.initialiseeN$class/display$V.display.frameseN $topics$135eN $examples$11eN$class/tile$C.tileEN$class/window$C.windowXnnnsNM.frame.S.hiddenOI'xNM.frame.S.hiddenRIOI(x*§b NhiddennOI)xFSimilar to ->exposed when the frame is hidden below the other windows.OI*xIeNM.frame.S.hideeNM.frame.S.exposedENM.frame.S.transient_forXnnnnsNM.frame.G.positionOI+xNM.frame.G.positionRIOI,x,?;hNpositionnOI-xHPosition of `frame <-area': top-left corner of the frame on the display.nnnnnsNM.frame.S.returnOI.xNM.frame.S.returnRIOI/x*§s9NreturnnOI0xšMake the blocking `frame <-confirm' call return with the specified argument. Sets `frame -return_value' to the argument and `frame -has_returned' to @on.OI1xIeNV.frame.return_valueeNM.frame.G.confirmENV.frame.has_returnedXnnnnsNM.frame.G.contained_inOI2xNM.frame.G.contained_inRIOI3x0µŸ€N contained_innOI4x Equivalent to `frame <-display'.OI5xIEN%$class/visual$M.visual.G.contained_inXnnnnsN M.frame.S.fitOI6xN M.frame.S.fitRIOI7x1‘çqNfitnOI8x¶(Re)computes the layout of its subwindows and resizes the frame to fit the tiled subwindows. It performs the following steps: # invoke `tile ->enforce: @off' on the root-tile of the frame # Invoke ->_compute_desired_size on all subwindows Currently only defined on class dialog: it recomputes the layout of the dialog and requests the dialog to resize. # Invoke `tile ->enforce: @on' on the root-tile of the frame # Invoke `frame ->set' with the computed ideal_width and ideal_height of the root-tile. `Frame ->fit' is normally called from `frame ->create'. Users may wish to call this method after a `window ->size' or after modifying a dialog window that is part of this frame.OI9xIeNM.frame.S.createeN M.frame.S.seteN.$class/dialog$M.dialog.S._compute_desired_sizeeN$class/tile$M.tile.S.enforceEN$class/window$M.window.S.sizeXnnnnsNR.frame.icon_labelOI:xNR.frame.icon_labelRIOI;x*§}#N icon_labelnnOIx,< N icon_positionnOI?xDPosition of the icon relative to the top-left corner of the display.nnnsNM.frame.G.convertOI@xNM.frame.G.convertRIOIAx*§ZNconvertnOIBxZConverts a window to its containing frame. Useful for methods expecting a frame argument.nnnnnsNM.frame.S.keyboard_focusOICxNM.frame.S.keyboard_focusRIOIDx.’¸ÓNkeyboard_focusnOIExWhen assigned to a window, all keyboard input arriving at any window in this frame will be directed to this window. The argument window does *not* need to be a <-member of the frame. When set to @nil or @default, keyboard input will follow the pointer (mouse).nnnnnsNM.frame.G.catch_allOIFxNM.frame.G.catch_allRIOIGx,?CN catch_allnOIHx/If `name' is of the from _member this method will return the corresponding window: ?- new(@f, frame), send(@f, append, new(V, view)), send(new(D, dialog), below, V), send(V, open). ?- send(@f?view_member, format, 'Hello World\n'). See also `device <-catch_all' and <-member.nnnnnsNM.frame.S.appendOIIxNM.frame.S.appendRIOIJx,?BENappendnOIKx5Append a window to the frame. The method is commonly used when multiple windows are combined in an instance of some subclass of frame. The following example illustrates this: :- pce_begin_class(mail, frame, "Simple mail tool"). initialise(M) :-> "Create mail tool":: send(M, send_super, initialise, mail), /* append the various parts to the tool */. send(M, append, new(B, browser)), send(M, append, new(V, view)), send(M, append, new(D, dialog)), /* specify the layout of the parts in the tool */ send(V, below, B), send(D, below, V), ...OILxIeN $topics$135EN$class/window$M.window.S.aboveXnnnnsNM.frame.G.icon_labelOIMxNM.frame.G.icon_labelRIOINx*§|íN icon_labelnOIOx·Text displayed with the iconic representation. If the variable `icon_label' equals @nil, this is the value of `frame <-label'. Otherwise it is the value of the `icon_label' variable.OIPxIeNR.frame.icon_labeleNV.frame.icon_labeleN V.frame.labelENM.frame.S.icon_labelXnnnnsNM.frame.S.borderOIQxNM.frame.S.borderRIOIRx*§VŠNbordernOISxÌIssue a geometry request to the X window manager to change the border width of the frame. This may or may not be honoured by the manager. The actual value of the border may be read from `frame <-border'.OITxIENV.frame.borderXnnnnsN V.frame.modalOIUxN V.frame.modalRIOIVx:±ô&NmodalnOIWxFA modal frame is a frame that should be completed (filled-out, ...) before the user can continue working with the context for which the frame is modal. By default (@nil), the user may operate on all frames. Using ->modal: transient the user must complete this frame before she may continue using the frame this frame is <-transient_for. Using ->modal: application, the user may not use any frame that belongs to the same <-application before completing this one. A commonly used source fragment to open a modal dialog is: display_for(Owner, Result) :- new(D, dialog('Enter information')), send(D, transient_for, Owner), send(D, modal, transient), get(D, confirm_centered, Owner?area?center, Return), send(D, destroy), Return \== @nil. See also <-confirm, ->transient_for and class application.nnnsNM.frame.S.createOIXxNM.frame.S.createRIOIYx<„ýNcreatenOIZx(Creates the window-system of the window. It performs the following steps: 1) If the frame is already created, succeed immediately 2) Open the <-display if this has not been done 3) Append itself to `display <-frames' 4) invoke `frame->fit' to fix the layout of the subwindows 5) Create the window-system window 6) Send ->create to all member windows 7) Update the cursor for all windows 8) (X11) Inform the window manager about `transient' relations 9) If a geometry is specified, invoke `frame ->geometry' 10) Send ->update_tile_adjusters.OI[xIeNM.frame.S.openeN$class/display$V.display.frameseNV.frame.geometryeN M.frame.S.fitEN$class/window$M.window.S.createXnnnnsNM.frame.S.centerOI\xNM.frame.S.centerRIOI]x*§XüNcenternOI^xpCenter frame around point. This method only produces the expected result if the frame has already been created.nnnnnsNV.frame.icon_labelOI_xNV.frame.icon_labelRIOI`x,?%ÊN icon_labelnOIax­Label for the iconic representation. When @nil, this is the same as `frame <-label'. When using the TWM window manager this value is displayed in the Icon Manager of TWM.OIbxIeNM.frame.G.icon_labeleNM.frame.S.icon_labelEN V.frame.labelXnnsNM.frame.S.grab_pointerOIcxNM.frame.S.grab_pointerRIOIdx1FåN grab_pointernOIexKIf grab is @on, forward all pointer events to the ->event method of this frame and show the given cursor. ->grab_pointer: @off is used to resume normal event processing. Used to implement subwindow resizing as realised by the default ->event implementation. See also `window ->grab_pointer', ->cursor and `display->grab_server'.nnnnnsNM.frame.S.kindOIfxNM.frame.S.kindRIOIgx*§mšNkindnOIhxMPCE supports three kinds of frames. As far as PCE itself is concerned there is no difference between these kinds. The types are made known to the window manager and the exact difference on the screen therefore depends on the window manager used. The available `kinds' are: # toplevel Normal application toplevel window. By most window managers shown with a titlebar indicating the label of the frame. Normally toplevel windows can be closed (iconised) and resized through the window manager. This is the default <->kind. # transient Transient frames are used for (temporary) frames, normally holding a dialog box. `Frame ->transient' may be used to indicate the window manager for which frame this frame is a transient. # popup Popup frames are completely invisible to the window manager. They are normally used for quick confirmers and popup-menu's. On various window managers, popup frames will normally not see keyboard input. Use transient frames if you want the user to be able to type in the window. The `kind' of a frame cannot be changed after it has been created.OIixIeN V.frame.kindeNM.frame.S.initialiseeNM.frame.S.transient_foreNM.frame.S.show_labelENM.frame.S.transientXnOIjx # Can't change <->kind after ->create ->kind must be used before the frame is created (or opened) # Frame ->kind: {toplevel,transient,popup} Method is called with illegal kind specificationOIkx(The initial frame <->kind is `toplevel'.nsN M.frame.S.setOIlxN M.frame.S.setRIOImx<Í|NsetnOInxäModify the `client' area of the frame: the area without title-bar and borders. Note that on X11 the window-manager may overrule the request, so the result may not be (exactly) what is requested. See also ->geometry and <-area.OIoxI eN M.frame.S.yeN M.frame.S.xeNM.frame.S.widtheNM.frame.S.sizeeN%$class/window$V.window.resize_messageeN V.frame.areaeNM.frame.S.positioneNM.frame.S.openeNM.frame.S.heighteNM.frame.S.geometryEN M.frame.S.fitXnnnnsNR.frame.icon_imageOIpxNR.frame.icon_imageRIOIqx*§gxN icon_imagennOIrxIENV.frame.icon_imageXnnsNM.frame.G.sizeOIsxNM.frame.G.sizeRIOItx,?;•NsizenOIux:Size of `frame <-area': size of the frame on the display.OIvxIEN V.frame.areaXnnnnsNM.frame.S.iconOIwxNM.frame.S.iconRIOIxx,?6NiconnOIyx{Sets the image and optionally the the label for the iconic representation of the frame. See also ->icon_label and ->label.OIzxIeNV.frame.icon_imageENM.frame.S.icon_labelXnnnnXaCnumber O I{xx