EasyDev v2.7.2 [24-Abr-16]

Discute el uso de extensiones desarrolladas por terceros dentro de Apache OpenOffice

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor RMG » Vie Nov 27, 2015 8:06 pm

Bueno, ya hemos dado otro pasito más. Ahora en la última instrucción sigue poniendo la "u". Mira la imagen.
Adjuntos
Imagen 6.png
OpenOffice 4.1.6 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3558
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Vie Nov 27, 2015 8:40 pm

¿No te gustan las Us?... :lol: :lol:

Es normal, el msgbox de EasyDev es para depurar y siempre convierte lo que sea a string... prueba:
Código: Seleccionar todo   Expandir vistaContraer vista
   MsgBox(util.getInfoPC()(0))
   MsgBox(util.getInfoPC()(1))
   MsgBox(util.getInfoPC()(2))
   MsgBox(util.getInfoPC()(3))
   MsgBox(util.getInfoPC()(4))
   MsgBox(util.getInfoPC()(5))

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor RMG » Vie Nov 27, 2015 8:47 pm

Así, sí lo muestra bien.

Continuare...... me llaman a cenar.
OpenOffice 4.1.6 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3558
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Vie Nov 27, 2015 11:25 pm

Buenas noches Mauricio:


En una ocasión (https://forum.openoffice.org/es/forum/viewtopic.php?f=21&t=11537&p=50377#p50360) comentamos el sistema de codificación de colores.
En https://forum.openoffice.org/es/forum/viewtopic.php?f=21&t=11537&p=50367#p50361, facilitaste un código para definir el color como RGB. He hecho correr el código y entrando en la ventana "Observador". He visto que el color lo pasa a un código numérico único, con el formato AOO. Supongo que será el mismo. En cualquier caso he encontrado la relación entre este código y el formato RGB. Puede ser que haya descubierto la pólvora.

Esta relación es, que funciona como un sistema de numeración en base 256. Si en un formato RGB denominamos R al primer valor, G al segundo y B al tercero, El formato AOO se obtiene como AOO= R*253^2 + G*256 + B.
En sentido inverso, los valores de R, G y B se pueden obtener a partir de AOO de la siguiente forma:
    B=RESIDUO(AOO;256)

    G=RESIDUO((AOO-B)/256;256)

    R=INT(AOO/POTENCIA(256;2))
Por otra parte, en https://forum.openoffice.org/es/forum/viewtopic.php?f=36&t=11236&start=30#p50482 me quedé en asignar el eje Y primario/secundario a una serie.
Comentamos también los próximos desarrollos. Te planto las necesidades, que no son pocas. Trataré de dar una lista intentando asignar prioridades:
    Prioridad 1: en una serie asignar eje Y principal/Secundario
    Prioridad 2: Leyenda: Posición y formato
    Prioridad 3: Título: Texto y formato
    Prioridad 4: Ejes: Límites inferior y superior de la escala
    Prioridad 5: Ejes: Nombre: Texto y formato
    Prioridad 6: Ejes: Formato del número

He tratado de explicarlo lo mejor posible, aunque las listas no han quedado muy elegantes.
Muchas gracias por todo y un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Sab Nov 28, 2015 1:03 am

Hola...

Para que yo pueda darme tiempo a desarrollar, es "casi" necesario que no me dejen nada a la imaginación. En la medida de lo posible, casi casi tendrían que dar la receta completa, en un archivo de ejemplo, con código Basic cuando sea posible, de este modo avanzaremos mucho mejor.

También, es muy importante instalar y aprender a usar MRI: http://extensions.services.openoffice.o ... ction-tool
http://easydev.readthedocs.org/en/lates ... l#call-mri
y aprender a depurar: http://easydev.readthedocs.org/en/latest/debug.html
tendremos muchos mejores resultados...

Para los colores, en Python obtengo el entero correspondiente con:
Código: Seleccionar todo   Expandir vistaContraer vista
def rgb(r, g, b):
    return int('%02x%02x%02x' % (r, g, b), 16)

Para asignar la serie al eje primario o secundario usas:
Código: Seleccionar todo   Expandir vistaContraer vista
      properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 1) _
      )

