PageRenderTime 34ms CodeModel.GetById 10ms RepoModel.GetById 1ms app.codeStats 0ms

/Source Code/PowerSong/Styles/frmEditStyle.vb

#
Visual Basic | 477 lines | 314 code | 126 blank | 37 comment | 0 complexity | 22fb1c59eaa0719e8df4117875e48d9a MD5 | raw file
  1. Imports System.Windows.Forms
  2. Imports PowerSong.SongDatabase
  3. Imports PowerSong.SongDatabase.Style.ETextAlignment
  4. Imports PowerSong.SongDatabase.Style.EBackgroundType
  5. Imports PowerSong.Projection
  6. Public Class frmEditStyle
  7. Private FStyle As Style = Nothing
  8. Private FSelectedProjectlet As ProjectletStyle = Nothing
  9. Private FStyles As Styles = Nothing
  10. Private FProjector As Projector = Nothing
  11. Private FIgnoreControlEvents As Boolean = True
  12. Dim ProjectletHolderObject As New Object
  13. Public Sub New(ByVal style As Style, ByVal styles As Styles)
  14. InitializeComponent()
  15. FStyles = styles
  16. FStyle = style
  17. FSelectedProjectlet = style("Verse")
  18. End Sub
  19. Private Sub frmEditStyle_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  20. ' Add items to the alignment drop down combo box
  21. cboTextAlignment.Items.Clear()
  22. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Top left", Style.ETextAlignment.TopLeft))
  23. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Top middle", Style.ETextAlignment.TopMiddle))
  24. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Top right", Style.ETextAlignment.TopRight))
  25. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Center left", Style.ETextAlignment.MiddleLeft))
  26. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Center middle", Style.ETextAlignment.MiddleMiddle))
  27. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Center right", Style.ETextAlignment.MiddleRight))
  28. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Bottom left", Style.ETextAlignment.BottomLeft))
  29. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Bottom middle", Style.ETextAlignment.BottomMiddle))
  30. cboTextAlignment.Items.Add(New ListItem(Of Style.ETextAlignment)("Bottom right", Style.ETextAlignment.BottomRight))
  31. ' Add items to the available projectlets drop down combo box
  32. cboSelectedProjectlet.Items.Clear()
  33. cboSelectedProjectlet.Items.Add(New ListItem(Of String)("Main Verse Text", "Verse"))
  34. cboSelectedProjectlet.Items.Add(New ListItem(Of String)("Song Title", "Title"))
  35. cboSelectedProjectlet.Items.Add(New ListItem(Of String)("Copyright Line", "Copyright"))
  36. ' Add items to the display option drop down combo box
  37. cboDisplayOption.Items.Clear()
  38. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Always", Style.EDisplayOption.Always))
  39. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Never", Style.EDisplayOption.Never))
  40. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("First verse", Style.EDisplayOption.FirstVerse))
  41. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Second verse", Style.EDisplayOption.SecondVerse))
  42. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Last verse", Style.EDisplayOption.LastVerse))
  43. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("First verse (once)", Style.EDisplayOption.FirstVerseOnce))
  44. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Second verse (once)", Style.EDisplayOption.SecondVerseOnce))
  45. cboDisplayOption.Items.Add(New ListItem(Of Style.EDisplayOption)("Last verse (once)", Style.EDisplayOption.LastVerseOnce))
  46. ' Add items to the font effect drop down combo box
  47. cboFontEffect.Items.Clear()
  48. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("None", Style.ETextEffect.None))
  49. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("Inner outline", Style.ETextEffect.InnerOutline))
  50. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("Outline", Style.ETextEffect.Outline))
  51. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("Shadow", Style.ETextEffect.Shadow))
  52. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("Outlined box", Style.ETextEffect.OutlineBox))
  53. cboFontEffect.Items.Add(New ListItem(Of Style.ETextEffect)("Filled box", Style.ETextEffect.FilledBox))
  54. ' Set up projectlet area control
  55. pnlProjectlet.Clear()
  56. Dim Widget As New Widget(ProjectletHolderObject, New RectangleF(0, 0, 1, 0))
  57. AddHandler Widget.Draw, AddressOf HandleDrawWidget
  58. AddHandler Widget.AreaChanged, AddressOf HandleWidgetMovement
  59. pnlProjectlet.AddWidget(Widget)
  60. ' Set up preview projection
  61. InitializeProjector()
  62. SetControlsToReflectStyle(FStyle)
  63. FIgnoreControlEvents = False
  64. cboSelectedProjectlet.SelectedIndex = 0
  65. End Sub
  66. Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
  67. ' Save the changed style
  68. UpdateStyle(FStyle, FSelectedProjectlet)
  69. FStyles.EditStyle(FStyle.StyleID, FStyle)
  70. ' Close the form
  71. Me.DialogResult = System.Windows.Forms.DialogResult.OK
  72. Me.Close()
  73. End Sub
  74. Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
  75. Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
  76. Me.Close()
  77. End Sub
  78. Private Sub btnSetBackgroundImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetBackgroundImage.Click
  79. If dlgOpenImage.ShowDialog = Windows.Forms.DialogResult.OK Then
  80. txtBackgroundImage.Text = dlgOpenImage.FileName
  81. FStyle.DefaultBackgroundImage = dlgOpenImage.FileName
  82. UpdateAllPreviews()
  83. End If
  84. End Sub
  85. Private Sub btnSelectSolidColour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectSolidColour.Click, pbSolidColour.Click
  86. If dlgSelectColour.ShowDialog = Windows.Forms.DialogResult.OK Then
  87. pbSolidColour.BackColor = dlgSelectColour.Color
  88. lblFontAppearance.BackColor = dlgSelectColour.Color
  89. FStyle.DefaultBackgroundColour = dlgSelectColour.Color
  90. UpdateAllPreviews()
  91. End If
  92. End Sub
  93. Private Sub optUseImage_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles optUseImage.CheckedChanged
  94. If FIgnoreControlEvents Then Exit Sub
  95. If optUseImage.Checked Then
  96. btnSelectSolidColour.Enabled = False
  97. btnSetBackgroundImage.Enabled = True
  98. txtBackgroundImage.Enabled = True
  99. If txtBackgroundImage.Text = "" Then
  100. ' FStyle is not set until the form is fully loaded, which prevents the button being 'clicked'
  101. If FStyle IsNot Nothing Then
  102. If optUseImage.Checked Then FStyle.BackgroundType = Image
  103. btnSetBackgroundImage_Click(sender, e)
  104. End If
  105. End If
  106. ' Update the style, preview projection and placement controls
  107. UpdateAllPreviews()
  108. End If
  109. End Sub
  110. Private Sub optUseSolidColour_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles optUseSolidColour.CheckedChanged
  111. If FIgnoreControlEvents Then Exit Sub
  112. If optUseSolidColour.Checked Then
  113. btnSelectSolidColour.Enabled = True
  114. btnSetBackgroundImage.Enabled = False
  115. txtBackgroundImage.Enabled = False
  116. If optUseSolidColour.Checked Then FStyle.BackgroundType = SolidColour
  117. ' Update the style, preview projection and placement controls
  118. UpdateAllPreviews()
  119. End If
  120. End Sub
  121. Private Sub btnSetAppearance_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetAppearance.Click
  122. ' First set up the style dialog box
  123. dlgFont.Font = New Font(FSelectedProjectlet.FontName, _
  124. FSelectedProjectlet.FontSize, _
  125. FSelectedProjectlet.FontStyle, _
  126. GraphicsUnit.Point)
  127. dlgFont.Color = FSelectedProjectlet.FontColour
  128. ' Show the font dialog
  129. If dlgFont.ShowDialog = Windows.Forms.DialogResult.OK Then
  130. ' Reflect the changes made to the sample text
  131. lblFontAppearance.Text = dlgFont.Font.Name
  132. lblFontAppearance.Font = New Font(dlgFont.Font.Name, lblFontAppearance.Font.Size, dlgFont.Font.Style, GraphicsUnit.Pixel)
  133. lblFontSize.Text = dlgFont.Font.SizeInPoints.ToString
  134. ' Update the style, preview projection and placement controls
  135. UpdateStyle(FStyle, FSelectedProjectlet)
  136. UpdateAllPreviews()
  137. End If
  138. End Sub
  139. Private Sub tmrProjection_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrProjection.Tick
  140. FProjector.Update()
  141. End Sub
  142. Private Sub btnSetEffectColour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetEffectColour.Click, pbEffectColour.Click
  143. dlgSelectColour.Color = pbEffectColour.BackColor
  144. If dlgSelectColour.ShowDialog = Windows.Forms.DialogResult.OK Then
  145. pbEffectColour.BackColor = dlgSelectColour.Color
  146. End If
  147. ' Update the style
  148. UpdateStyle(FStyle, FSelectedProjectlet)
  149. FProjector.ProjectletByName(FSelectedProjectlet.Category).FontEffectColour = dlgSelectColour.Color
  150. End Sub
  151. Private Sub cboFontEffect_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboFontEffect.SelectedIndexChanged
  152. If FIgnoreControlEvents Then Exit Sub
  153. UpdateStyle(FStyle, FSelectedProjectlet)
  154. Dim SelectedEffect As ListItem(Of Style.ETextEffect) = cboFontEffect.SelectedItem
  155. FProjector.ProjectletByName(FSelectedProjectlet.Category).FontEffect = SelectedEffect.Key
  156. End Sub
  157. Private Sub btnSetFontColour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetFontColour.Click, pbFontColour.Click
  158. dlgSelectColour.Color = pbFontColour.BackColor
  159. If dlgSelectColour.ShowDialog = Windows.Forms.DialogResult.OK Then
  160. pbFontColour.BackColor = dlgSelectColour.Color
  161. lblFontAppearance.ForeColor = dlgSelectColour.Color
  162. End If
  163. ' Update the style
  164. UpdateStyle(FStyle, FSelectedProjectlet)
  165. FProjector.ProjectletByName(FSelectedProjectlet.Category).FontColour = dlgSelectColour.Color
  166. End Sub
  167. #Region " Helper Methods "
  168. Private Sub SetControlsToReflectStyle(ByVal style As Style)
  169. ' Update main details
  170. txtName.Text = style.Name
  171. pbSolidColour.BackColor = style.DefaultBackgroundColour
  172. txtBackgroundImage.Text = style.DefaultBackgroundImage
  173. Select Case style.BackgroundType
  174. Case Image : optUseImage.Checked = True
  175. Case SolidColour : optUseSolidColour.Checked = True
  176. End Select
  177. lblFontAppearance.BackColor = style.DefaultBackgroundColour
  178. ' Update fading
  179. cboGeneralFade.SelectedIndex = style.GeneralFade
  180. cboVerseFade.SelectedIndex = style.VerseFade
  181. txtGeneralFadeDuration.Text = style.GeneralFadeDuration.ToString
  182. txtVerseFadeDuration.Text = style.VerseFadeDuration.ToString
  183. End Sub
  184. Private Sub UpdateAllPreviews()
  185. UpdateProjector()
  186. UpdatePlacer()
  187. End Sub
  188. Private Sub UpdateStyle(ByVal style As Style, _
  189. ByVal projectlet As ProjectletStyle)
  190. ' Update main style details
  191. style.Name = txtName.Text
  192. If optUseImage.Checked Then
  193. style.BackgroundType = Image
  194. ElseIf optUseSolidColour.Checked Then
  195. style.BackgroundType = SolidColour
  196. End If
  197. style.DefaultBackgroundImage = txtBackgroundImage.Text
  198. style.DefaultBackgroundColour = pbSolidColour.BackColor
  199. ' Update projectlet
  200. projectlet.Area = pnlProjectlet.GetWidgetContainingObject(ProjectletHolderObject).Area
  201. projectlet.Alignment = DirectCast(cboTextAlignment.SelectedItem, ListItem(Of Style.ETextAlignment)).Key
  202. projectlet.FontName = lblFontAppearance.Font.Name
  203. projectlet.FontStyle = lblFontAppearance.Font.Style
  204. projectlet.FontColour = pbFontColour.BackColor
  205. projectlet.FontSize = CInt(lblFontSize.Text)
  206. projectlet.FontEffect = DirectCast(cboFontEffect.SelectedItem, ListItem(Of Style.ETextEffect)).Key
  207. projectlet.FontEffectColour = pbEffectColour.BackColor
  208. projectlet.DisplayOption = DirectCast(cboDisplayOption.SelectedItem, ListItem(Of Style.EDisplayOption)).Key
  209. ' Update fading
  210. style.GeneralFade = cboGeneralFade.SelectedIndex
  211. style.VerseFade = cboVerseFade.SelectedIndex
  212. style.GeneralFadeDuration = CInt(txtGeneralFadeDuration.Text)
  213. style.VerseFadeDuration = CInt(txtVerseFadeDuration.Text)
  214. End Sub
  215. Private Sub UpdateProjector()
  216. ' Fade out
  217. FProjector.FadeToBlack(FStyle.GeneralFadeDuration)
  218. ' Configure the projector background
  219. Select Case FStyle.BackgroundType
  220. Case SolidColour : FProjector.SetBackgroundColour(pbSolidColour.BackColor)
  221. Case Image : FProjector.SetBackgroundImage(txtBackgroundImage.Text)
  222. End Select
  223. ' Configure projectlets
  224. For Each Item As Projectlet In FProjector.Projectlets
  225. Dim SubStyle As ProjectletStyle = FStyle.ProjectletsByName(Item.Category)
  226. ' Configure projectlet style on projector
  227. FProjector.SetProjectletStyle(Item, SubStyle)
  228. ' Set text
  229. FProjector.SetText(Item, 0, 2, GetSampleText(SubStyle.Category), True)
  230. Next
  231. ' Fade in
  232. FProjector.FadeToText(FStyle.GeneralFadeDuration)
  233. End Sub
  234. Private Sub UpdatePlacer()
  235. Dim Widget As Widget = pnlProjectlet.GetWidgetContainingObject(ProjectletHolderObject)
  236. Widget.Area = FSelectedProjectlet.Area
  237. pnlProjectlet.Invalidate()
  238. End Sub
  239. Private Function GetSampleText(ByVal category As String) As String
  240. Dim Result As String = String.Empty
  241. Select Case category
  242. Case "Title" : Result = "The Song Title"
  243. Case "Verse" : Result = "Sample of verse, line 1." + Environment.NewLine + _
  244. "Sample of verse, line 2." + Environment.NewLine + _
  245. "Sample of verse, line 3." + Environment.NewLine + _
  246. "Sample of verse, line 4." + Environment.NewLine + _
  247. "Sample of verse, line 5." + Environment.NewLine + _
  248. "Sample of verse, line 6." + Environment.NewLine + _
  249. "Sample of verse, line 7."
  250. Case "Copyright" : Result = "© 2010 Copyright Line Sample"
  251. End Select
  252. Return Result
  253. End Function
  254. Private Sub InitializeProjector()
  255. FProjector = New Projector(pbPreview)
  256. FProjector.Projectlets.Add(New Projectlet("Title", ProjectletStyle.TITLE_TAG))
  257. FProjector.Projectlets.Add(New Projectlet("Verse", ProjectletStyle.VERSE_TAG))
  258. FProjector.Projectlets.Add(New Projectlet("Copyright", ProjectletStyle.SIMPLE_COPYRIGHT_TAG))
  259. End Sub
  260. #End Region
  261. Private Sub cboSelectedProjectlet_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSelectedProjectlet.SelectedIndexChanged
  262. If FIgnoreControlEvents Then Exit Sub
  263. If cboSelectedProjectlet.SelectedIndex = -1 Then Exit Sub
  264. FIgnoreControlEvents = True
  265. Dim SelectedProjectletName As String = DirectCast(cboSelectedProjectlet.SelectedItem, ListItem(Of String)).Key
  266. FSelectedProjectlet = FStyle(SelectedProjectletName)
  267. ' Update projectlet font information
  268. lblFontAppearance.Text = FSelectedProjectlet.FontName
  269. lblFontAppearance.Font = New Font(FSelectedProjectlet.FontName, lblFontAppearance.Font.Size, FSelectedProjectlet.FontStyle, GraphicsUnit.Pixel)
  270. lblFontAppearance.ForeColor = FSelectedProjectlet.FontColour
  271. lblFontSize.Text = FSelectedProjectlet.FontSize
  272. pbEffectColour.BackColor = FSelectedProjectlet.FontEffectColour
  273. pbFontColour.BackColor = FSelectedProjectlet.FontColour
  274. ' Update projectlet location
  275. pnlProjectlet.GetWidgetContainingObject(ProjectletHolderObject).Area = FSelectedProjectlet.Area
  276. ' Update font effect
  277. For Each Value As ListItem(Of Style.ETextEffect) In cboFontEffect.Items
  278. If Value.Key = FSelectedProjectlet.FontEffect Then cboFontEffect.SelectedItem = Value
  279. Next
  280. ' Update projectlet display option
  281. For Each Value As ListItem(Of Style.EDisplayOption) In cboDisplayOption.Items
  282. If Value.Key = FSelectedProjectlet.DisplayOption Then cboDisplayOption.SelectedItem = Value
  283. Next
  284. ' Update projectlet text alignment
  285. For Each Value As ListItem(Of Style.ETextAlignment) In cboTextAlignment.Items
  286. If Value.Key = FSelectedProjectlet.Alignment Then cboTextAlignment.SelectedItem = Value
  287. Next
  288. FIgnoreControlEvents = False
  289. UpdateAllPreviews()
  290. End Sub
  291. Private Sub HandleFontTransparencySelection(ByVal sender As System.Object, ByVal e As System.EventArgs) _
  292. Handles mnuFTrans0.Click, mnuFTrans1.Click, mnuFTrans2.Click, mnuFTrans3.Click, mnuFTrans4.Click, mnuFTrans5.Click, mnuFTrans6.Click, mnuFTrans7.Click, mnuFTrans8.Click, mnuFTrans9.Click
  293. Dim Value As Integer = DirectCast(sender, ToolStripMenuItem).Tag
  294. Dim Transparency As Byte = CDbl(255) * (CDbl(Value) / 100)
  295. Dim Colour1 As Color = pbEffectColour.BackColor
  296. Dim Colour2 As Color = Color.FromArgb(255 - Transparency, Colour1.R, Colour1.G, Colour1.B)
  297. pbEffectColour.BackColor = Colour2
  298. FSelectedProjectlet.FontColour = Colour2
  299. UpdateStyle(FStyle, FSelectedProjectlet)
  300. UpdateAllPreviews()
  301. End Sub
  302. Private Sub HandleEffectTransparencySelection(ByVal sender As System.Object, ByVal e As System.EventArgs) _
  303. Handles mnuETrans0.Click, mnuETrans1.Click, mnuETrans2.Click, mnuETrans3.Click, mnuETrans4.Click, mnuETrans5.Click, mnuETrans6.Click, mnuETrans7.Click, mnuETrans8.Click, mnuETrans9.Click
  304. Dim Value As Integer = DirectCast(sender, ToolStripMenuItem).Tag
  305. Dim Transparency As Byte = CDbl(255) * (CDbl(Value) / 100)
  306. Dim Colour1 As Color = pbFontColour.BackColor
  307. Dim Colour2 As Color = Color.FromArgb(255 - Transparency, Colour1.R, Colour1.G, Colour1.B)
  308. pbFontColour.BackColor = Colour2
  309. FSelectedProjectlet.FontEffectColour = Colour2
  310. UpdateStyle(FStyle, FSelectedProjectlet)
  311. UpdateAllPreviews()
  312. End Sub
  313. Private Sub cboTextAlignment_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboTextAlignment.SelectedIndexChanged
  314. If FIgnoreControlEvents Then Exit Sub
  315. Dim SelectedItem As ListItem(Of Style.ETextAlignment) = cboTextAlignment.SelectedItem
  316. FProjector.ProjectletByName(FSelectedProjectlet.Category).FontFormat = Projectlet.CreateFontFormat(SelectedItem.Key)
  317. FSelectedProjectlet.Alignment = SelectedItem.Key
  318. UpdateStyle(FStyle, FSelectedProjectlet)
  319. pnlProjectlet.Invalidate()
  320. End Sub
  321. Private Sub cboDisplayOption_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboDisplayOption.SelectedIndexChanged
  322. If FIgnoreControlEvents Then Exit Sub
  323. Dim SelectedItem As ListItem(Of Style.EDisplayOption) = cboDisplayOption.SelectedItem
  324. FProjector.ProjectletByName(FSelectedProjectlet.Category).DisplayOption = SelectedItem.Key
  325. FSelectedProjectlet.DisplayOption = SelectedItem.Key
  326. UpdateStyle(FStyle, FSelectedProjectlet)
  327. pnlProjectlet.Invalidate()
  328. End Sub
  329. Private Sub HandleDrawWidget(ByVal graphics As Graphics, ByVal region As Rectangle)
  330. ' Determine what text to display
  331. Dim TextToDisplay As String = GetSampleText(FSelectedProjectlet.Category)
  332. ' Determine font to use
  333. Dim FontSize As Integer = Projector.GetProjectingFontSize(FSelectedProjectlet.FontSize, pnlProjectlet.Width)
  334. Dim Font As New Font(FSelectedProjectlet.FontName, _
  335. FontSize, _
  336. FSelectedProjectlet.FontStyle, _
  337. GraphicsUnit.Pixel)
  338. ' TODO: LOW: Do this better!
  339. ' Create a new image
  340. Dim WidgetImage As New Bitmap(region.Width, region.Height, Imaging.PixelFormat.Format32bppPArgb)
  341. Dim G As Graphics = graphics.FromImage(WidgetImage)
  342. G.Clear(Color.White)
  343. G.DrawString(TextToDisplay, Font, Brushes.Black, New RectangleF(0, 0, region.Width, region.Height), Projectlet.CreateFontFormat(FSelectedProjectlet.Alignment))
  344. graphics.DrawImageUnscaled(WidgetImage, region.Left, region.Top)
  345. End Sub
  346. Private Sub HandleWidgetMovement(ByVal widget As Widget)
  347. If FIgnoreControlEvents Then Exit Sub
  348. FSelectedProjectlet.Area = widget.Area
  349. FProjector.ProjectletByName(FSelectedProjectlet.Category).Area = widget.Area
  350. End Sub
  351. End Class