FormGenerar.vb

  1. ' FormGenerar.vb — ProInf.net — feb-2012
  2. '
  3. ' Formulario para generar una base de datos al azar
  4. '
  5. ' Web: proinf.net/permalink/generador_aleatorio_ponderado_de_nombres_y_apellidos
  6.  
  7. Public Class FormGenerar
  8.  
  9. Dim permanencia As New PermanenciaPrograma()
  10.  
  11. Private Sub CargarForm() Handles MyBase.Load
  12. IniciarCajasLista()
  13. permanencia.Restaurar()
  14. BorrarSolapasEnConstruccion()
  15. End Sub
  16.  
  17. Private Sub BorrarSolapasEnConstruccion()
  18. Solapas.TabPages.Remove(SolapaEspecial)
  19. Solapas.TabPages.Remove(SolapaGuion)
  20. End Sub
  21.  
  22. Private Sub CerrarForm() Handles Me.FormClosed
  23. permanencia.Guardar()
  24. End Sub
  25.  
  26. '============================================
  27. ' CAJAS DE LISTA
  28.  
  29. Sub IniciarCajasLista()
  30. RellenarCajaCamposDefinidos()
  31. RellenarCajaLista(CajaCamposPredefinidos, Recursos.camposPredefinidos.Values)
  32. RellenarCajaLista(CajaFormato, Recursos.formatosArchivo.Keys)
  33. FormUtils.ChequearCajaLista(CajaCamposPredefinidos)
  34. FormUtils.ChequearCajaLista(CajaCamposDefinidos)
  35. CajaTotalFactor.SelectedIndex = 0
  36. CajaTotalPotencia.SelectedIndex = 2
  37. CajaFormato.SelectedIndex = 0
  38. End Sub
  39.  
  40. Sub RellenarCajaCamposDefinidos()
  41. For i = 0 To Recursos.definidosPredeterminados.Count - 1
  42. Dim item = Recursos.definidosPredeterminados.Items(i)
  43. CajaCamposDefinidos.Items.Add(CampoDefinido.Instanciar(item.Texto))
  44. Next
  45. End Sub
  46.  
  47. Sub RellenarCajaLista(
  48. ByVal cajaLista As ListBox,
  49. ByVal coleccion As ICollection
  50. )
  51. cajaLista.Items.Clear()
  52. For Each item In coleccion
  53. cajaLista.Items.Add(item)
  54. Next
  55. End Sub
  56.  
  57. Private Sub AutochequearCampos(ByVal sender As System.Object, ByVal e As System.EventArgs
  58. ) Handles BotonMarcarPredefinidos.Click, BotonMarcarDefinidos.Click
  59. Dim cajaLista As CheckedListBox
  60. If sender Is BotonMarcarPredefinidos Then
  61. cajaLista = CajaCamposPredefinidos
  62. Else
  63. cajaLista = CajaCamposDefinidos
  64. End If
  65. FormUtils.ChequearCajaLista(cajaLista, Not cajaLista.GetItemChecked(0))
  66. End Sub
  67.  
  68. Private Sub MoverArribaAbajo(
  69. ByVal sender As System.Object, ByVal e As System.EventArgs
  70. ) Handles BotonArribaDefinido.Click, BotonAbajoDefinido.Click
  71. If sender Is BotonArribaDefinido Then
  72. FormUtils.MoverArribaSeleccionado(CajaCamposDefinidos)
  73. ElseIf sender Is BotonAbajoDefinido Then
  74. FormUtils.MoverAbajoSeleccionado(CajaCamposDefinidos)
  75. End If
  76. End Sub
  77.  
  78. '============================================
  79. ' GENERACIÓN BD AZAR
  80.  
  81. Dim bd As New BDAzar()
  82.  
  83. Private Sub Generar() Handles BotonGenerar.Click
  84. Select Case Solapas.SelectedIndex
  85. Case 0 : GenerarInteractivo()
  86. Case 1 : GenerarGuion()
  87. End Select
  88. End Sub
  89.  
  90. '============================================
  91. ' GENERACIÓN INTERACTIVO
  92.  
  93. Private Sub GenerarInteractivo()
  94. MostrarProgreso(True)
  95. bd.Campos = ObtenerCampos()
  96. bd.Total = ObtenerTotal()
  97. bd.Formato = Recursos.formatosArchivo(CajaFormato.Text)
  98. bd.Formato.Ruta = CajaArchivo.Text
  99. bd.Generar()
  100. MostrarProgreso(False)
  101. End Sub
  102.  
  103. Private Sub Cancelar() Handles BotonCancelar.Click
  104. bd.Cancelar = True
  105. End Sub
  106.  
  107. Function ObtenerCampos() As ICampo()
  108. Dim lista As New List(Of ICampo)
  109. For Each item In CajaCamposPredefinidos.CheckedItems
  110. lista.Add(item)
  111. Next
  112. For Each item In CajaCamposDefinidos.CheckedItems
  113. lista.Add(item)
  114. Next
  115. With Recursos.camposPredefinidos
  116. .EnlazarSexoConNombre(lista.Contains(.Item("nombre")))
  117. .EnlazarProvinciaConMunicipio(lista.Contains(.Item("municipio")))
  118. .EnlazarEdadConNacimiento(lista.Contains(.Item("nacimiento")))
  119. .EnlazarCodigoPostalConProvincia(lista.Contains(.Item("provincia")))
  120. .EnlazarTelefonoFijoConProvincia(lista.Contains(.Item("provincia")))
  121. .EnlazarCorreoConNombre(lista.Contains(.Item("nombre")))
  122. .EnlazarCorreoConApellido(lista.Contains(.Item("apellido1")))
  123. End With
  124. Return lista.ToArray()
  125. End Function
  126.  
  127. Private Function ObtenerTotal() As Integer
  128. Return (CajaTotalFactor.SelectedIndex + 1) * 10 ^ CajaTotalPotencia.SelectedIndex
  129. End Function
  130.  
  131. Private Sub CambiarTotal() Handles CajaTotalPotencia.SelectedIndexChanged, CajaTotalFactor.SelectedIndexChanged
  132. EtiquetaTotal.Text = ObtenerTotal().ToString("#,##0") & " registros"
  133. End Sub
  134.  
  135. '============================================
  136. ' BARRA DE PROGRESO
  137.  
  138. Sub MostrarProgreso(ByVal activado As Boolean)
  139. If activado Then
  140. AddHandler bd.Progresando, AddressOf Progresar
  141. BotonGenerar.Enabled = False
  142. BotonCancelar.Enabled = True
  143. Else
  144. RemoveHandler bd.Progresando, AddressOf Progresar
  145. BarraProgreso.Value = 0
  146. BotonGenerar.Enabled = True
  147. BotonCancelar.Enabled = False
  148. End If
  149. End Sub
  150.  
  151. Sub Progresar(ByVal ratio As Double)
  152. BarraProgreso.Value = ratio * 100
  153. Application.DoEvents()
  154. End Sub
  155.  
  156. '============================================
  157. ' SELECCIÓN ARCHIVO DESTINO
  158.  
  159. Private Sub SeleccionarFormato() Handles CajaFormato.SelectedIndexChanged
  160. Dim ruta As String = CajaArchivo.Text
  161. CajaArchivo.Text = IO.Path.ChangeExtension(ruta, ObtenerExtension())
  162. End Sub
  163.  
  164. Private Sub SeleccionarArchivo() Handles BotonSeleccionarArchivo.Click
  165. DialogoAbrir.FileName = CajaArchivo.Text
  166. DialogoAbrir.DefaultExt = ObtenerExtension()
  167. If DialogoAbrir.ShowDialog() = DialogResult.OK Then
  168. CajaArchivo.Text = DialogoAbrir.FileName
  169. End If
  170. End Sub
  171.  
  172. Function ObtenerExtension() As String
  173. Return Recursos.formatosArchivo(CajaFormato.Text).ObtenerExtension()
  174. End Function
  175.  
  176. Sub AbrirArchivo() Handles BotonAbrirArchivo.Click
  177. Try
  178. System.Diagnostics.Process.Start(CajaArchivo.Text)
  179. Catch ex As Exception
  180. DialogoError(ex)
  181. End Try
  182. End Sub
  183.  
  184. '============================================
  185. ' EDICIÓN CAMPOS DEFINIDOS POR USUARIO
  186.  
  187. Private Sub CambiarCampo(ByVal sender As System.Object, ByVal e As System.EventArgs
  188. ) Handles BotonNuevoCampo.Click, BotonEditarCampo.Click, BotonBorrarCampo.Click
  189. With CajaCamposDefinidos
  190. If sender Is BotonNuevoCampo Then
  191. Dim campo As CampoDefinido = New CampoRango("RANGO Sin nombre = entre 0 y 100")
  192. If FormCampo.Mostrar(campo) Then
  193. .Items.Add(campo, True)
  194. End If
  195. ElseIf sender Is BotonEditarCampo Then
  196. Dim indice = .SelectedIndex
  197. Dim campo = .Items(indice)
  198. If campo IsNot Nothing AndAlso FormCampo.Mostrar(campo) Then
  199. .Items(indice) = campo
  200. End If
  201. ElseIf sender Is BotonBorrarCampo Then
  202. Dim indice = .SelectedIndex
  203. If indice >= 0 AndAlso DialogoConfirmar() Then
  204. .Items.RemoveAt(indice)
  205. End If
  206. End If
  207. End With
  208. End Sub
  209.  
  210. Private Sub AutoactivarBotonesEdicionCampos(
  211. ) Handles CajaCamposDefinidos.SelectedIndexChanged
  212. Dim activado As Boolean = CajaCamposDefinidos.SelectedIndex >= 0
  213. BotonEditarCampo.Enabled = activado
  214. BotonBorrarCampo.Enabled = activado
  215. BotonArribaDefinido.Enabled = activado
  216. BotonAbajoDefinido.Enabled = activado
  217. End Sub
  218.  
  219. '============================================
  220. ' GENERACION GUIÓN
  221.  
  222. Private Sub GenerarGuion() 'TODO GenerarGuion
  223. BDAzar.EjecutarGuion(CajaGuion.Text)
  224. End Sub
  225.  
  226. Private Sub AccionesGuion(ByVal sender As System.Object, ByVal e As System.EventArgs
  227. ) Handles BotonNuevoGuion.Click, BotonAbrirGuion.Click, BotonGuardarGuion.Click
  228. If sender Is BotonNuevoGuion Then
  229. If DialogoConfirmar() Then
  230. CajaArchivoGuion.Text = "SinNombre.bdazar"
  231. CajaGuion.Text = ""
  232. End If
  233. ElseIf sender Is BotonAbrirGuion Then
  234. With DialogoAbrir
  235. .FileName = CajaArchivoGuion.Text
  236. .DefaultExt = ".bdazar"
  237. If .ShowDialog() = DialogResult.OK Then
  238. CajaArchivoGuion.Text = .FileName
  239. CajaGuion.Text = System.IO.File.ReadAllText(.FileName)
  240. End If
  241. End With
  242. ElseIf sender Is BotonGuardarGuion Then
  243. With DialogoGuardar
  244. .FileName = CajaArchivoGuion.Text
  245. .DefaultExt = ".bdazar"
  246. If .ShowDialog() = DialogResult.OK Then
  247. CajaArchivoGuion.Text = .FileName
  248. System.IO.File.WriteAllText(.FileName, CajaGuion.Text)
  249. End If
  250. End With
  251. End If
  252. End Sub
  253.  
  254. '============================================
  255. ' AUTORÍA
  256.  
  257. Private Sub IrEnlace() Handles EtiquetaEnlace.LinkClicked
  258. System.Diagnostics.Process.Start("https://www.proinf.net/permalink/generador_aleatorio_de_base_de_datos")
  259. End Sub
  260.  
  261. End Class
  262.  
  263.  
  264.  

Proinf.net