AttachedAxisIndex == 1 sería el secundario

Te mande la lista de propiedades de las series en el otro tema que abriste de los gráficos. Junto con MRI puedes ir probando las propiedades que ya se pueden aplicar directamente.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Sab Nov 28, 2015 5:36 am

Fue mucho más fácil de lo que pense, todo esta, en acceder al elemento correcto y darle formato... y eso es todo...

Con la siguiente macro:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub GraficandoRangos()
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 1
   address.EndCol = 0
   address.EndRow = 8
   rango_X = util.getRange(address)

   address.Col = 1
   address.EndCol = 1
   rango_Y = util.getRange(address)

   address.Col = 1
   address.Row = 0
   title_1 = util.getCell(address)
   
      properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      )     
     
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   series(0).Properties = properties

      properties = Array(   _
         Array("Color", RGB(255,255,0)), _
      )
   series(1).X = "Hoja1.C2:C9"
   series(1).Y = "Hoja1.D2:D9"
   series(1).Title = "Hoja1.D1"
   series(1).Properties = properties

   pos_size.X = 0
   pos_size.Y = 5000
   pos_size.Width = 12000
   pos_size.Height = 7000
   
   data.Doc = doc
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series
   
      properties = Array(   _
         Array("Title", "Canal Chalco"), _
         Array("HasLegend", True), _
      )
   data.Properties = properties
    chart = util.chartAdd(data)
   
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 18), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      title = chart.getTitleObject()
      util.imageFormat(title, properties)
      
      legend = chart.Legend

   'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
      properties = Array(   _
         Array("Alignment", 3), _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      util.imageFormat(legend, properties)
      
      axis = chart.getDiagram().getXAxis()
      axis.Min = -1
      axis.Max = 10

      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -1), _
         Array("Max", 7), _
      )
   util.imageFormat(axis, properties)      
      
End Sub

Obtenemos:
foro.png

La mayor parte de las opciones ya las he documentado en mi libro, así que no lo haré de nuevo:
https://wiki.openoffice.org/wiki/ES/Man ... candoDatos

Y el formato de los objetos:
https://wiki.openoffice.org/wiki/ES/Man ... osGraficos

Esto esta implementado en EasyDev v2.4: https://github.com/UniversoLibreMexicoA ... elop/files

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Sab Nov 28, 2015 1:27 pm

Buenos días Mauricio:

He probado la asignación de un eje secundario a una serie y ha funcionado a medias. Mi intención esta probar todas las opciones antes de informarte, pero ha ocurrido una pequeña catástrofe y estoy atascado.

Intentando resolver algún problema que surgía con el eje secundario he pensado que podría ser porque mi versión de EasyDev 2.3 era previa a la última acutalización. He bajado la última, he intentado instalarla pero no hay manera. Además ahora no consigo cargar ninguna de las versiones.

He desinstalado -eso creía- la versión 2.3. Al instalar la nueva, me dice que ya está instalada, si la quiero actualizar. le digo que si pero no lo hace. Me dice: "Rejecting types due to incompatibility! [org.universolibre.EasyDev.XTools, menbers] Different number of types!"

He intentando desactivando, eliminando. Cuando lo elimino, desaparece, pero al intentar instalar pero lo detecta como actualizacion de una extensión ya instalada. Después se ve como desactivado.

He intentado instalar a partir de archivo, las versiones 2.2, 2.3 y 2.4. En todos los casos con el mismo resultado.

Total, que estoy bloqueado.

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Sab Nov 28, 2015 2:30 pm

