Did you know that the OpenOffice.org Wiki has a WYSIWYG editor? See Help:FCKeditor

Add-on de Soporte

From OpenOffice.org Wiki

< ES
Jump to: navigation, search


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

Image:AddonSupport.png

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
    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.
Personal tools
Create a book