2 ** Project : Form Designer
3 ** File Purpose : Move/Resize Corners
5 ** Author : Mahmoud Fayed <msfclipper@yahoo.com>
10 Class MoveResizeCorners
12 func CreateMoveResizeCornersAttributes
14 AddAttribute(self,:nX)
15 AddAttribute(self,:nY)
16 AddAttribute(self,:lPress)
17 AddAttribute(self,:oFilter)
18 AddAttribute(self,:lMoveEvent)
20 AddAttribute(self,:lResize)
21 AddAttribute(self,:nResizeMode)
23 AddAttribute(self,:oCorners)
30 AddAttribute(self,:nClockValue)
31 AddAttribute(self,:nClocksCount)
33 nClocksCount = clockspersecond() / 4
36 oCorners = new ObjectCorners(self)
38 func CreateCornersNoInit
39 oCorners = new ObjectCorners
41 func RefreshCorners oParent
42 oCorners.refresh(oParent)
44 func MousePress oDesigner
49 nX = oFilter.getglobalx()
50 ny = oFilter.getglobaly()
51 setCursor(oDesigner.oGeneral.oCursorA())
52 # To be responsive to quick clicks/movement
55 aObjects = oDesigner.oModel.getselectedObjects()
56 for item in aObjects {
58 oObject.oCorners.refresh(oObject)
60 # Set focus to be the current object (after drawing corners)
64 func MouseRelease oDesigner
69 setCursor(oDesigner.oGeneral.oCursorA())
70 if not oDesigner.oModel.IsManySelected() {
71 DisplayProperties(oDesigner)
74 func MouseMove oDesigner
75 if not resizeEvent(oDesigner) { return }
78 func ResizeEvent oDesigner
80 nXPos = oFilter.getx()
81 nYPos = ofilter.gety()
82 if (nResizeMode = 0 or lPress = False) and lMoveEvent=False {
84 if nYPos < 5 { # Top + Left
85 setCursor(oDesigner.oGeneral.oCursorF() )
87 elseif nYPos > Height() - 5 # Left + Bottom
88 setCursor(oDesigner.oGeneral.oCursorB() )
91 setCursor(oDesigner.oGeneral.oCursorH() )
96 if nXPos > Width() - 5 { # Top+Width
97 setCursor(oDesigner.oGeneral.oCursorB() )
100 setCursor(oDesigner.oGeneral.oCursorV() )
103 if lPress { lResize = True }
104 elseif nYPos > Height() - 5
105 if nXPos > Width() - 5 { # Bottom+Width
106 setCursor(oDesigner.oGeneral.oCursorF() )
109 setCursor(oDesigner.oGeneral.oCursorV())
112 if lPress { lResize = True }
113 elseif nXPos > Width() - 5 # Left+Width
114 setCursor(oDesigner.oGeneral.oCursorH() )
116 if lPress { lResize = True }
120 setCursor(oDesigner.oGeneral.oCursorA())
124 if lResize and lPress and lMoveEvent=False {
127 move(x()+nXPos,y()+nYPos)
128 resize(width() + (-1) * nXPos , height() + (-1) * nYPos)
129 case 2 # Left + Bottom
131 resize(width() + (-1) * nXPos , nYPos)
134 resize(width() + (-1) * nXPos , height() )
136 move(x(), y() + nYPos)
137 resize( nXPos , height() + (-1) * nYPos )
139 move(x(), y() + nYPos)
140 resize(width() , height() + (-1) * nYPos )
141 case 6 # Bottom+Width
143 resize(nXPos , nYPos )
146 resize(width() , nYPos )
149 resize(nXPos , height() )
151 oCorners.refresh(oDesigner.oModel.ActiveObject())
156 func MoveEvent oDesigner
157 if MobileEventDelay() { return }
161 nX2 = oFilter.getglobalx()
162 ny2 = oFilter.getglobaly()
165 move(x()+ndiffx,y()+ndiffy)
168 oCorners.refresh(oDesigner.oModel.ActiveObject())
171 oFDApp.processevents()
175 func MousePressMany oDesigner
176 MousePress(oDesigner)
178 func MouseMoveMany oDesigner
179 if MobileEventDelay() { return }
182 nX2 = oFilter.getglobalx()
183 ny2 = oFilter.getglobaly()
188 # Move the objects together
189 aObjects = oDesigner.oModel.getselectedObjects()
190 for item in aObjects {
192 oObject.move(oObject.x()+ndiffx,oObject.y()+ndiffy)
193 oObject.oCorners.refresh(oObject)
196 oFDApp.processevents()
200 func MouseReleaseMany oDesigner
201 MouseRelease(oDesigner)
204 func MobileEventDelay
206 if nClockValue != 0 and clock() - nClockValue < nClocksCount {
209 nClockValue = clock()