Dado que estamos agregando nuevas funcionalidades, siempre es necesario para actualizar, primero eliminar la anterior, reiniciar LibreOffice, e instalar la nueva, con este proceso no tendrán problemas...

para arreglar cualquier problema de este tipo, si NO tienen nada especial en su perfil de usuarios, solo reinicienlo, si tienen alguna configuración especial, solo borren las carpetas de cualquier versión de EasyDev, eso es todo.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Sab Nov 28, 2015 2:56 pm

¿A que te refieres con Reiniciar?

He eliminado la extensión he cerrado, apagado el ordenador, vuelta a encender, entro en libre Office Extensiones, añadir, y da el mismo problema

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Sab Nov 28, 2015 3:38 pm

https://forum.openoffice.org/es/forum/v ... 1082#p3263

Otra forma de evitar problemas es forzar a sobreescribir la extensión:
Código: Seleccionar todo   Expandir vistaContraer vista
unopkg add -v -f -s path_oxt

No se si este paquete este en Windows, si esta, un sencillo BAT les resuelve el problema...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Sab Nov 28, 2015 9:50 pm

Buenas noches:
Generando un usuario nuevo me ha dejado cargar de nuevo la EasyDev.
Sustituyendo sucesivamente las diferentes carpetas, he podido saber que el problema esta en la carpeta user\uno_packages. De hecho he copiado en el nuevo usuario todas las carpetas antiguas excepto esta. De esta forma he podido recuperar todos "Mis Macros"

Los problemas del eje secundario permanecen. Prefiero probar todas las opciones que me has propuesto y te comento el resultado

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Dom Nov 29, 2015 12:11 am

Buenas noches Mauricio:

Tu propuesta ha funcionado satisfactoriamente casi en todo.
* Titulo y Leyenda han funcionado perfectamente
* La escala de los ejes ha funcionado muy bien. En mi caso, el eje X corresponde a fechas. Los valores mínimo y máximo del intervalo los he indicado en valor numérico y ha funcionado sin problemas

El caso del eje secundario ha presentado algunas "cosas raras":
* En el gráfico las dos series se se representan en el eje Y principal
* La escala gráfica corresponde a la serie que tiene asignada el eje principal.
* La serie que tiene asignado el eje secundario, es de un orden de magnitud superior y no se ve adecuadamente en la gráfica
* Sin embargo, entrando en el gráfico en las propiedades de la serie aparece asignado el eje secundario. Activo el eje principal y la escala automática cambia a la correspondiente a esta serie
* Vuelvo a entrar y a activar el eje secundario y cada serie se representa correctamente en un eje

Sobre la propuesta que te hice hemos cubierto prácticamente toda la lista. Únicamente queda nombre y valores de los ejes así como sus formatos.

Para trabajar con el eje Y secundario, supongo que habrá que identificar cada uno de los dos ejes Y en la instrucción axis = chart.getDiagram().getYAxis(), supongo que con axis = chart.getDiagram().getYAxis(0) y con axis = chart.getDiagram().getYAxis(1). ¿Es así?

Por último, sería útil controlar el valor del eje Y en el que corta al eje X.

Espero tus noticias

Muchas gracias por todo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Dom Nov 29, 2015 1:27 am

No consigo subir gráficos ni archivos

Te adjunto el código

Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit

Sub GraficandoRangos01()

' Con EasyDev 2.3
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object
   Dim chart as Object
   Dim Axis as Object
   Dim title as Object
   Dim legend as Object
   Dim Temp as String

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = 1
   address.EndCol = 1

' Rango de las abscisas
   rango_Y = util.getRange(address)

' Título
   address.Col = 1
   address.Row = 3
   title_1 = util.getCell(address)

' Propiedades de la serie
properties = Array(   _
         Array("Color", RGB(0,0,255)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 0) _
      )

' Asignación de rangos a la serie
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   'series(0).Color = 17798
   series(0).Properties = properties

properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 2) _
      )

