OOoES/Desarrollo/Add-on de Soporte
From OpenOffice.org Wiki
Contents |
Objetivo
Este add-on pretende integrar la ayduda del portal de ayuda del sitio es.openffice.org dentro de la suite de OpenOffice.org. Esto hara que el usuario pueda rapidamente acceder a las listas y subscribirse. El nivel de interaccion avanzara conforme el modulo se haga mas popular.
Roadmap
Se prentede empezar con algo sencillo, esto es insertar un item dentro del menu de ayuda que redirija a las personas a la pagina de ayuda de OOoEs. Una vez que este modulo se haya implementado el segundo nivel de interaccion es abrir un navegador dentro de un dialogo donde se tome los datos tal como el correo de la persona y se seleccione la lista a donde se quiere subscriibir. En un tercer plano se intentara tener un RSS de la lista el cual se imprimira dentro del contenido de un dialogo especial.
Primera etapa
Este es un ejemplo de como se vera la primera etapa del modulo. El Soporte Comunitario tendra ligas a las listas de OpenOffice.org Español.
En el proyecto usaremos los modulos de python como smtpdlib para enviar el correo a la lista. Tambien usaremos los modulos de la parte grafica de UNO, esta se encuentra en el modulo AWT. AWT nos da toda una coleccion de widgets tales como:
- Ventana o Dialogo: com.sun.star.awt.UnoControlDialogModel
- Botones: com.sun.star.awt.UnoControlButtonModel
- Listas: com.sun.star.awt.UnoControlListBoxModel
- Caja de texto: com.sun.star.awt.UnoControlEditModel
- Botones de radio: com.sun.star.awt.UnoControlRadioButtonModel
- Caja de verificacion: com.sun.star.awt.UnoControlCheckBoxModel
- Etiquetas: com.sun.star.awt.UnoControlFixedTextModel
Codigo
Funcion: Modulos de Widgets
Esta parte el codigo se enfoca a los widgets AWT del script, incluye ventana, caja de texto, lista de menu y finalmente un boton para aceptar y cancelar: Utilizamos los siguientes widgets:
- UnoControlDialogModel - Dialogo
- UnoControlButtonModel - Boton
- UnoControlEditModel - Caja de texto
- UnoControlFixedTextModel - Etiqueta
- UnoControlListBoxModel - Lista de Menu
- Rectangle - Rectangulo
[python]
def _createBox(self):
"""Create Xray User Interface"""
#create the dialog model and set the properties
dialog_model = self.smgr.createInstanceWithContext(
'com.sun.star.awt.UnoControlDialogModel',
self.ctx)
dialog_model.PositionX = 50
dialog_model.Step = 1
dialog_model.TabIndex = 7
dialog_model.Width = 150
dialog_model.Height = 60
dialog_model.PositionY = 63
dialog = self.smgr.createInstanceWithContext(
'com.sun.star.awt.UnoControlDialog',
self.ctx)
# Button Exit : BtnExit
button = dialog_model.createInstance(
'com.sun.star.awt.UnoControlButtonModel')
button.PositionX = 35
button.TabIndex = 8
button.Height = 12
button.Width = 33
button.PositionY = 45
button.PushButtonType = cancel
button.DefaultButton = True
button.Label = self.gui_rsc['BtnExit']
dialog_model.insertByName('BtnExit', button )
# Button Exit : BtnExit
button = dialog_model.createInstance(
'com.sun.star.awt.UnoControlButtonModel')
button.PositionX = 85
button.TabIndex = 8
button.Height = 12
button.Width = 43
button.PositionY = 45
button.PushButtonType = standard
button.DefaultButton = True
button.Label = "Enviar Correo"
dialog_model.insertByName('BtnEmail', button )
# text Object Name : OriginName
textfield = dialog_model.createInstance(
'com.sun.star.awt.UnoControlEditModel')
textfield.PositionX = 35
textfield.TabIndex = 15
textfield.BackgroundColor = 0xccffff
textfield.Width = 90
textfield.Height = 13
textfield.PositionY = 6
textfield.Align = left
textfield.ReadOnly = False
textfield.Tabstop = False
dialog_model.insertByName('OriginName', textfield )
# label Label2
label = dialog_model.createInstance(
'com.sun.star.awt.UnoControlFixedTextModel')
label.PositionX = 10
label.TabIndex = 16
label.Height = 10
label.Width = 20
label.PositionY = 6
label.Label = self.gui_rsc['Label2']
dialog_model.insertByName('Label2', label)
# label Label2
label = dialog_model.createInstance(
'com.sun.star.awt.UnoControlFixedTextModel')
label.PositionX = 10
label.TabIndex = 16
label.Height = 10
label.Width = 20
label.PositionY = 27
label.Label = self.gui_rsc['Label3']
dialog_model.insertByName('Label3', label)
# List Historical examinated objects : ListObj
a_list= dialog_model.createInstance(
'com.sun.star.awt.UnoControlListBoxModel')
a_list.PositionX = 35
a_list.TabIndex = 14
a_list.Width = 100
a_list.Height = 12
a_list.PositionY = 25
a_list.HelpText = self.gui_rsc['ListObj']
a_list.Dropdown = True
a_list.LineCount = 15
a_list.Tag =
- lista = array("Item 1", "Item 2", "Item 3")
a_list.StringItemList = ("users-subscribe@es.openoffice.org", "discuss_es-subscribe@es.openoffice.org", "dev-subscribe@es.openoffice.org") a_list.Border= 2
dialog_model.insertByName('ListObj', a_list )
# End of objects definition
if not dialog.getModel():
dialog.setModel(dialog_model)
#UNO toolkit definition
toolkit = self.smgr.createInstanceWithContext(
'com.sun.star.awt.Toolkit',
self.ctx)
a_rect = uno.createUnoStruct( 'com.sun.star.awt.Rectangle' )
a_rect.X = 150
dialog.setTitle ( "Soporte Comunitario ")
a_rect.Width = 170
a_rect.Height = 161
a_rect.Y = 263
win_descriptor = uno.createUnoStruct('com.sun.star.awt.WindowDescriptor')
win_descriptor.Type = TOP
win_descriptor.ParentIndex = -1
win_descriptor.Bounds = a_rect
peer = toolkit.createWindow( win_descriptor )
dialog.createPeer( toolkit, peer )
return dialog
Funcion: SendMail
Este es el codigo para enviar correo, el codigo puede mejorarse incluyendo el modulos de correo electronico asi como MimeType. Este codigo esta en bruto y falta ligarse con el resto del script.
[python]
import smtplib
def SendEmail():
# servidor mismo de collabnet
smtpServer='cylon1.sjc.collab.net';
# se reemplazara por el valor que entrege la caja de texto
fromAddr='jza@openoffice.org';
# se reemplazara por el valor que entrege el menu de lista
toAddr='jza@openoffice.org';
# se inserta el valor de fromAddr y To Addr a la cadena para que
# se reporte de acuerdo a la convencion, sin embargo se puede usar
# el modulo de email
text= 'From: ' + fromAddr + '\r\n'+ 'To: ' + toAddr + '\r\n\r\n' + Subject: new found love
Hi Friend,
Linux is a reality. Love it!!
server = smtplib.SMTP(smtpServer)
server.set_debuglevel(1) server.sendmail(fromAddr, toAddr, text) server.quit()
SendEmail()
Ligas Utiles
- OOoBasic crash course: Adding GUI goodness Contiene un gui con diversas opciones para manejar diferentes buscadores. Puede ser utiles para tener diversas listas de correo para la configuracion.
- UNO Component Packaging es un buen recurso para aprender como converitr un script en un componente y pueda representarse en los menus o barras de herramientas.
Categories: NLC | OOoES


