234 lines
5.2 KiB
Text
234 lines
5.2 KiB
Text
|
CLASS:: PageLayout
|
||
|
summary:: a Window with a FlowView on it for use in ObjectGui's MVC model
|
||
|
categories:: GUI
|
||
|
related:: Classes/ObjectGui, Classes/FlowView, Classes/Window, Classes/NotificationCenter
|
||
|
|
||
|
DESCRIPTION::
|
||
|
This class encapsulates the common task of creating a Window, adding a FlowView (CompositeView with a FlowLayout on it). It also supports the MVC model by registering controllers that are then removed (sent the .remove message) when the Window closes. Additionally it can resize itself to fit the contents.
|
||
|
|
||
|
|
||
|
CLASSMETHODS::
|
||
|
|
||
|
METHOD:: new
|
||
|
Create a Window with a FlowView on it. The PageLayout object can be treated like a Window or like a View.
|
||
|
|
||
|
argument:: title
|
||
|
Window title
|
||
|
|
||
|
argument:: bounds
|
||
|
Bounds or nil. Default of nil will size the window to the entire screen size. Use .resizeToFit to shrink the window to the content size.
|
||
|
|
||
|
argument:: margin
|
||
|
FlowLayout margin.
|
||
|
|
||
|
argument:: background
|
||
|
Background color
|
||
|
|
||
|
argument:: scroll
|
||
|
boolean: add scroll bars or not.
|
||
|
|
||
|
argument:: front
|
||
|
boolean: whether to immediately display the window, bringing it to the front. default is true. You may choose to first add your views to the window and then front it which is useful for large slow GUIs
|
||
|
|
||
|
returns:: a PageLayout
|
||
|
|
||
|
|
||
|
INSTANCEMETHODS::
|
||
|
|
||
|
METHOD:: window
|
||
|
the Window object
|
||
|
|
||
|
returns:: a Window
|
||
|
|
||
|
METHOD:: view
|
||
|
the top most view on the Window
|
||
|
|
||
|
returns:: a View
|
||
|
|
||
|
METHOD:: isClosed
|
||
|
boolean: has the window been closed ?
|
||
|
|
||
|
returns:: boolean
|
||
|
|
||
|
METHOD:: onClose
|
||
|
Just as for Window, this method is called when the PageLayout's window is closed. The actual Window's onClose method is used to trigger clean up operations, releasing dependencies and will also call this onClose function.
|
||
|
|
||
|
returns:: get/set onClose handler
|
||
|
|
||
|
METHOD:: asView
|
||
|
returns the top view
|
||
|
|
||
|
returns:: a View
|
||
|
|
||
|
METHOD:: asFlowView
|
||
|
|
||
|
argument:: bounds
|
||
|
if bounds are nil then it returns self, as a PageLayout is compatible with FlowView. If bounds are supplied then a child FlowView is placed and returned
|
||
|
|
||
|
returns:: self or a new FlowView
|
||
|
|
||
|
METHOD:: bounds
|
||
|
inner bounds of the top level view.
|
||
|
|
||
|
returns:: a Rect
|
||
|
|
||
|
METHOD:: asPageLayout
|
||
|
Similar to asFlowView, this message converts nil and various other objects to a PageLayout. This is already a PageLayout, so it returns self.
|
||
|
|
||
|
argument:: name
|
||
|
Ignored. If the receiver had been nil then the name would be the Window name.
|
||
|
|
||
|
argument:: bounds
|
||
|
Ignored. Would have been used to size the PageLayout
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: startRow
|
||
|
compatible with FlowView
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: indentedRemaining
|
||
|
compatible with FlowView
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: checkNotClosed
|
||
|
isClosed.not
|
||
|
|
||
|
returns:: boolean
|
||
|
|
||
|
METHOD:: front
|
||
|
bring Window to the front
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: hide
|
||
|
Hide window
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: show
|
||
|
Show the window if it was previously hidden.
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: close
|
||
|
Close the window, releasing any dependencies and calling the onClose handler.
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: refresh
|
||
|
Refresh the top level view
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: background
|
||
|
set background color of top level view
|
||
|
|
||
|
argument:: c
|
||
|
color
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: removeOnClose
|
||
|
Register an object, usually a ObjectGui subclass or an Updater so that when the Window closes the .remove message will be sent to it. This will cause the object to release its dependencies on its Model. This means the ObjectGui (or other controller object) will stop getting update messages and will stop trying to update the View which has just been closed along with the Window. It also means that if there is no link to the Model and no longer any Views that held links to the controller object, that the controller is now unreferenced and will be garbage collected.
|
||
|
|
||
|
argument:: dependant
|
||
|
the object that wishes to be sent .remove on closing the window
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: resizeToFit
|
||
|
Resize the top FlowView to fit its contents and then resize the Window to fit that.=
|
||
|
|
||
|
argument:: reflow
|
||
|
boolean: FlowView can relay all of its child views in cases where the bounds have changed or views have been removed. This puts them all back in place one by one for the updated bounds. So this may result in smaller over all bounds, after which the window is shrunk.
|
||
|
|
||
|
argument:: center
|
||
|
boolean: after resizing, re-center the window in the screen.
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: reflowAll
|
||
|
see FlowView reflowAll
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: fullScreen
|
||
|
go Full screen
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
METHOD:: endFullScreen
|
||
|
end full screen
|
||
|
|
||
|
returns:: self
|
||
|
|
||
|
subsection::FlowView extensions
|
||
|
|
||
|
METHOD:: flow
|
||
|
Place a new FlowView on the window
|
||
|
|
||
|
argument:: func
|
||
|
A handler that recieves the new FlowView as argument
|
||
|
|
||
|
argument:: bounds
|
||
|
Bounds fo the FlowView
|
||
|
|
||
|
returns:: (returnvalue)
|
||
|
|
||
|
METHOD:: vert
|
||
|
(describe method here)
|
||
|
|
||
|
argument:: func
|
||
|
(describe argument here)
|
||
|
|
||
|
argument:: bounds
|
||
|
(describe argument here)
|
||
|
|
||
|
argument:: spacing
|
||
|
(describe argument here)
|
||
|
|
||
|
returns:: (returnvalue)
|
||
|
|
||
|
METHOD:: horz
|
||
|
(describe method here)
|
||
|
|
||
|
argument:: func
|
||
|
(describe argument here)
|
||
|
|
||
|
argument:: bounds
|
||
|
(describe argument here)
|
||
|
|
||
|
argument:: spacing
|
||
|
(describe argument here)
|
||
|
|
||
|
returns:: (returnvalue)
|
||
|
|
||
|
METHOD:: comp
|
||
|
(describe method here)
|
||
|
|
||
|
argument:: func
|
||
|
(describe argument here)
|
||
|
|
||
|
argument:: bounds
|
||
|
(describe argument here)
|
||
|
|
||
|
returns:: (returnvalue)
|
||
|
|
||
|
METHOD:: scroll
|
||
|
(describe method here)
|
||
|
|
||
|
argument:: ... args
|
||
|
(describe argument here)
|
||
|
|
||
|
returns:: (returnvalue)
|
||
|
|
||
|
|
||
|
EXAMPLES::
|
||
|
|
||
|
code::
|
||
|
PageLayout.new
|
||
|
::
|