' Serie definiendo los rangos por String
'      properties = Array(   _
'         Array("Color", RGB(145,249,251)), _
'        Array("LineWidth", 100), _
'      )
   series(1).X = "Hoja1.C5:C10011"
   series(1).Y = "Hoja1.D5:D10011"
   series(1).Title = "Hoja1.D4"
   'series(1).Color = 16728590
   series(1).Properties = properties

' Posición del gráfico
   pos_size.X = 0
   pos_size.Y = 0
   pos_size.Width = 26000
   pos_size.Height = 14000

' Características del gráfico
   data.Doc = doc

   address.Sheet = "Graficos"      ' Se redefine la hoja para poder hubicar el gráfico
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series

'----------------------------------------------------------------------------------------------
   Temp= "Título por variable"
       properties = Array(   _
         Array("Title", Temp), _
         Array("HasLegend", True), _
      )
   data.Properties = properties
'----------------------------------------------------------------------------------------------

   chart = util.chartAdd(data)


'----------------------------------------------------------------------------------------------
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 18), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      title = chart.getTitleObject()
      util.imageFormat(title, properties)
     
      legend = chart.Legend

   'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
      properties = Array(   _
         Array("Alignment", 4), _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(0,0,0)), _
      Array("LineWidth", 10) _
      )
      util.imageFormat(legend, properties)
     
'----------------------------------------------------------------------------------------------

      axis = chart.getDiagram().getXAxis()
      axis.Min = 37074
      axis.Max = 37075

      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -5), _
         Array("Max", 7), _
      )
   util.imageFormat(axis, properties)     


End Sub
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Mar Dic 01, 2015 5:56 am

Seguramente es por el tamaño, usa un servicio externo y enlazalo aquí...

En mis pruebas, los ejes secundarios siempre son igual a 1, no se por que usas: AttachedAxisIndex = 2

El formato de los ejes son parte de sus propiedades (NumberFormat), es importante te familiarices y uses MRI para estos casos...

El eje se corta usando la propiedad CrossoverValue, que también la encontré con MRI, insisto, hay que dominar esta importante herramienta...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Mar Dic 01, 2015 6:05 pm

Buenas tardes Mauricio y muchas gracias por tu trabajo.

Respecto a los archivos adjuntos, voy a editor completo, en la pestaña de archivos adjuntos, seleccionar archivo, selecciono el archivo y pulso agregar archivo. Se queda "pensando", termina de pensar, desaparece el nombre del archivo y no veo el documento por ningún sitio.
Por otra parte, en el editor hay una tecal "Img", pero tampoco he sido capaz de añadir una imagen, no he consegido saber como funciona. Si me puedes dar alguna indicación de como funciona alguna estas dos vías te lo agradecería.

Respecto a los valores de AttachedAxisIndex , he probado de todo, 0 en la primera serie y 1 en la segunda. También con los valores cambiados, 1 para loas dos series. En todos los casos las dos series aparecen referencias al eje principal. Si no recuerdo mal, la escala si que cambiaba.

Enseguida probaré las opciones de los ejes que me das y te comentaré el resultado.
Respecto a MRI, tengo dos preguntas: 1 ¿Tengo que instalarlo como extensión?, si es así ¿de donde lo puedo cargar?. 2 ¿donde puedo conseguir un manual?

Muchas gracias por todo y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Mar Dic 01, 2015 6:17 pm

http://easydev.readthedocs.org/es/lates ... amar-a-mri

Realmente solo necesitas tener un objeto seleccionad, el que sea, por ejemplo, la serie de un gráfico o el eje del mismo, e ir al menú Herramientas -> Add Ons... -> MRI.. Selection

y eso es todo... claro, encontrar lo que uno busca, ese, es otro cantar...

Reitero, debe ser el tamaño de tu archivo, subelo a un servicio externo y solo pon el enlace en este tema.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Mié Dic 02, 2015 12:10 am

