Forgot a help fix: Drag a dock's title bar, not divider, to reposition
[supercollider.git] / HelpSource / Classes / SCViewHolder.schelp
blob93c4aff8ff4eb06ad71182954aec4c0ae5ecb2e9
1 CLASS:: SCViewHolder
2 summary:: Instead of subclassing a (Q/SC)View, this is a proxy/adapter object that holds the View
3 categories:: GUI
4 related:: Classes/View
6 DESCRIPTION::
7 When writing gui widgets it is sometimes not desireable to subclass a view class. Its preferable to write a class that acts like a View and is used where Views normally are used but isn't a direct subclass of a View class.
9 In the SCView hierarchy it is not possible to subclass an SCView class because under the hood there is always a strict relationship between the SCView subclass and its paired C++ class.  The C++ class makes the actual view, the SC class is an interface to that C++ object.
11 In Qt there is a bit more flexibility.
13 But there are other reasons to not inherit from a specific view: your widget may not be a single view, in which case you would want to place a CompositeView and then place subviews inside of that.  Altogether these views are what your widget manages.  SCViewHolder can be used in this situation and it would set the top level CompositeView as its primary view.
15 Although it is still called "SC"ViewHolder it is in fact cross platform since it doesn't draw the view(s), it simply holds them.
17 Another possible name might be ViewAdapter or PseudoView.  It was originally called SCViewAdapter.
19 Most of the standard view methods here simply defer to the proxied view.  This makes the ViewHolder act and quack like a View.  
21 Messages that are not understood by the view holder are forwarded to the proxied view.
23 Historical note: this class was originally in the cruciallib.  ObjectGui is a subclass of this.
25 CLASSMETHODS::
27 METHOD:: consumeKeyDowns
28 global preference variable: if true then subclasses that do not set a keyDownAction do NOT bubble up keyDown events by default.
30 returns:: The result of calling the method on the proxied view
33 INSTANCEMETHODS::
36 METHOD:: view
37 get or set the view for which this object is a proxy/adapter.
39 argument:: v
40 the view: SCView or QView 
42 returns:: The result of calling the method on the proxied view
45 METHOD:: doesNotUnderstand
46 Messages that are not understood by the view holder are forwarded to the proxied view.  So when the interpreter is told to send a message to a view holder object and that message is not understood, it calls doesNotUnderstand
48 argument:: selector
49 The message that was not understood
51 argument::  ... args
52 The arguments that were supplied
54 returns:: the result of calling the method on the proxied view
57 METHOD:: viewDidClose
58 Unsets the view variable. After the view is closed (removed from the window) then all calls to the view holder will fail, and should fail as there is no view anymore.  You can check viewHolder.isClosed if you are unsure
60 returns:: this
62 METHOD:: remove
63 Removes the view from the window if it has not already been removed.
65 returns:: this
67 METHOD:: action
68 This method is forwarded to the view
70 argument:: f
73 returns:: The result of calling the method on the proxied view
75 METHOD:: doAction
76 This method is forwarded to the view
78 returns:: The result of calling the method on the proxied view
80 METHOD:: keyDownAction
81 This method is forwarded to the view
83 argument:: f
86 returns:: The result of calling the method on the proxied view
88 METHOD:: keyDownResponder
89 This method is forwarded to the view.  Note: this is a cruciallib convention and will be deprecated here.
91 returns:: The result of calling the method on the proxied view
93 METHOD:: enableKeyDowns
94 This method is forwarded to the view. Note: this is a cruciallib convention and will be deprecated here.
96 returns:: The result of calling the method on the proxied view
98 METHOD:: asView
99 returns the view
101 returns:: the view
103 METHOD:: bounds
104 This method is forwarded to the view
106 argument:: b
109 returns:: The result of calling the method on the proxied view
111 METHOD:: resize
112 This method is forwarded to the view
114 argument:: r
117 returns:: The result of calling the method on the proxied view
119 METHOD:: enabled
120 This method is forwarded to the view
122 argument:: b
125 returns:: The result of calling the method on the proxied view
127 METHOD:: refresh
128 This method is forwarded to the view
130 returns:: The result of calling the method on the proxied view
132 METHOD:: background
133 This method is forwarded to the view
135 argument:: b
138 returns:: The result of calling the method on the proxied view
140 METHOD:: focus
141 This method is forwarded to the view
143 argument:: flag
146 returns:: The result of calling the method on the proxied view
148 METHOD:: visible
149 This method is forwarded to the view
151 argument:: boo
154 returns:: The result of calling the method on the proxied view
156 METHOD:: isClosed
157 This method is forwarded to the view
159 returns:: The result of calling the method on the proxied view
161 METHOD:: font
162 This method is forwarded to the view
164 argument:: f
167 returns:: The result of calling the method on the proxied view