Buenas noches Mauricio:

Por fin el eje secundario Y se ha hecho visible
Ha sido posible con añadiendo el siguiente código
Código: Seleccionar todo   Expandir vistaContraer vista
      axis = chart.getDiagram().getSecondaryYAxis()
      axis.Min = -50
      axis.Max = 50
      axis.Visible=true
       axis.axisTitle.String = "YSecundario"


He puesto puntos de parada en la ejecución del programa. En la ventana Observador he visto "axis".
La solución ha sido dar valores a los distintos componentes que aparecen en el listado. Problema resuelto.

He hecho lo mismo en el eje Y, he fijado los extremos de la escala y el título del eje. Lo he hecho por dos procedimientos:
El que acabo de comentar:
Código: Seleccionar todo   Expandir vistaContraer vista
      axis = chart.getDiagram().getYAxis()
      axis.Min = -5
      axis.Max = 7
     axis.axisTitle.String = "Eje Y"


Ha funcionado sin problemas

Por otra parte he probado con el método de la matriz de propiedades:
Código: Seleccionar todo   Expandir vistaContraer vista
      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -1), _
         Array("Max", 10), _
         Array("axisTitle.String", " Array Eje Y"), _
         )

En este caso funciona el establecimiento de valores extremos, pero no el título
A la vista de estos resultados tengo dos preguntas:
1: ¿Que relación hay entre estos dos procedimientos?
2: ¿Porque en el segundo caso no funciona el título?

El primer procedimiento me resulta útil, porque parando el programa me permite saber cuales son las variables a las que puedo asignar valores.
Muchas gracias y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Mié Dic 02, 2015 12:30 am

La mayor parte de los objetos de un gráfico, como lo explico por aquí: https://wiki.openoffice.org/wiki/ES/Man ... .C3.A1fico
son realmente formas (shapes), por lo que aplica la mayor parte del formato de las mismas.

El código con el que aplico las propiedades a las formas, es trivial:
Código: Seleccionar todo   Expandir vistaContraer vista
    def imageFormat(self, image, data):
        properties = comun.to_dict(data)
        title = None
        if image.supportsService('com.sun.star.chart2.Title'):
            title = image.getText()[0]
        for k, v in properties.items():
            if hasattr(image, k):
                setattr(image, k, v)
            if title and hasattr(title, k):
                setattr(title, k, v)
        return

Primero convierto la matriz de datos a un diccionario, verifico si es el título de un gráfico, ya que esta es una forma muy especial, al final pregunta si el objeto (image) tiene una propiedad (hasattr), y si la tiene se le aplica (setattr), una belleza.

Entonces, si tu haces:
Código: Seleccionar todo   Expandir vistaContraer vista
axis = chart.getDiagram().getYAxis()

Obtienes un objeto, pero si haces:
Código: Seleccionar todo   Expandir vistaContraer vista
"axisTitle.String"

la propiedad axisTitle.String NO existe en el objeto.

Este es un caso especial para los ejes, ahora si me das toda la información necesaria (gracias y felicidades!) para solo agregar este caso especial al código.

1.- La primer forma es aplicando propiedades directamente a los objetos, como se hace de forma tradicional desde Basic, si hicieses todo con Basic, esta sería la única forma que tienes de manipular los objetos. La segunda forma, es como lo hace EasyDev, que al recibir un Array, te permite aplicar propiedades por nombre desde una cadena, algo muy común en Python pero no disponible en Basic.

2.- Ya lo explique más arriba, el título es un sub-objeto del eje.

Para saber que propiedades puedes aplicar, nada como MRI.

Saludos y gracias por tu retroalimentación.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Mié Dic 02, 2015 7:12 am

Listo, ahora puedes usar:
Código: Seleccionar todo   Expandir vistaContraer vista
    axis = chart.getDiagram().getSecondaryYAxis()
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _      
         Array("Min", -1), _
         Array("Max", 7), _
         Array("Visible", True), _
         Array("String", "Y Secundario"), _
      )           
   util.imageFormat(axis, properties) 
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor RASAPA » Mié Dic 02, 2015 4:20 pm

Buenos dias,
El Zip y el Unzip funcionan a la perfeccion.
Muchas gracias.

Se podria implementar que con un click del raton en la columna correspondiente de un grid hecho en un dialogo, se ordenara la lista del grid por el valor de dicha columna?
Es una idea, que hasta la fecha no he encontrado como hacerlo.

Saludos
LibreOffice 5.2.6.2
Linux Mint 17.3
RASAPA
 
Mensajes: 222
Registrado: Mar Mar 16, 2010 10:41 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Mié Dic 02, 2015 5:43 pm

Los método para ordenar un Grid existen:
http://www.openoffice.org/api/docs/comm ... Model.html
http://www.openoffice.org/api/docs/comm ... dData.html

Ahora solo hay que probarlos...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor fornelasa » Vie Dic 04, 2015 8:47 pm

Hola a todos.
Antes que nada me gustaría decir que al dia de hoy no me he metido mucho a esta nueva extensión así que por favor disculpen ..... por el momento tengo dos preguntas:
1) ¿Esta nueva version EasyDev v2.3.0 [27-Nov-15] funcionará para AOO 4.1.2?
2) ¿En LibreOffice al instalar EasyDev v2.3.0 [27-Nov-15] borra/suprime el codigo digamos original de arranque del MRI?

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3246
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor mauricio » Vie Dic 04, 2015 8:52 pm

1) Solo he probado algunas funcionalidades en AOO, pero se instala de forma correcta... habría que probar casi todas las herramientas: http://easydev.readthedocs.org/en/latest/
2) No, EasyDev puede "llamar" a MRI, pero no lo toca para nada, obvio, debe estar previamente instalado MRI para poder llamarlo, pero NO lo reemplaza, si esa es la duda.

Saludos

P.D. No hay razón para pedir disculpas, el involucramiento con cualquier software libre es totalmente voluntario.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor fornelasa » Vie Dic 04, 2015 9:00 pm

ok ok ok ¡perfecto! muchas gracias.
Saludos, Federico. :super:
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3246
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Dom Dic 06, 2015 2:18 am

Hola Mauricio:
En relación con la elaboración de gráficos, siguiendo tus instrucciones, he podido confeccionar un código que funciona correctamente y que te adjunto:

Código: Seleccionar todo   Expandir vistaContraer vista
Sub GraficandoRangosED()

' Con EasyDev 2.3
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object
   Dim chart as Object
   Dim Axis as Object
   Dim title as Object
   Dim legend as Object
   Dim Temp as String

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = 1
   address.EndCol = 1

' Rango de las abscisas
   rango_Y = util.getRange(address)

' Título
   address.Col = 1
   address.Row = 3
   title_1 = util.getCell(address)

' Propiedades de la serie
properties = Array(   _
         Array("Color", RGB(0,0,255)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 0) _
      )

' Asignación de rangos a la serie
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   'series(0).Color = 17798
   series(0).Properties = properties

properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 1) _
      )

' Serie definiendo los rangos por String
'      properties = Array(   _
'         Array("Color", RGB(145,249,251)), _
'        Array("LineWidth", 100), _
'      )
   series(1).X = "Hoja1.C5:C10011"
   series(1).Y = "Hoja1.D5:D10011"
   series(1).Title = "Hoja1.D4"
   'series(1).Color = 16728590
   series(1).Properties = properties

' Posición del gráfico
   pos_size.X = 0
   pos_size.Y = 0
   pos_size.Width = 26000
   pos_size.Height = 14000

' Características del gráfico
   data.Doc = doc

   address.Sheet = "Graficos"      ' Se redefine la hoja para poder hubicar el gráfico
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series

'----------------------------------------------------------------------------------------------
   Temp= "Caso 5: Propiedades de eje Y como Array"
       properties = Array(   _
         Array("Title", Temp), _
         Array("HasLegend", True), _
         )
'         Array("HasSecondaryYAxis", True), _
'         Array("HasXAxisTitle", True), _
'         Array("HasYAxisTitle", True), _
'         Array("HasSecondaryYAxisTitle", True), _
'      )
'         Array("HasSecondaryYAxis", True), _
'      )
   data.Properties = properties
'----------------------------------------------------------------------------------------------

   chart = util.chartAdd(data)


'----------------------------------------------------------------------------------------------

' Título
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 18), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      title = chart.getTitleObject()
      util.imageFormat(title, properties)

' Leyenda
      legend = chart.Legend

   'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
      properties = Array(   _
         Array("Alignment", 4), _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(0,0,0)), _
      Array("LineWidth", 10) _
      )
      util.imageFormat(legend, properties)
     
'----------------------------------------------------------------------------------------------

      axis = chart.getDiagram().getXAxis()
      axis.Min = 37074
      axis.Max = 37075

'      axis = chart.getDiagram().getYAxis()
'      axis.Min = -5
'      axis.Max = 7
'     axis.axisTitle.String = "Eje Y"

'      axis = chart.getDiagram().getYAxis()
'      properties = Array(   _
'         Array("Min", -1), _
'         Array("Max", 10), _
'         Array("axisTitle.String", " Array Eje Y"), _
'         )
'         Array("AxisTitle.String", "Eje Y"), _
'      )
   util.imageFormat(axis, properties)
 
      axis = chart.getDiagram().getSecondaryYAxis()
      axis.Min = -50
      axis.Max = 50
      axis.Visible=true
      axis.axisTitle.String = "YSecundario"



      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -3), _
         Array("Max", 10), _
         Array("String", "Eje Y Array"), _
      )
util.imageFormat(axis, properties)       
'      axis = chart.getDiagram().getSecondaryYAxis()
'      properties = Array(   _
'         Array("Min", -5), _
'         Array("Max", 7), _
'      )
'   util.imageFormat(axis, properties)     

End Sub


Con objeto de sinplificarlo y poder generalizarlo he intantado generar una función para confeccionar los datos de las series
Prevamento he comprobado que la rutina funciona pasando la variable Series(1) a Pública
Como primera aproximación ha generado el siguiente código:

Código: Seleccionar todo   Expandir vistaContraer vista
Function fGrfPr001(Hoja As Integer, ColX As Integer, ColY As Integer, FilA As Long, FilZ As Long, FilT As Long, EjeY As Integer, Form As Integer) As New org.universolibre.EasyDev.ChartSerie

'Sub GraficandoRangosED()

' Con EasyDev 2.3
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = Hoja
   address.Col = ColX
   address.Row = FilA
   address.EndCol = ColX
   address.EndRow = FilZ

'------------------------------------------------------------
'   R A N G O S
'------------------------------------------------------------

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = ColY
   address.EndCol = ColY

' Rango de las abscisas
'   rango_Y = address
   rango_Y = util.getRange(address)





' Asignación de rangos a la serie
   SerieTr.X = rango_X
   SerieTr.Y = rango_Y


fGrfPr001=SerieTr

'End Sub
End Function


Funciona aparentemente bien, pero hay un problema
- La carga de dirección en address es correcta
- A aplicar la instrucción rango_X = util.getRange(address) el valor de Rango_X.RangeAddress.Sheet, toma el valor de 2 en lugar de 0 como correspondería
No entiendo porqué ocurre esto, porque en el código anterior está igual, o al menos a mi me lo parece, alli funciona aquí no.

Muchas gracias y un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Notapor valenteres » Dom Dic 06, 2015 2:20 am

Pido disculpas, al último código le falta la cabecera

Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****
Option Explicit

Public Series(1) As New org.universolibre.EasyDev.ChartSerie


Sub Main

Series(0) = fGrfPr001(0, 0, 1, 4, 10010, 3, 0, 2)

End Sub

Function fGrfPr001(Hoja As Integer, ColX As Integer, ColY As Integer, FilA As Long, FilZ As Long, FilT As Long, EjeY As Integer, Form As Integer) As New org.universolibre.EasyDev.ChartSerie

'Sub GraficandoRangosED()

' Con EasyDev 2.3
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = Hoja
   address.Col = ColX
   address.Row = FilA
   address.EndCol = ColX
   address.EndRow = FilZ

'------------------------------------------------------------
'   R A N G O S
'------------------------------------------------------------

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = ColY
   address.EndCol = ColY

' Rango de las abscisas
'   rango_Y = address
   rango_Y = util.getRange(address)





' Asignación de rangos a la serie
   SerieTr.X = rango_X
   SerieTr.Y = rango_Y


fGrfPr001=SerieTr

'End Sub
End Function
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.4.0 [07-Dic-15]

Notapor mauricio » Lun Dic 07, 2015 7:42 am

No veo ningún problema, pero si te sucede obvio que lo hay... solo que si no anexas un archivo con datos me obligas a preparar un entorno de pruebas... siempre es más rápido que agregues el archivo para solo ejecutarlo y tratar de encontrar el problema...

He pasado a producción los cambio realizados...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.4.0 [07-Dic-15]

Notapor valenteres » Lun Dic 07, 2015 9:17 am

Gracias Mauricio.
El problema es que, por más que lo intento, no consigo subir archivos al foro. Acabo de hacer una prueba con un archivo muy pequeño y he conseguido subirlo. Probaré a reducirlo a la mínima expresión y te lo haré llegar. Lo intentaré esta tarde hora española

Gracias y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.4.0 [07-Dic-15]

Notapor mauricio » Lun Dic 07, 2015 5:54 pm

Agradezco infinitamente a mi amigo y nuestro compañero en este foro (Salva) la publicación de una nota, hablando de EasyDev en su insuperable blog de OpenOffice: http://blog.open-office.es/extensiones/ ... a-en-basic

Muchas gracias
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5972
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: EasyDev v2.4.0 [07-Dic-15]

Notapor valenteres » Lun Dic 07, 2015 7:46 pm

Hola de nuevo Mauricio.

Respecto a los gráficos he visto donde está el problema. No se como resolverlo, pero lo he identificado.

En el primer caso que planteé siguiendo tus instrucciones, el que funciona, la hoja se identifica por su nombre, como String
Código: Seleccionar todo   Expandir vistaContraer vista
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)


En este caso el código funciona sin ningún problema. Pongo un punto de ruptura en la linea de código siguiente, voy a la ventana de Observador, y en Rango_X.RangeAddress.Sheet tiene el valor 0. He comprobado que si cambio "Hoja1" por cualquier otro nombre de hoja válido, funciona bien, y en Rango_X.RangeAddress.Sheet figura el valor correspondiente a esa hoja.

Si el valor de address.Sheet es entero se presentan dos casos:
- address.Sheet = 0 --> Rango_X.RangeAddress.Sheet toma el valor (indice) correspondiente a la hoja que está activa en Calc
- address.Sheet tiene cualquier otro valor entero --> da error

Espero que tenga una solución. De nuevo muchas gracias por tu trabajo

P.D. He intentado subir algunos archivos, pero siguen siendo demasiado grandes. ¿Cual es el tamaño máximo que admite?
Respecto a las imágenes, sigo sin saber como incluirlas en el mensaje, ¿Que es lo que hay que poner entre los corchetes? La ruta para encontrarla?. Supongo que ademas tendrá el mismo problema de tamaño
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
 
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

AnteriorSiguiente

Volver a Extensiones

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados